From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thien-Thi Nguyen Newsgroups: gmane.lisp.guile.user,gmane.lisp.guile.sources Subject: Guile-SDL 0.4.0 available Date: Thu, 15 Dec 2011 12:14:27 +0100 Message-ID: <87obvaulws.fsf@ambire.localdomain> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1323947901 2529 80.91.229.12 (15 Dec 2011 11:18:21 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 15 Dec 2011 11:18:21 +0000 (UTC) Cc: guile-user@gnu.org To: guile-sources@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Thu Dec 15 12:18:16 2011 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Rb9KK-0006qN-BT for guile-user@m.gmane.org; Thu, 15 Dec 2011 12:18:16 +0100 Original-Received: from localhost ([::1]:44179 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rb9KJ-0003SW-Gb for guile-user@m.gmane.org; Thu, 15 Dec 2011 06:18:15 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:34498) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rb9KA-0003SE-EB for guile-user@gnu.org; Thu, 15 Dec 2011 06:18:12 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rb9K4-0008RF-7E for guile-user@gnu.org; Thu, 15 Dec 2011 06:18:06 -0500 Original-Received: from smtp207.alice.it ([82.57.200.103]:33255) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rb9Jv-0008PX-Go; Thu, 15 Dec 2011 06:17:51 -0500 Original-Received: from ambire.localdomain (87.9.131.245) by smtp207.alice.it (8.6.023.02) id 4ED236CF02BBA4F2; Thu, 15 Dec 2011 12:17:32 +0100 Original-Received: from ttn by ambire.localdomain with local (Exim 4.69) (envelope-from ) id 1Rb9Gd-0003eK-Rq; Thu, 15 Dec 2011 12:14:27 +0100 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.57.200.103 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:9042 gmane.lisp.guile.sources:353 Archived-At: release notes: The price of portability is some increased ugliness; hackers please see =E2=80=98%%Guile-SDL-obtw=E2=80=99 and suggest alterna= tives. Special thanks go to Brian Templeton for the patch that inspired my change of heart wrt Guile 1.8. (That code is not in Guile-SDL, but the ideas it expresses are.) It has been a long while, but here we are at last. Please look carefully at the NEWS entries marked [I]. Most likely further 0.4.x releases will have more; perhaps they can be avoided for 0.5.x and later. thi README excerpt: This directory contains Guile-SDL, a set of modules that provide bindings for SDL (Simple DirectMedia Layer) to enable Guile programmers to do all the nice things you can do with SDL. Most of the SDL functions have been wrapped with the exception of a few functions that were too C-centric. The SDL Threads and the Audio functions haven't been included because of the problems with Guile code being run from more than one thread. However audio programming can be done with the module =E2=80=98(sdl mixer)=E2=80=99 that requires t= he SDL_mixer library. Also included is SDL_gfx 2.0.22 (by Andreas Schiffler) and bindings for it. NEWS excerpt: - 0.4.0 | 2011-12-15 - improved portability Guile-SDL is now also tested with Guile-1.8.7 on a 64-bit host. It should build and run without any deprecation warnings; if use under =E2=80=98GUILE_WARN_DEPRECATED=3Ddetailed=E2=80=99 reveals so= mething, please report that as a bug. Notably, for Guile versions that do not support "direct shared- object loading" (i.e., Guile 1.8+), configuration arranges for a module's sofile to be installed in $(libdir)/guile-sdl -- aka $(pkglibdir) -- and its Scheme wrapper (that dynamically loads the sofile and handles =E2=80=98define-module=E2=80=99 duties) to b= e installed in the "normal" site directory. See new file HACKING for details. - validation - use Free{SansBold,SerifBoldItalic}.ttf for testing The testing (distributed but not installed) font files are now FreeSansBold.ttf and FreeSerifBoldItalic.ttf (see AUTHORS). The file crystal.ttf is no longer included due to doubts about its lineage and licensing. - support for =E2=80=98VERBOSE=3D1=E2=80=99 By default, "make check" is relatively silent. You can use "make check VERBOSE=3D1" to see more information. - support for =E2=80=98NOMMX=3D1=E2=80=99 You can disable MMX usage dynamically with "make check NOMMX=3D1". This might be necessary if test/gfx.scm segfaults. :-/ - infrastructure upgrade Doing "make check" now prepares a "simulated installation" (under test/.simu) for better approximation to a real-world, post-install environment. It is an approximation only because documentation is not included. Tests are now run by a driver program which DTRT, we hope. Also, they have full access to Guile-BAUX modules. - support for "make installcheck" (You need to "make install" first!) Since =E2=80=98installcheck=E2= =80=99 piggybacks on =E2=80=98check=E2=80=99, it honors =E2=80=98INTERACTI= VE=3D1=E2=80=99, etc. - tests delay less This makes running "make check" less weary for the impatient. - tests explicitly =E2=80=98exit=E2=80=99 Moreover, the exit value is taken from the =E2=80=98(sdl sdl) quit= =E2=80=99 return value. This helps detect problems earlier. - different =E2=80=98#:prefix=E2=80=99 for each module Previously, some tests would use the same import-prefix for different modules. Now they are distinct, for clarity. - cursor test ignores =E2=80=98INTERACTIVE=3D1=E2=80=99 There was really no good reason for it to honor =E2=80=98INTERACTIV= E=3D1=E2=80=99 in the first place. - better coverage, though still incomplete The test suite now includes =E2=80=98t99-cov=E2=80=99, marked as = =E2=80=98xfail=E2=80=99. There are still 189 "slighted" procedures. - planned retirement: integer arg for =E2=80=98grab-input=E2=80=99 Support for integer =E2=80=98mode=E2=80=99 to proc =E2=80=98(sdl sd= l) grab-input=E2=80=99 WILL BE REMOVED after 2012-05-31, such that an integer =E2=80=98mode=E2=80= =99 will result in a =E2=80=98wrong-type-arg=E2=80=99 error. Migration is straightforward; use a symbol instead of an integer. was: -1 now: query 0 off 1 on - planned retirement: ordinary vector argument(s) Some procedures now take uniform vector arguments (see below). For backward compatability with Guile-SDL 0.3.10 and earlier, you can also use an ordinary vector. This is expensive and less safe, however, so this support WILL BE REMOVED after 2012-12-31. Luckily, migration is simple: Import module =E2=80=98(srfi srfi-4)= =E2=80=99 and replace =E2=80=98list->vector=E2=80=99 with =E2=80=98list->u16vecto= r=E2=80=99, and so on. - bugfixes Backward-incompatible changes are marked with "[I]". - distribute =E2=80=98SDL_gfx=E2=80=99 LICENSE I.e., the GNU LGPL 2.1. - no MMX support if not in "32-bit mode" The MMX support (in SDL_gfx) was previously enabled for any processor that reported support for it. However, the code itself makes use of instructions (e.g., PUSHA, POPA) that are not available in 64-bit mode, so we now don't even bother checking for MMX support for 64-bit processors. - [I] flags are symbols Previously the following procs returned a (possibly empty) list of strings. Now, they return a (possibly empty) list of symbols. - (sdl sdl) flagstash-flags - (sdl sdl) number->flags - (sdl sdl) was-init - (sdl sdl) get-mod-state - (sdl sdl) event:key:keysym:mod - (sdl ttf) font:style - exact bitwise match required in =E2=80=98ulong2flags=E2=80=99 This func, a subroutine of the procs listed above in entry "flags are symbols" (except for =E2=80=98flagstash-flags=E2=80=99),= used to include a flag in the returned list if any of its constituent bits were set in the original number. Now, it requires all set bits to match as a condition for inclusion. - correct proc name for wrong-type-arg error message The following procs used to mis-identify themselves (as another) in the =E2=80=98wrong-type-arg=E2=80=99 error message: - (sdl mixer) paused? - (sdl sdl) load-image - (sdl sdl) set-gamma-ramp - allocate enough memory for temp =E2=80=98SDL_Color=E2=80=99 array Procs =E2=80=98set-colors!=E2=80=99 and =E2=80=98set-palette=E2=80= =99 used to corrupt memory by underallocating a temporary =E2=80=98SDL_Color=E2=80=99 array, then= overfilling it. Now, they allocate the right amount. - avoid =E2=80=98SDL_Surface=E2=80=99 double-free Previously, both =E2=80=98get-video-surface=E2=80=99 and =E2=80=98s= et-video-mode=E2=80=99 would return a smob whose free func would call =E2=80=98SDL_FreeSurface= =E2=80=99 on the unpacked =E2=80=98SDL_Surface=E2=80=99 object. This is incorre= ct because those objects are internal (and moreover currently in use), rather than freshly constructed for hand-off to the user; the smob free func should not call =E2=80=98SDL_FreeSurface=E2=80=99 on= them. That is the job for the internal cleanup invoked by =E2=80=98(sdl sdl) q= uit=E2=80=99. Now, the =E2=80=98SDL-Surface=E2=80=99 smob distinguishes between u= ser and internal, and its free func calls =E2=80=98SDL_FreeSurface=E2=80=99= only for user objects. - =E2=80=98(sdl sdl) get-caption=E2=80=99 handles =E2=80=98NULL=E2=80= =99 title, icon This used to segfault on =E2=80=98NULL=E2=80=99 title or icon. - other changes Backward-incompatible changes are marked with "[I]". For procs that now take uniform vectors, see also the "planned retirement" NEWS entry above. - [I] arg type-check tightened from =E2=80=98exact?=E2=80=99 to =E2= =80=98integer?=E2=80=99 Procs that used to accept exact numbers now accept integers only. This basically means rational numbers are now invalid. Observant tarball-perusers will note that the modules and tests no longer use =E2=80=98quotient=E2=80=99. - =E2=80=98(sdl gfx) imfi-mmx?=E2=80=99 now able to set MMX usage This now takes an optional arg =E2=80=98setting=E2=80=99 for en-/di= s-abling MMX usage at runtime. - embedded =E2=80=98SDL_gfx=E2=80=99 upgraded to 2.0.22 Unfortunately, some MMX-backed procs now routinely segfault. (More unfortunately, the segfault has not been investigated, and was in fact the motivation for extending =E2=80=98imfi-mmx?=E2=80= =99, as a "make check" workaround. Masking bugs via feature creep: suboptimal.) - new proc: =E2=80=98(sdl gfx) draw-rounded-rectangle=E2=80=99 This draws a rectangle with rounded corners of specified radius. - new proc: =E2=80=98(sdl gfx) draw-thick-line=E2=80=99 This draws a line of specified thickness (in pixels). - new proc: =E2=80=98(sdl gfx) font-rotation!=E2=80=99 This causes subsequent =E2=80=98draw-character=E2=80=99 and =E2=80= =98draw-string=E2=80=99 calls to render rotated images. The symbolic specified rotation is one of =E2=80=98none=E2=80=99, =E2=80=98clockwise=E2=80=99, =E2=80= =98counter-clockwise=E2=80=99, =E2=80=98upside-down=E2=80=99. - new enumstash: =E2=80=98(sdl gfx) font-rotations=E2=80=99 This is for =E2=80=98font-rotation!=E2=80=99 support. - new proc: =E2=80=98(sdl misc-utils) exact-truncate=E2=80=99 This is nothing but =E2=80=98(inexact->exact (truncate n))=E2=80=99= plus documentation, support and the special glow from association with other Guile-SDL procs. :-D - =E2=80=98#:prefix=E2=80=99 used for import renaming All =E2=80=98#:renamer=E2=80=99 uses were coincident with =E2=80=98= symbol-prefix-proc=E2=80=99, so these have been replaced with =E2=80=98#:prefix=E2=80=99. [Inse= rt blurb about =E2=80=98symbol-prefix-proc=E2=80=99 regret, here.] - some =E2=80=98(sdl gfx)=E2=80=99 procs take s16 uniform vectors Coordinate arguments for these procs can now be s16 uniform vectors. You can even mix normal w/ s16 (but that's crazy). - draw-polygon - draw-aa-polygon - draw-textured-polygon - draw-bezier - =E2=80=98(sdl sdl) create-cursor=E2=80=99 takes u8 uniform vectors The =E2=80=98data=E2=80=99 and =E2=80=98mask=E2=80=99 arguments can= now be u8 uniform vectors. - =E2=80=98(sdl sdl) set-gamma-ramp=E2=80=99 takes u16 uniform vectors The red, green and blue table arguments can now be u16 uniform vectors. - [I] =E2=80=98(sdl sdl) get-gamma-ramp=E2=80=99 now returns list of = uvec Previously, this proc returned an alist. Now, it returns a list of three elements, each of which is a u16 uniform vector. - [I] =E2=80=98(sdl sdl) show-cursor=E2=80=99 redesigned The optional arg is no longer a "toggle enabler" (which didn't seem to be implemented correctly, anyway) but instead a direct "setting". In other words: was: show: (or (show-cursor) (show-cursor #t)) ; buggy? hide: (and (show-cursor) (show-cursor #t)) ; buggy? flip: (show-cursor #t) ; buggy? now: show: (show-cursor #t) hide: (show-cursor #f) flip: (show-cursor (not (show-cursor))) - documentation improvements - manual license now GNU FDL 1.3 - table of contents now after title page - getter/setter procs documented - SDL type no longer mentioned in access procs - todo list dropped - tools for bootstrap upgraded - no longer need gperf(1) to bootstrap - GNU Automake 1.11.1 - GNU Autoconf 2.68 - GNU Libtool 2.4.2 - GNU texinfo 4.13 - Guile-BAUX 20111207.1126.1d610b3 - snuggle.m4 serial 5 tarball and its detached signature in dir: http://download.savannah.gnu.org/releases/guile-sdl/ homepage: http://www.nongnu.org/guile-sdl/