* SLAYER announcement and help request for preparing a GNU package @ 2013-05-04 21:54 Panicz Maciej Godek 2013-05-05 5:15 ` John Darrington 2013-05-06 8:06 ` Javier Sancho 0 siblings, 2 replies; 24+ messages in thread From: Panicz Maciej Godek @ 2013-05-04 21:54 UTC (permalink / raw) To: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 3147 bytes --] Hi everyone, I've developed a piece of software that I named SLAYER, by combining the letter 's' with the word "layer", or replacing the 'p' letter with 's' in the word 'player'. Either way, slayer can be thought of as a simpler alternative for wrapper libraries such as guile-sdl and guile-opengl, or as a programming environment that is in a way competetive to Adobe Flash (with standalone player). But obviously, it is something completely different. I made this program as a base for research in GUI design, but it also contains a stub of a 3d game engine that I'm planning to implement -- which explains native support for OpenGL. I recently thought that it also could be a great platform for teaching kids to program games, because -- once compiled and linked -- it could be distributed as a standalone package, that requires no additional tools. The program is available through mercurial on bitbucket: hg clone https://bitbucket.org/panicz/slayer The repository contains README file, which lists packages that are needed to build. Except a little mess, there are two demos that show the possibilities of the system. The first one with the command: $ ./slayer -e3d The -e3d option is needed to enable the "3d" extension, which is required by the demo. It allows to move around in a 3d space using mouse and WSAD keys. There's also a draggable icon and a simple text-console, which accepts s-expressions (evaluated using f1 key). It is activated with a click, but for some reason the cursor isn't always displayed. The source file is slayer.scm. The second demo is the classical arcade PONG game (for two players). It's written in the raw guile+slayer, so it's pretty lengthy (~160 lines), but it should be easily understandable. PONG can be run using $ ./slayer -i pong.scm Both demos use sound, which can be disabled by passing the --nosound option in the command line. PONG can also receive the -e3d option, which would force it to use opengl for display. Other command line options are undocumented, but they can be easily found in slayer.c. I admit that the lack of any documentation can now be the most seriously discouraging factor, but I promise to respond to every question eagerly. The second most seriously discouraging factor would be the build process, which could require manual editing of the Makefile, among others. It would be lovely to use the GNU autotools, but they seem so complicated, and I thought that since you might have more experience with those, you could help me to prepare a decent release, and perhaps to reorganize the structure of the source code. Perhaps the third most seriously discouraging factor (except some random crashes that still happen) would be the lack of certain features: I'm trying to apply the 'lazy implementation' strategy and add SDL/OpenGL features only as I need them, and also my priority is to keep interfaces simple, even at the cost of programmer's freedom (so for instance, there's no option for choosing color index mode in OpenGL, or some other SDL video mode than the default). Despite those factors, I'd be happy to hear some feedback from you. Best regards, M. [-- Attachment #2: Type: text/html, Size: 4217 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-04 21:54 SLAYER announcement and help request for preparing a GNU package Panicz Maciej Godek @ 2013-05-05 5:15 ` John Darrington 2013-05-05 6:55 ` Stjepan Horvat 2013-05-05 6:59 ` Panicz Maciej Godek 2013-05-06 8:06 ` Javier Sancho 1 sibling, 2 replies; 24+ messages in thread From: John Darrington @ 2013-05-05 5:15 UTC (permalink / raw) To: Panicz Maciej Godek; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 4782 bytes --] It sounds like an interesting project. The subject line of your post says it is a "GNU Package", but I don't see slayer in the official list. Perhaps you mean it is one that you want to submit to GNU in the hope that they will adopt it as a package? Or did you mean something else? Obviously how to it should be laid out will depend on that a lot. Like you say, lack of documentation is will be a big factor in getting users. How will people know how to use it, and perhaps more importantly WHY the should use it? Autotools can indeed be tricky - and a time consuming part of maintaining a package - but they do make it a hell of a lot easier for the general public to build, especially on wierd systems. Lack of features is a concern - but if you have a dedicated user base, even a small one, you will get requests for them. However, if you don't have decent documentation, and a reliable and portable build system, then you won't have any users .... J' On Sat, May 04, 2013 at 11:54:44PM +0200, Panicz Maciej Godek wrote: Hi everyone, I've developed a piece of software that I named SLAYER, by combining the letter 's' with the word "layer", or replacing the 'p' letter with 's' in the word 'player'. Either way, slayer can be thought of as a simpler alternative for wrapper libraries such as guile-sdl and guile-opengl, or as a programming environment that is in a way competetive to Adobe Flash (with standalone player). But obviously, it is something completely different. I made this program as a base for research in GUI design, but it also contains a stub of a 3d game engine that I'm planning to implement -- which explains native support for OpenGL. I recently thought that it also could be a great platform for teaching kids to program games, because -- once compiled and linked -- it could be distributed as a standalone package, that requires no additional tools. The program is available through mercurial on bitbucket: hg clone https://bitbucket.org/panicz/slayer The repository contains README file, which lists packages that are needed to build. Except a little mess, there are two demos that show the possibilities of the system. The first one with the command: $ ./slayer -e3d The -e3d option is needed to enable the "3d" extension, which is required by the demo. It allows to move around in a 3d space using mouse and WSAD keys. There's also a draggable icon and a simple text-console, which accepts s-expressions (evaluated using f1 key). It is activated with a click, but for some reason the cursor isn't always displayed. The source file is slayer.scm. The second demo is the classical arcade PONG game (for two players). It's written in the raw guile+slayer, so it's pretty lengthy (~160 lines), but it should be easily understandable. PONG can be run using $ ./slayer -i pong.scm Both demos use sound, which can be disabled by passing the --nosound option in the command line. PONG can also receive the -e3d option, which would force it to use opengl for display. Other command line options are undocumented, but they can be easily found in slayer.c. I admit that the lack of any documentation can now be the most seriously discouraging factor, but I promise to respond to every question eagerly. The second most seriously discouraging factor would be the build process, which could require manual editing of the Makefile, among others. It would be lovely to use the GNU autotools, but they seem so complicated, and I thought that since you might have more experience with those, you could help me to prepare a decent release, and perhaps to reorganize the structure of the source code. Perhaps the third most seriously discouraging factor (except some random crashes that still happen) would be the lack of certain features: I'm trying to apply the 'lazy implementation' strategy and add SDL/OpenGL features only as I need them, and also my priority is to keep interfaces simple, even at the cost of programmer's freedom (so for instance, there's no option for choosing color index mode in OpenGL, or some other SDL video mode than the default). Despite those factors, I'd be happy to hear some feedback from you. Best regards, M. -- PGP Public key ID: 1024D/2DE827B3 fingerprint = 8797 A26D 0854 2EAB 0285 A290 8A67 719C 2DE8 27B3 See http://keys.gnupg.net or any PGP keyserver for public key. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-05 5:15 ` John Darrington @ 2013-05-05 6:55 ` Stjepan Horvat 2013-05-05 6:59 ` Panicz Maciej Godek 1 sibling, 0 replies; 24+ messages in thread From: Stjepan Horvat @ 2013-05-05 6:55 UTC (permalink / raw) To: John Darrington; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 5655 bytes --] It sounds fun although i'm guile newb..i'm just starting to learn how recursion works and have written few simple functions reading The_Little_Schemer..It would be cool to have a binary gui for programs writen in c and has guile as extension language.. On Sun, May 5, 2013 at 7:15 AM, John Darrington < john@darrington.wattle.id.au> wrote: > It sounds like an interesting project. > > The subject line of your post says it is a "GNU Package", but I don't see > slayer in > the official list. Perhaps you mean it is one that you want to submit to > GNU in the hope that they will adopt it as a package? Or did you mean > something > else? Obviously how to it should be laid out will depend on that a lot. > > Like you say, lack of documentation is will be a big factor in getting > users. > How will people know how to use it, and perhaps more importantly WHY the > should > use it? > > Autotools can indeed be tricky - and a time consuming part of maintaining a > package - but they do make it a hell of a lot easier for the general public > to build, especially on wierd systems. > > Lack of features is a concern - but if you have a dedicated user base, > even a small > one, you will get requests for them. However, if you don't have decent > documentation, > and a reliable and portable build system, then you won't have any users > .... > > > J' > > > On Sat, May 04, 2013 at 11:54:44PM +0200, Panicz Maciej Godek wrote: > Hi everyone, > I've developed a piece of software that I named SLAYER, by combining > the > letter 's' with the word "layer", or replacing the 'p' letter with > 's' in > the word 'player'. > > Either way, slayer can be thought of as a simpler alternative for > wrapper > libraries such as guile-sdl and guile-opengl, or as a programming > environment that is in a way competetive to Adobe Flash (with > standalone > player). But obviously, it is something completely different. > > I made this program as a base for research in GUI design, but it also > contains a stub of a 3d game engine that I'm planning to implement -- > which > explains native support for OpenGL. I recently thought that it also > could > be a great platform for teaching kids to program games, because -- > once > compiled and linked -- it could be distributed as a standalone > package, > that requires no additional tools. > > The program is available through mercurial on bitbucket: > > hg clone https://bitbucket.org/panicz/slayer > > The repository contains README file, which lists packages that are > needed > to build. Except a little mess, there are two demos that show the > possibilities of the system. The first one with the command: > > $ ./slayer -e3d > > The -e3d option is needed to enable the "3d" extension, which is > required > by the demo. It allows to move around in a 3d space using mouse and > WSAD > keys. There's also a draggable icon and a simple text-console, which > accepts s-expressions (evaluated using f1 key). It is activated with a > click, but for some reason the cursor isn't always displayed. The > source > file is slayer.scm. > > The second demo is the classical arcade PONG game (for two players). > It's > written in the raw guile+slayer, so it's pretty lengthy (~160 lines), > but > it should be easily understandable. PONG can be run using > $ ./slayer -i pong.scm > > Both demos use sound, which can be disabled by passing the --nosound > option > in the command line. PONG can also receive the -e3d option, which > would > force it to use opengl for display. > > Other command line options are undocumented, but they can be easily > found > in slayer.c. I admit that the lack of any documentation can now be > the most > seriously discouraging factor, but I promise to respond to every > question > eagerly. > > The second most seriously discouraging factor would be the build > process, > which could require manual editing of the Makefile, among others. It > would > be lovely to use the GNU autotools, but they seem so complicated, and > I > thought that since you might have more experience with those, you > could > help me to prepare a decent release, and perhaps to reorganize the > structure of the source code. > > Perhaps the third most seriously discouraging factor (except some > random > crashes that still happen) would be the lack of certain features: I'm > trying to apply the 'lazy implementation' strategy and add SDL/OpenGL > features only as I need them, and also my priority is to keep > interfaces > simple, even at the cost of programmer's freedom (so for instance, > there's > no option for choosing color index mode in OpenGL, or some other SDL > video > mode than the default). > > Despite those factors, I'd be happy to hear some feedback from you. > > Best regards, > M. > > -- > PGP Public key ID: 1024D/2DE827B3 > fingerprint = 8797 A26D 0854 2EAB 0285 A290 8A67 719C 2DE8 27B3 > See http://keys.gnupg.net or any PGP keyserver for public key. > > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.10 (GNU/Linux) > > iEYEARECAAYFAlGF6wkACgkQimdxnC3oJ7Pd5ACeOqfjo33M2YA+e7sEbvpR9g82 > 7mMAmgNMwztNlpQHBg5OMwzjDgvaMmqE > =L1uC > -----END PGP SIGNATURE----- > > -- *Nesmotren govori kao da mačem probada, a jezik je mudrih iscjeljenje. Izreke 12:18* [-- Attachment #2: Type: text/html, Size: 6619 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-05 5:15 ` John Darrington 2013-05-05 6:55 ` Stjepan Horvat @ 2013-05-05 6:59 ` Panicz Maciej Godek 2013-05-05 18:48 ` Thien-Thi Nguyen 1 sibling, 1 reply; 24+ messages in thread From: Panicz Maciej Godek @ 2013-05-05 6:59 UTC (permalink / raw) To: John Darrington; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 2743 bytes --] Hello! It sounds like an interesting project. > > The subject line of your post says it is a "GNU Package", but I don't see > slayer in > the official list. Perhaps you mean it is one that you want to submit to > GNU in the hope that they will adopt it as a package? Or did you mean > something > else? Obviously how to it should be laid out will depend on that a lot. > Well, I mostly meant a package that is compatibile with GNU system -- so that it would conform to the GNU standards. Whether is should be made an official GNU package is not that important to me, and I think it's still too early to decide > Like you say, lack of documentation is will be a big factor in getting > users. > How will people know how to use it, and perhaps more importantly WHY the > should > use it? > As for now, there are two demos which should help them get around, but I agree that in the longer run the documentation has to appear, especially as the system gets more complex, and as some parts of it become steady. If it comes to the second question, I think that the simplicity could convince some people to employ slayer to their multimedia projects -- because it requires no additional setup and works out of the box, so for instance it could be quite easily employed to implement the picture language from SICP Autotools can indeed be tricky - and a time consuming part of maintaining a > package - but they do make it a hell of a lot easier for the general public > to build, especially on wierd systems. > If it comes to weird systems, I also thought that having a build from mingw could also earn some popularity (if it is possible) Lack of features is a concern - but if you have a dedicated user base, even > a small > one, you will get requests for them. However, if you don't have decent > documentation, > and a reliable and portable build system, then you won't have any users > .... > I know. For now slayer is a byproduct of my other strivings, but I just thought that someone else could find it useful -- and the feedback could boost the development. Yet at this stage my main target is the community of hackers who could review the code and possibly find their own applications. I think that if someone sees the demos and wants to find out more, then it would make sense to run a documentation wiki or work on the info pages (or -- initially -- to answer the questions via e-mail). This is also why I need someone with more experience, to help me conceive the documentation process. I'm thinking of slayer as of environment rather than a program, and I think that it could evolve (among others) towards a development environment, so it would make sense if the documentation was available from there as well. Thanks! :) M. [-- Attachment #2: Type: text/html, Size: 3662 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-05 6:59 ` Panicz Maciej Godek @ 2013-05-05 18:48 ` Thien-Thi Nguyen 2013-05-05 19:42 ` Popularity (was Re: SLAYER announcement ...) Mike Gran 2013-05-05 21:37 ` SLAYER announcement and help request for preparing a GNU package Panicz Maciej Godek 0 siblings, 2 replies; 24+ messages in thread From: Thien-Thi Nguyen @ 2013-05-05 18:48 UTC (permalink / raw) To: Panicz Maciej Godek; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 1126 bytes --] () Panicz Maciej Godek <godek.maciek@gmail.com> () Sun, 5 May 2013 08:59:18 +0200 I think that the simplicity could convince some people to employ slayer to their multimedia projects -- because it requires no additional setup and works out of the box, so for instance it could be quite easily employed to implement the picture language from SICP Probably the valuation of simplicity depends largely on point of view. As the author, for you it is simple and transparent. For the newcomer, it is opaque, and its simplicity is to be determined. As Guile-SDL maintainer, i wonder what i can do to attract the same audience, whether or not it is worth expending the energy to do so, in what ways have i failed to encourage organic additive (as opposed to parallel) hacking, and how wonderful/terrible it is for GNU to be so loosely coupled. Anyway, should you wish to rebase SLAYER onto Guile-SDL (which has surmounted the documentation, autotools, and certain libguile churn issues), i, too, am happy to help out. (Maybe we can work together.) -- Thien-Thi Nguyen GPG key: 4C807502 [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Popularity (was Re: SLAYER announcement ...) 2013-05-05 18:48 ` Thien-Thi Nguyen @ 2013-05-05 19:42 ` Mike Gran 2013-05-05 20:04 ` Popularity Frank Terbeck ` (3 more replies) 2013-05-05 21:37 ` SLAYER announcement and help request for preparing a GNU package Panicz Maciej Godek 1 sibling, 4 replies; 24+ messages in thread From: Mike Gran @ 2013-05-05 19:42 UTC (permalink / raw) To: Thien-Thi Nguyen, Panicz Maciej Godek; +Cc: guile-user@gnu.org > From: Thien-Thi Nguyen <ttn@gnu.org> > As Guile-SDL maintainer, i wonder what i can do to attract the same > audience, whether or not it is worth expending the energy to do so, in > what ways have i failed to encourage organic additive (as opposed to > parallel) hacking, and how wonderful/terrible it is for GNU to be so > loosely coupled. Working on a library or framework is always a thankless task, since so few programmers want to use the unproven. Gtk would not be where it is if it weren't for the co-development of Gimp, an end-user program. Getting someone to try an end-user program is easier than getting a programmer to try out a library. But that is difficult as well. Since every essential end-user program has been written -- all new work just re-mixes the old ideas in either shinier or deeper ways -- few people are in "need" of new software. But there is always space for new diversions: there still seems to be a market for something short, easy to run, and entertaining. The Flash or HTML5 games model, essentially. One might consider writing an end-user program first, and then note how it is built upon libraries that can easily be reused. (And speaking of libraries that will never be used... guile-ncurses v1.4 dropped last week. That'll never have any users because the intersection in that Venn diagram is too small, consisting mostly of me. So, I write it for myself. Maybe I should follow my own advice above.) -Mike ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Popularity 2013-05-05 19:42 ` Popularity (was Re: SLAYER announcement ...) Mike Gran @ 2013-05-05 20:04 ` Frank Terbeck 2013-05-05 22:12 ` Popularity (was Re: SLAYER announcement ...) Chris Vine ` (2 subsequent siblings) 3 siblings, 0 replies; 24+ messages in thread From: Frank Terbeck @ 2013-05-05 20:04 UTC (permalink / raw) To: guile-user Mike Gran wrote: > (And speaking of libraries that will never be used... guile-ncurses > v1.4 dropped last week. That'll never have any users because the > intersection in that Venn diagram is too small, consisting mostly of > me. So, I write it for myself. Maybe I should follow my own > advice above.) Heh. I have had a project that uses guile-ncurses in the back of my mind for a while now. I was quite happy to see that someone wrote guile bindings for that. I don't know if I ever get to really get that project running, but know that your work is appreciated! :-) Regards, Frank ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Popularity (was Re: SLAYER announcement ...) 2013-05-05 19:42 ` Popularity (was Re: SLAYER announcement ...) Mike Gran 2013-05-05 20:04 ` Popularity Frank Terbeck @ 2013-05-05 22:12 ` Chris Vine 2013-05-06 3:25 ` Nala Ginrut 2013-05-07 12:20 ` Ludovic Courtès 3 siblings, 0 replies; 24+ messages in thread From: Chris Vine @ 2013-05-05 22:12 UTC (permalink / raw) To: Mike Gran; +Cc: Thien-Thi Nguyen, guile-user@gnu.org On Sun, 5 May 2013 12:42:34 -0700 (PDT) Mike Gran <spk121@yahoo.com> wrote: > (And speaking of libraries that will never be used... guile-ncurses > v1.4 dropped last week. That'll never have any users because the > intersection in that Venn diagram is too small, consisting mostly of > me. So, I write it for myself. Maybe I should follow my own > advice above.) I don't agree with that. I have used guile-ncurses for my own purposes quite successfully. To be honest, I would never write a non-trivial program using guile-gnome, which seems to be the only offering if you want a GUI using guile-2.0: it has too many oddities (in particular, it seems trivially easy to jam up the glib main loop and is sluggishly maintained). At least guile-ncurses works as well as ncurses does, and without any particular oddities. OK, it provides a terminal/console interface, but once you get over that it is fine. Chris ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Popularity (was Re: SLAYER announcement ...) 2013-05-05 19:42 ` Popularity (was Re: SLAYER announcement ...) Mike Gran 2013-05-05 20:04 ` Popularity Frank Terbeck 2013-05-05 22:12 ` Popularity (was Re: SLAYER announcement ...) Chris Vine @ 2013-05-06 3:25 ` Nala Ginrut 2013-05-07 12:20 ` Ludovic Courtès 3 siblings, 0 replies; 24+ messages in thread From: Nala Ginrut @ 2013-05-06 3:25 UTC (permalink / raw) To: Mike Gran; +Cc: Thien-Thi Nguyen, guile-user@gnu.org On Sun, 2013-05-05 at 12:42 -0700, Mike Gran wrote: > > From: Thien-Thi Nguyen <ttn@gnu.org> > > > As Guile-SDL maintainer, i wonder what i can do to attract the same > > audience, whether or not it is worth expending the energy to do so, in > > what ways have i failed to encourage organic additive (as opposed to > > parallel) hacking, and how wonderful/terrible it is for GNU to be so > > loosely coupled. > > Working on a library or framework is always a thankless task, since > so few programmers want to use the unproven. Gtk would not be where > it is if it weren't for the co-development of Gimp, an end-user > program. > > Getting someone to try an end-user program is easier than getting > a programmer to try out a library. But that is difficult as well. > Since every essential end-user program has been written -- all new > work just re-mixes the old ideas in either shinier or deeper ways -- > few people are in "need" of new software. > > But there is always space for new diversions: there still seems to > be a market for something short, easy to run, and entertaining. > The Flash or HTML5 games model, essentially. > > One might consider writing an end-user program first, > and then note how it is built upon libraries that can > easily be reused. > > (And speaking of libraries that will never be used... guile-ncurses > v1.4 dropped last week. That'll never have any users because the > intersection in that Venn diagram is too small, consisting mostly of > me. So, I write it for myself. Maybe I should follow my own > advice above.) > No Mike, I use guile-ncurses for a little thing to peek stock market. ;-P And TTN, your work is nice. We just don't have a web community yet, so many folks and projects are unrevealed. > -Mike > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Popularity (was Re: SLAYER announcement ...) 2013-05-05 19:42 ` Popularity (was Re: SLAYER announcement ...) Mike Gran ` (2 preceding siblings ...) 2013-05-06 3:25 ` Nala Ginrut @ 2013-05-07 12:20 ` Ludovic Courtès 3 siblings, 0 replies; 24+ messages in thread From: Ludovic Courtès @ 2013-05-07 12:20 UTC (permalink / raw) To: guile-user Mike Gran <spk121@yahoo.com> skribis: > (And speaking of libraries that will never be used... guile-ncurses > v1.4 dropped last week. That'll never have any users I have plans to use it to make a GUI for Guix (sic), and would even welcome patches in that direction. Hint, hint! :-) Ludo’. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-05 18:48 ` Thien-Thi Nguyen 2013-05-05 19:42 ` Popularity (was Re: SLAYER announcement ...) Mike Gran @ 2013-05-05 21:37 ` Panicz Maciej Godek 1 sibling, 0 replies; 24+ messages in thread From: Panicz Maciej Godek @ 2013-05-05 21:37 UTC (permalink / raw) To: Thien-Thi Nguyen; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 5201 bytes --] 2013/5/5 Thien-Thi Nguyen <ttn@gnu.org> > I think that the simplicity could convince some people to employ > slayer to their multimedia projects -- because it requires no > additional setup and works out of the box, so for instance it could > be quite easily employed to implement the picture language from SICP > > Probably the valuation of simplicity depends largely on point of view. > > As the author, for you it is simple and transparent. > > For the newcomer, it is opaque, and its simplicity is to be determined. > > I can't say that my judgements are unbiased, but I claim that the interface of slayer is objectively simpler than the one of SDL (and consequently -- Guile-SDL) -- obiously to the extent to which the comparison makes sense. Slayer is an event-driven abstraction layer over SDL (and OpenGL). Thus, the whole application that, for instance, plays a certain sound when a key is pressed, would look like that in slayer: (use-modules (slayer)) (define sound (load-sound "sound.wav")) (keydn 'esc quit) (keydn 'm (lambda()(play-sound! sound))) I dare to say that this is much simpler than in raw SDL, where one needs to write his own loop to handle the input, not to mention the fairly complicated initialization routines. Working with images would require employing the widget framework (I admit that the interface is a little unintuitive at the moment, but it can be improved easily) (use-modules (slayer) (slayer image) (widgets base) (widgets bitmap)) (keydn 'esc quit) (define image (load-image "image.png")) (add-child! *stage* (make-image image 70 20)) The above code creates an image that can be dragged around the screen. I agree that it's counterintuitive (because nothing in the code suggests that the image is draggable) and could be done better -- and that without this example it would be difficult to figure out how to do that. But still I dare to claim that it's simpler than if one had to do it in pure SDL (and he would probably end up reimplementing slayer) Things get more complicated when one wants to manually draw the stage, because then he needs to set-display-procedure! (the way it's done in the pong.scm demo). But as I reckon from my experience with SDL and OpenGL, it's still simpler than figuring out the setup for double buffered mode and making things in the right order (and remembering to glFinish()). Also, doing some more sophisticated timing requires creating a new thread, which -- fortunately -- is quite simple in guile. (I admit, however, that because of that reason, the included demos may be non-thread-safe) As Guile-SDL maintainer, i wonder what i can do to attract the same > audience, whether or not it is worth expending the energy to do so, in > what ways have i failed to encourage organic additive (as opposed to > parallel) hacking, and how wonderful/terrible it is for GNU to be so > loosely coupled. > My project transformed and evolved from a C++ OpenGL engine that I've been working on a couple of years ago, and then abandoned it. Years later, the input system that I implemented (array of approx. SDLK_LAST SCM thunks, supported by a few arrays of C function pointers and a loop) turned out to be still useful. Anyway, should you wish to rebase SLAYER onto Guile-SDL (which has > surmounted the documentation, autotools, and certain libguile churn > issues), i, too, am happy to help out. (Maybe we can work together.) > I'd really love to work together! However, there would be very little point in rebasing slayer onto Guile-SDL because of the project's goal, which is to supply a standalone executable that embeds (rather than extends) guile, and can therefore be thought of as a separate environment. I remember Ludovic reprimending me for embedding guile instead of extending it, but I believe that slayer is a humble exception from that otherwise notable rule. Perhaps the difference is psychological rather than technical, and perhaps one day someone decides to transform slayer into a loadable guile module, as it should be a truly trivial task, but for now I think that it will be easier for people to understand that they get "something similar to flash player" (it is for me :D) Besides, I really don't think that we would gain anything by taking the code that works and rewriting it to something else. If you are willing to help, I will appreciate it, and I believe that the experience that you got working on Guile-SDL would then be utilized properly (especially that you plainly put a lot of labour into that project, and your programming style seems more mature than mine). It would be a brand new experience for me to cooperate on an open source project with some other person. When it comes to the line of development, my main motivation for adding new features is the game that I'm trying to create, and -- as I wrote -- slayer is a byproduct, and it's meant to be useful for the set of its users (which is currently a singleton consisting of its author) rather than complete. However, I do have certain ideas of how the slayer environment could be enriched with some useful features (making a scheme editor widget, to begin with) I hope we can make our way somehow Best regards! [-- Attachment #2: Type: text/html, Size: 6523 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-04 21:54 SLAYER announcement and help request for preparing a GNU package Panicz Maciej Godek 2013-05-05 5:15 ` John Darrington @ 2013-05-06 8:06 ` Javier Sancho 2013-05-06 19:36 ` Panicz Maciej Godek 1 sibling, 1 reply; 24+ messages in thread From: Javier Sancho @ 2013-05-06 8:06 UTC (permalink / raw) To: guile-user@gnu.org Congratulations!! I've been working a little on something similar during the last four years, but I am looking for a kind of fluxus (http://www.pawfal.org/fluxus/) for games. You can see my code at http://savannah.nongnu.org/projects/gacela First versions were developed with GNU Common Lisp and C bindings for OpenGL and SDL but last year I discovered GNU Guile and Dynamic FFI. Actually, Gacela is a Guile module which uses Figl (http://gitorious.org/guile-figl); I am removing dependencies with SDL. But most of my efforts are spent on my eternal search betwwen simplicity, reusable code, proper functional style, i.e., a lot of programming design and procrastination. I'm trying to mix FRP techniques, entity systems, fluxus, yampas and more ideas in a maybe useless library but a very funny project for me. I tryed to port Gacela to the web too, and I developed an uncompleted Lisp-Javascript translator that uses canvas and SVG for displaying graphics. Very funny and instructive, too. In summary, a lot of work but few results. But I've had fun and learned a lot. -- Javier Sancho Fernández - http://www.jsancho.org/ Associate Member of the Free Software Foundation - http://www.fsf.org/ Contra el DRM - http://www.defectivebydesign.org/what_is_drm ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-06 8:06 ` Javier Sancho @ 2013-05-06 19:36 ` Panicz Maciej Godek 2013-05-06 21:25 ` Thien-Thi Nguyen 2013-05-07 7:23 ` Javier Sancho 0 siblings, 2 replies; 24+ messages in thread From: Panicz Maciej Godek @ 2013-05-06 19:36 UTC (permalink / raw) To: Javier Sancho; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 2477 bytes --] 2013/5/6 Javier Sancho <jsf@jsancho.org> > Congratulations!! > > I've been working a little on something similar during the last four > years, but I am looking for a kind of fluxus > (http://www.pawfal.org/fluxus/) for games. Thanks :) I see that there are a few persons with similar ideas, and I wonder how powerful we'd become if we managed to orchestrate our powers somehow, as TTN suggested > You can see my code at > http://savannah.nongnu.org/projects/gacela I even managed to build it, but for some reasons the demos won't run. I get the following error: gacela/video.scm:175:2: In procedure init-gl: gacela/video.scm:175:2: In procedure module-lookup: Unbound variable: set-gl-hint It was also a little surprising that I had to copy the guile modules manually, in spite of make install If it comes to code, I see that you have a more polling-style approach for processing input. My desire is to get a system that never stops being reconfigurable -- to truly separate the user interface from program logics. I don't know if it's achievable, but I have a feeling that such direction is worth exploring First versions were developed with GNU Common Lisp and C bindings for > OpenGL and SDL but last year I discovered GNU Guile and Dynamic FFI. > Actually, Gacela is a Guile module which uses Figl > (http://gitorious.org/guile-figl); I am removing dependencies with > SDL. > > But most of my efforts are spent on my eternal search betwwen > simplicity, reusable code, proper functional style, i.e., a lot of > programming design and procrastination. I'm trying to mix FRP > techniques, entity systems, fluxus, yampas and more ideas in a maybe > useless library but a very funny project for me. > All these concepts sound very interesting, but I'm curious whether they are reflected the code somewhere. I, on the other hand, put a lot of trust in Scheme -- I believe that whatever I do, will eventually be able to find a concise representation for that, that will be surrounded by many parentheses ;] and so I'm not so much worried with the design, believing, that I will just be doing, and everything will design itself :) I tryed to port Gacela to the web too, and I developed an uncompleted > Lisp-Javascript translator that uses canvas and SVG for displaying > graphics. Very funny and instructive, too. > :) I have also been thinking about something similar, but I decided to leave that idea for unspecified future that might never come Best regards, M. [-- Attachment #2: Type: text/html, Size: 3988 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-06 19:36 ` Panicz Maciej Godek @ 2013-05-06 21:25 ` Thien-Thi Nguyen 2013-05-07 22:50 ` Panicz Maciej Godek 2013-05-07 7:23 ` Javier Sancho 1 sibling, 1 reply; 24+ messages in thread From: Thien-Thi Nguyen @ 2013-05-06 21:25 UTC (permalink / raw) To: Panicz Maciej Godek; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 3283 bytes --] () Panicz Maciej Godek <godek.maciek@gmail.com> () Mon, 6 May 2013 21:36:33 +0200 Thanks :) I see that there are a few persons with similar ideas, and I wonder how powerful we'd become if we managed to orchestrate our powers somehow, as TTN suggested Orchestration is a nice concept. It is the marshalling of separate efforts in a parallel direction (towards the audience), moderated individually, but w/ group awareness, by precise changes in timing and pitch. Cool. For this, i strongly urge everyone who wants to jam[0] to provide documentation. That is the minimal requirement, the tuning of your instrument so that it does not burn the ears of others seated beside you. So what if you don't have (the autotools) rhythm? That can (and must!) be cyclically attained. To start, you gotta have the right Hz. "But ttn, documentation is a pain to create and maintain!" Well, yes. For creation, i offer as riposte Guile-BAUX[1], which helps me painlessly convert: --8<---------------cut here---------------start------------->8--- PRIMPROC (mix_allocate_channels, "allocated-channels", 1, 0, 0, (SCM numchans), doc: /*********** Dynamically change the number of channels managed by the mixer to @var{numchans}. If decreasing the number of channels, the upper channels are stopped. Return the new number of allocated channels. */) { #define FUNC_NAME s_mix_allocate_channels ASSERT_INTEGER (numchans, 1); RETURN_INT (Mix_AllocateChannels (C_LONG (numchans))); #undef FUNC_NAME } --8<---------------cut here---------------end--------------->8--- and --8<---------------cut here---------------start------------->8--- ;; Return the exact truncation (rounding to zero) of @var{number}. ;; This is ``safer'' than simply @code{inexact->exact} ;; for some Guile versions. ;; ;; @example ;; (define scale 0.180281690140845) ;; (inexact->exact scale) ;; @result{} 3247666210160131/18014398509481984 ; Guile 1.8.7 ;; @result{} 0 ; Guile 1.4.x ;; (exact-truncate scale) ;; @result{} 0 ;; @end example ;; (define (exact-truncate number) (inexact->exact (truncate number))) --8<---------------cut here---------------end--------------->8--- into: <http://www.gnu.org/software/guile-sdl/manual/html_node/Audio.html#index-allocated_002dchannels> and <http://www.gnu.org/software/guile-sdl/manual/html_node/Miscellaneous-Utilities.html#index-exact_002dtruncate> respectively. The nice thing (IMNSHO) is that Guile-BAUX is itself a nontrivial chunk of Guile Scheme, nothing more, and furthermore takes pains to rise above the cacaphony of Guile version-specific quirks. Documentation maintenance, on the other hand, is a charge laid squarely on the Author and the Author's discipline and astuteness. You know what to do; you know how to do it; what must be dredged from the void is the will and the practice, the mind and the motion. I wish you fortitude. _________________________________________________________ [0] http://www.merriam-webster.com/dictionary/jam (as in "jam session") [1] http://www.gnuvola.org/software/guile-baux/ -- Thien-Thi Nguyen GPG key: 4C807502 [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-06 21:25 ` Thien-Thi Nguyen @ 2013-05-07 22:50 ` Panicz Maciej Godek 2013-05-08 9:34 ` Thien-Thi Nguyen 0 siblings, 1 reply; 24+ messages in thread From: Panicz Maciej Godek @ 2013-05-07 22:50 UTC (permalink / raw) To: Thien-Thi Nguyen; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 2418 bytes --] 2013/5/6 Thien-Thi Nguyen <ttn@gnu.org> > () Panicz Maciej Godek <godek.maciek@gmail.com> > () Mon, 6 May 2013 21:36:33 +0200 > > Thanks :) I see that there are a few persons with similar ideas, and > I wonder how powerful we'd become if we managed to orchestrate our > powers somehow, as TTN suggested > > Orchestration is a nice concept. It is the marshalling of separate > efforts in a parallel direction (towards the audience), moderated > individually, but w/ group awareness, by precise changes in timing and > pitch. Cool. > > For this, i strongly urge everyone who wants to jam[0] to provide > documentation. That is the minimal requirement, the tuning of your > instrument so that it does not burn the ears of others seated beside > you. So what if you don't have (the autotools) rhythm? That can (and > must!) be cyclically attained. To start, you gotta have the right Hz. > > "But ttn, documentation is a pain to create and maintain!" > > Well, yes. For creation, i offer as riposte Guile-BAUX[1], > [...] This looks truly awesome! However, I'm only getting acquainted with autotools, and there are many secrets to me. I see that both guile-sdl and guile-figl copy the scm modules to $(prefix)/share/guile/site..., but apparently they both do that in a different way (which means there's no standard way), and none of them allows to 'fine tune' that directory with an optarg to ./configure And the whole thing makes me wonder about the status of guile documentation. The guide is really great (although sometimes it remains silent about certain features that can be found in header files), but I've observed that doc-strings for built-in functions are no longer available, even though they are specified. And besides, how do the aforementioned modules (those are, as I reckon, tsar and c-tsar) refer to guile-snarf-docs that is shipped with guile source? The nice thing (IMNSHO) is that Guile-BAUX is itself a nontrivial chunk > of Guile Scheme, nothing more, and furthermore takes pains to rise above > the cacaphony of Guile version-specific quirks. > > Documentation maintenance, on the other hand, is a charge laid squarely > on the Author and the Author's discipline and astuteness. You know what > to do; you know how to do it; what must be dredged from the void is the > will and the practice, the mind and the motion. I wish you fortitude. > Well, thanks, I'll do my best :) [-- Attachment #2: Type: text/html, Size: 3267 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-07 22:50 ` Panicz Maciej Godek @ 2013-05-08 9:34 ` Thien-Thi Nguyen 2013-05-08 12:51 ` Panicz Maciej Godek 2013-05-08 21:56 ` Ludovic Courtès 0 siblings, 2 replies; 24+ messages in thread From: Thien-Thi Nguyen @ 2013-05-08 9:34 UTC (permalink / raw) To: Panicz Maciej Godek; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 3019 bytes --] () Panicz Maciej Godek <godek.maciek@gmail.com> () Wed, 8 May 2013 00:50:32 +0200 both guile-sdl and guile-figl copy the scm modules to $(prefix)/share/guile/site..., but apparently they both do that in a different way (which means there's no standard way), and none of them allows to 'fine tune' that directory with an optarg to ./configure I like how guile-ncurses does it. Maybe Guile-BAUX (and SNUGGLE[0], which i forgot to mention previously) will follow its lead. And the whole thing makes me wonder about the status of guile documentation. Back in time, Guile inherited the documentation maintenance mindset of Emacs, i.e., "docstrings are for interactive (repl) consumption, full descriptions belong in the manual". This makes for a lot of work, which Emacs can easily demand of its large hacker population, but Guile cannot (its hackers being relatively few and somewhat prone to solipsism). So naturally, as w/ any situation where todo exceeds doers, some stuff does not get done or gets done w/ less attention than deserved. At present, there is a protocol between the repl and the database of docstrings (guile-procedures.txt) only, and only for libguile(?). And those laboriously maintained docstrings do not make it into the manual, either, by dint of the mindset. If that were to change, i think it would be a SMOP to arrange to significantly improve the status of Guile documentation. (Maybe that has already happened, but i missed it?) Personally, i think the ideal model is to define a protocol between the repl and the manual-viewing program, such that full documentation is the only thing that needs to be maintained. IMHO, the best layout for that is intro, concept and expository text in .texi, and proc/var/etc details in .h/.c/.scm comments. That's what Guile-BAUX supports, no surpise. The guide is really great (although sometimes it remains silent about certain features that can be found in header files), but I've observed that doc-strings for built-in functions are no longer available, even though they are specified. Could you give some examples? And besides, how do the aforementioned modules (those are, as I reckon, tsar and c-tsar) refer to guile-snarf-docs that is shipped with guile source? They don't. The script guile-snarf-docs is not installed, and thus not available to third parties (like SLAYER or Guile-SDL). But even if it were, its method has changed over the years; it might give bad results if used w/ a different Guile version than its original distribution. Believe me, i [pw]ondered the same thing. That's what led to Guile 1.4.x hacking and doc fu[1], and eventually, Guile-BAUX (and SNUGGLE). ___________________________________________________ [0] http://www.gnuvola.org/software/snuggle/ [1] http://www.gnuvola.org/software/guile/ http://www.gnuvola.org/software/guile/doc/Doc-Maintenance.html -- Thien-Thi Nguyen GPG key: 4C807502 [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-08 9:34 ` Thien-Thi Nguyen @ 2013-05-08 12:51 ` Panicz Maciej Godek 2013-05-08 13:37 ` Mark H Weaver 2013-05-09 6:50 ` Thien-Thi Nguyen 2013-05-08 21:56 ` Ludovic Courtès 1 sibling, 2 replies; 24+ messages in thread From: Panicz Maciej Godek @ 2013-05-08 12:51 UTC (permalink / raw) To: Thien-Thi Nguyen; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 5426 bytes --] 2013/5/8 Thien-Thi Nguyen <ttn@gnu.org> > () Panicz Maciej Godek <godek.maciek@gmail.com> > () Wed, 8 May 2013 00:50:32 +0200 > > both guile-sdl and guile-figl copy the scm modules to > $(prefix)/share/guile/site..., but apparently they both do that in a > different way (which means there's no standard way), and none of them > allows to 'fine tune' that directory with an optarg to ./configure > > I like how guile-ncurses does it. Maybe Guile-BAUX (and SNUGGLE[0], > which i forgot to mention previously) will follow its lead. > > I think that it might be misleading. I see that autotools are already complicated, and there's no need to complicate them more, especially if guile is an official extension language of the GNU project. When you ./configure --help, you get a section "Fine tuning of the installation directories", where you get such directives, as --bindir, --datadir and so on. However, if you want to install the guile modules, you need to use --with-guilesitedir, which is documented in 'Optional Packages' section, as if the installation directory was a package. The Right Thing would be to place --guilesitedir flag in the former section, although I see that there's currently no official way to do it. (And I see that there's been a few discussions about that, like this one: http://lists.gnu.org/archive/html/autoconf/2006-09/msg00009.html, which says that it's allegedly incompatible with GNU Coding Standards, or that one: http://stackoverflow.com/questions/3538705/adding-a-custom-installation-directory-option-to-autoconf-generated-configure-sc. Terribly frustrating!) And the whole thing makes me wonder about the status of guile > documentation. > > Back in time, Guile inherited the documentation maintenance mindset of > Emacs, i.e., "docstrings are for interactive (repl) consumption, full > descriptions belong in the manual". This makes for a lot of work, which > Emacs can easily demand of its large hacker population, but Guile cannot > (its hackers being relatively few and somewhat prone to solipsism). So > naturally, as w/ any situation where todo exceeds doers, some stuff does > not get done or gets done w/ less attention than deserved. > > The actual state of the documentation is a secondary issue. I find the question whether we have a framework that allows to extend documentation easily somewhat more important. At present, there is a protocol between the repl and the database of > docstrings (guile-procedures.txt) only, and only for libguile(?). And > those laboriously maintained docstrings do not make it into the manual, > either, by dint of the mindset. If that were to change, i think it > would be a SMOP to arrange to significantly improve the status of Guile > documentation. (Maybe that has already happened, but i missed it?) > Even not minding the manual (although it would be best if the maintainer could decide whether or not she wishes to export the docstring to the manual), as I understand -- there is no straigtforward C interface to provide docstrings to the functions exported by external modules? The other problem is that with the introduction of guile-vm, the builtin procedures' argument names disappeared, while they're quite helpful when used with geiser's autodoc mode. Personally, i think the ideal model is to define a protocol between the > repl and the manual-viewing program, such that full documentation is the > only thing that needs to be maintained. IMHO, the best layout for that > is intro, concept and expository text in .texi, and proc/var/etc details > in .h/.c/.scm comments. That's what Guile-BAUX supports, no surpise. > > I agree that it's a fairly clean approach, and I will try to employ it ASAP The guide is really great (although sometimes it remains silent about > certain features that can be found in header files), but I've > observed that doc-strings for built-in functions are no longer > available, even though they are specified. > > Could you give some examples? > > I see now that I might have gotten something wrong, but e.g. in libguile/alst.c there was a definition: SCM_DEFINE (scm_acons, "acons", 3, 0, 0, (SCM key, SCM value, SCM alist), "Add a new key-value pair to @var{alist}. A new pair is\n" "created whose car is @var{key} and whose cdr is @var{value}, and the\n" "pair is consed onto @var{alist}, and the new list is returned. This\n" "function is @emph{not} destructive; @var{alist} is not modified.") #define FUNC_NAME s_scm_acons { return scm_cons (scm_cons (key, value), alist); } #undef FUNC_NAME and (procedure-documentation acons) returns #f. Now I see that it's meant rather to generate the manual than to provide a docstring. And besides, how do the aforementioned modules (those are, as I > reckon, tsar and c-tsar) refer to guile-snarf-docs that is shipped > with guile source? > > They don't. The script guile-snarf-docs is not installed, and thus not > available to third parties (like SLAYER or Guile-SDL). But even if it > were, its method has changed over the years; it might give bad results > if used w/ a different Guile version than its original distribution. > Believe me, i [pw]ondered the same thing. That's what led to Guile > 1.4.x hacking and doc fu[1], and eventually, Guile-BAUX (and SNUGGLE). > I see you've done a lot of good things :) I'm grateful! [-- Attachment #2: Type: text/html, Size: 7843 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-08 12:51 ` Panicz Maciej Godek @ 2013-05-08 13:37 ` Mark H Weaver 2013-05-08 15:15 ` Mike Gran 2013-05-09 6:50 ` Thien-Thi Nguyen 1 sibling, 1 reply; 24+ messages in thread From: Mark H Weaver @ 2013-05-08 13:37 UTC (permalink / raw) To: Panicz Maciej Godek; +Cc: Thien-Thi Nguyen, guile-user@gnu.org Panicz Maciej Godek <godek.maciek@gmail.com> writes: > I see now that I might have gotten something wrong, but e.g. in > libguile/alst.c there was a definition: > SCM_DEFINE (scm_acons, "acons", 3, 0, 0, > (SCM key, SCM value, SCM alist), > "Add a new key-value pair to @var{alist}. A new pair is\n" > "created whose car is @var{key} and whose cdr is @var{value}, and > the\n" > "pair is consed onto @var{alist}, and the new list is returned. > This\n" > "function is @emph{not} destructive; @var{alist} is not modified.") > #define FUNC_NAME s_scm_acons > { > return scm_cons (scm_cons (key, value), alist); > } > #undef FUNC_NAME > > and (procedure-documentation acons) returns #f. Interesting. I notice that ",d acons" at the REPL still works. The REPL command uses 'object-documentation' from (ice-9 documentation). > Now I see that it's > meant rather to generate the manual than to provide a docstring. No, it's not used to generate the manual. It's used to generate guile-procedures.txt, which is consulted by 'object-documentation'. I agree that the current state of docstring handling leaves much to be desired. Maybe we should start a discussion on guile-devel about how the improve things. Regards, Mark ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-08 13:37 ` Mark H Weaver @ 2013-05-08 15:15 ` Mike Gran 2013-05-08 21:44 ` Panicz Maciej Godek 0 siblings, 1 reply; 24+ messages in thread From: Mike Gran @ 2013-05-08 15:15 UTC (permalink / raw) To: Mark H Weaver, Panicz Maciej Godek; +Cc: Thien-Thi Nguyen, guile-user@gnu.org > No, it's not used to generate the manual. It's used to generate > guile-procedures.txt, which is consulted by 'object-documentation'. > > I agree that the current state of docstring handling leaves much to be > desired. Maybe we should start a discussion on guile-devel about how > the improve things. I once asked the question if it would be possible to create a version of scm_c_define_gsubr that took a docstring. The opinion at the time was that it would be difficult. -Mike ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-08 15:15 ` Mike Gran @ 2013-05-08 21:44 ` Panicz Maciej Godek 0 siblings, 0 replies; 24+ messages in thread From: Panicz Maciej Godek @ 2013-05-08 21:44 UTC (permalink / raw) To: Mike Gran; +Cc: guile-user@gnu.org, Thien-Thi Nguyen [-- Attachment #1: Type: text/plain, Size: 1130 bytes --] 2013/5/8 Mike Gran <spk121@yahoo.com> > > > No, it's not used to generate the manual. It's used to generate > > guile-procedures.txt, which is consulted by 'object-documentation'. > > > > I agree that the current state of docstring handling leaves much to be > > desired. Maybe we should start a discussion on guile-devel about how > > the improve things. > > I once asked the question if it would be possible to create a version > of scm_c_define_gsubr that took a docstring. The opinion at the time > was that it would be difficult. > Well, after a moment of thought I concluded that it's not that difficult, at least with the current version of guile, using scm_set_procedure_property_x: scm_c_define_gsubr("proc", 0, 0, 0 ,(scm_t_subr) proc); scm_c_export("proc" ,NULL); scm_set_procedure_property_x(scm_variable_ref(scm_c_lookup("proc")), scm_from_utf8_symbol("documentation"), scm_from_utf8_string("Does something")); Although it may not be particularly efficient, I think it is sufficient (and it seems to work just fine), unless there are any other contraindications [-- Attachment #2: Type: text/html, Size: 1852 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-08 12:51 ` Panicz Maciej Godek 2013-05-08 13:37 ` Mark H Weaver @ 2013-05-09 6:50 ` Thien-Thi Nguyen 1 sibling, 0 replies; 24+ messages in thread From: Thien-Thi Nguyen @ 2013-05-09 6:50 UTC (permalink / raw) To: Panicz Maciej Godek; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 649 bytes --] () Panicz Maciej Godek <godek.maciek@gmail.com> () Wed, 8 May 2013 14:51:47 +0200 2013/5/8 Thien-Thi Nguyen <ttn@gnu.org> > [choosing installation dir for scheme code] > > I like how guile-ncurses does it. I think that it might be misleading. [infelicities w/ autotools, both "on" and "through"] Yes, it's messy. The actual state of the documentation is a secondary issue. I find the question whether we have a framework that allows to extend documentation easily somewhat more important. Agreed. The refined artifact comes from the refined action. -- Thien-Thi Nguyen GPG key: 4C807502 [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-08 9:34 ` Thien-Thi Nguyen 2013-05-08 12:51 ` Panicz Maciej Godek @ 2013-05-08 21:56 ` Ludovic Courtès 1 sibling, 0 replies; 24+ messages in thread From: Ludovic Courtès @ 2013-05-08 21:56 UTC (permalink / raw) To: guile-user Thien-Thi Nguyen <ttn@gnu.org> skribis: > At present, there is a protocol between the repl and the database of > docstrings (guile-procedures.txt) only, and only for libguile(?). And > those laboriously maintained docstrings do not make it into the manual, > either, by dint of the mindset. If that were to change, i think it > would be a SMOP to arrange to significantly improve the status of Guile > documentation. (Maybe that has already happened, but i missed it?) For the record, AFAIK, docstrings from libguile are in sync with the manual currently. By that I mean that they are identical most of the time (I agree there are good reasons why they would/should differ in some cases, though.) [...] > And besides, how do the aforementioned modules (those are, as I > reckon, tsar and c-tsar) refer to guile-snarf-docs that is shipped > with guile source? > > They don't. The script guile-snarf-docs is not installed, and thus not > available to third parties I used a different approach in GnuTLS and other projects: it had a doc snarfer comparable to guile-snarf-docs, but written in Scheme (see <https://gitorious.org/gnutls/gnutls/trees/master/guile/modules/system/documentation> and related files.) That said, one of the benefits of using the FFI is that docstrings are no problem... Thanks, Ludo’. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-06 19:36 ` Panicz Maciej Godek 2013-05-06 21:25 ` Thien-Thi Nguyen @ 2013-05-07 7:23 ` Javier Sancho 2013-05-07 22:00 ` Panicz Maciej Godek 1 sibling, 1 reply; 24+ messages in thread From: Javier Sancho @ 2013-05-07 7:23 UTC (permalink / raw) To: Panicz Maciej Godek; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 1849 bytes --] Panicz Maciej Godek wrote: > I even managed to build it, but for some reasons the demos won't run. I get > the following error: > gacela/video.scm:175:2: In procedure init-gl: > gacela/video.scm:175:2: In procedure module-lookup: Unbound variable: > set-gl-hint The reason is, oh my god, you are the first who test my code. When I started this project, I made demos and some documentation, but I stopped maintaining them because nobody was interested. Makefiles compile OpenGL and SDL bindings, but now I use Figl and compilation is not needed. The error with set-gl-hint comes because I have a figl version with some improvements. I've sent patches to figl maintainers. Currently, Gacela is in a very unstable state. Demos, for example, use an old version with a more OOP style, because when I wrote them I was beginning to understand Lisp and functional programming. But actually I'm reestructuring all the code looking for a more elegant, beatiful, functional style. > If it comes to code, I see that you have a more polling-style approach for > processing input. My desire is to get a system that never stops being > reconfigurable -- to truly separate the user interface from program logics. > I don't know if it's achievable, but I have a feeling that such direction is > worth exploring Yes, your style is more callback style. I personally prefer polling because then I can read the code sequentially. But it's a personal consideration. > All these concepts sound very interesting, but I'm curious whether they are > reflected the code somewhere. For the moment, no. But I have a lot of papers :-) Cheers. -- Javier Sancho Fernández - http://www.jsancho.org/ Associate Member of the Free Software Foundation - http://www.fsf.org/ Contra el DRM - http://www.defectivebydesign.org/what_is_drm [-- Attachment #2: 20130501-glhint-gllookat.patch --] [-- Type: application/octet-stream, Size: 577 bytes --] diff --git a/figl/gl.scm b/figl/gl.scm index 090f9ff..0098525 100644 --- a/figl/gl.scm +++ b/figl/gl.scm @@ -378,6 +378,12 @@ (%glCopyPixels . gl-copy-pixels)) ;;; +;;; 5.6 Hints +;;; + +(re-export (%glHint . set-gl-hint)) + +;;; ;;; 6.1 Querying GL State ;;; diff --git a/figl/glu.scm b/figl/glu.scm index e5af05e..df63fb9 100644 --- a/figl/glu.scm +++ b/figl/glu.scm @@ -42,4 +42,5 @@ ;;; 4 Matrix Manipulation ;;; -(re-export (%gluPerspective . glu-perspective)) +(re-export (%gluLookAt . glu-look-at) + (%gluPerspective . glu-perspective)) [-- Attachment #3: 20130501-textures.patch --] [-- Type: application/octet-stream, Size: 1286 bytes --] diff --git a/figl/gl.scm b/figl/gl.scm index 0098525..36a1eb7 100644 --- a/figl/gl.scm +++ b/figl/gl.scm @@ -296,7 +296,44 @@ (re-export (%glShadeModel . set-gl-shade-model)) -\f +;;; +;;; 3.8.4 Texture Parameters +;;; + +(define (set-gl-texture-parameter target pname . param) + (let ((n (length param))) + (cond ((= n 1) (%glTexParameterf target pname (car param))) + ((> n 1) (%glTexParameterfv target pname (list->f32vector param)))))) + +(export set-gl-texture-parameter) + +;;; +;;; 3.8.11 Texture Image Specification +;;; + +(define* (set-gl-texture-image target level internalFormat border format type data width #:optional (height #f) (depth #f)) + (cond ((and height depth) + (%glTexImage3D target level internalFormat width height depth border format type data)) + (height + (%glTexImage2D target level internalFormat width height border format type data)) + (else + (%glTexImage1D target level internalFormat width border format type data)))) + +(export set-gl-texture-image) + +;;; +;;; 3.8.12 Texture Objects +;;; + +(define (gl-generate-texture) + (let ((tv (u32vector 0))) + (%glGenTextures 1 tv) + (u32vector-ref tv 0))) + +(export gl-generate-texture) + +(re-export (%glBindTexture . gl-bind-texture)) + ;;; ;;; 4.1 Per-Fragment Operations ;;; [-- Attachment #4: 20130501-with-gl-push-matrix.patch --] [-- Type: application/octet-stream, Size: 500 bytes --] diff --git a/figl/gl.scm b/figl/gl.scm index edbd7c8..090f9ff 100644 --- a/figl/gl.scm +++ b/figl/gl.scm @@ -273,10 +273,13 @@ (define-syntax with-gl-push-matrix (syntax-rules () ((_ body ...) - (begin - (%glPushMatrix) - body ... - (%glPopMatrix))))) + (call-with-values + (lambda () + (%glPushMatrix) + body ...) + (lambda vals + (%glPopMatrix) + (apply values vals)))))) (export-syntax with-gl-push-matrix) ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: SLAYER announcement and help request for preparing a GNU package 2013-05-07 7:23 ` Javier Sancho @ 2013-05-07 22:00 ` Panicz Maciej Godek 0 siblings, 0 replies; 24+ messages in thread From: Panicz Maciej Godek @ 2013-05-07 22:00 UTC (permalink / raw) To: Javier Sancho; +Cc: guile-user@gnu.org [-- Attachment #1: Type: text/plain, Size: 2948 bytes --] 2013/5/7 Javier Sancho <jsf@jsancho.org> > Panicz Maciej Godek wrote: > > I even managed to build it, but for some reasons the demos won't run. I > get > > the following error: > > gacela/video.scm:175:2: In procedure init-gl: > > gacela/video.scm:175:2: In procedure module-lookup: Unbound variable: > > set-gl-hint > > The reason is, oh my god, you are the first who test my code. > :) I guess that's how it begins. I'm trying to build a portable package for slayer, and I must say that in a way it's much more difficult than programming (which is actually a great pleasure) -- there's a lot of reading and figuring out how to 'get it right' When I started this project, I made demos and some documentation, but > I stopped maintaining them because nobody was interested. Makefiles > compile OpenGL and SDL bindings, but now I use Figl and compilation is > not needed. The error with set-gl-hint comes because I have a figl > version with some improvements. I've sent patches to figl maintainers. > I've applied all three patches, and I got a new error: gacela/games/guybrush$ ./guybrush.scm [xcb] Unknown request in queue while dequeuing [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called [xcb] Aborting, sorry about that. guile: ../../src/xcb_io.c:178: dequeue_pending_request: Assertion `!xcb_xlib_unknown_req_in_deq' failed. Abort (core dumped) gacela/games/tetris$ ./tetris.scm XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" after 129 requests (128 known processed) with 18 events remaining. Currently, Gacela is in a very unstable state. Demos, for example, use > an old version with a more OOP style, because when I wrote them I was > beginning to understand Lisp and functional programming. But actually > I'm reestructuring all the code looking for a more elegant, beatiful, > functional style. > > I don't think those two paradigms rule each other out. I believe that games and user interfaces are the cases where OOP feels at home, but it seems a good practice to avoid mutable variables wherever they're unnecessary. I think John Carmack is quite just in this regard: http://www.altdevblogaday.com/2012/04/26/functional-programming-in-c/ > > If it comes to code, I see that you have a more polling-style approach > for > > processing input. My desire is to get a system that never stops being > > reconfigurable -- to truly separate the user interface from program > logics. > > I don't know if it's achievable, but I have a feeling that such > direction is > > worth exploring > > Yes, your style is more callback style. I personally prefer polling > because then I can read the code sequentially. But it's a personal > consideration. > > > All these concepts sound very interesting, but I'm curious whether they > are > > reflected the code somewhere. > > For the moment, no. But I have a lot of papers :-) > I'm curious where will it go :) regards [-- Attachment #2: Type: text/html, Size: 4559 bytes --] ^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2013-05-09 6:50 UTC | newest] Thread overview: 24+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-05-04 21:54 SLAYER announcement and help request for preparing a GNU package Panicz Maciej Godek 2013-05-05 5:15 ` John Darrington 2013-05-05 6:55 ` Stjepan Horvat 2013-05-05 6:59 ` Panicz Maciej Godek 2013-05-05 18:48 ` Thien-Thi Nguyen 2013-05-05 19:42 ` Popularity (was Re: SLAYER announcement ...) Mike Gran 2013-05-05 20:04 ` Popularity Frank Terbeck 2013-05-05 22:12 ` Popularity (was Re: SLAYER announcement ...) Chris Vine 2013-05-06 3:25 ` Nala Ginrut 2013-05-07 12:20 ` Ludovic Courtès 2013-05-05 21:37 ` SLAYER announcement and help request for preparing a GNU package Panicz Maciej Godek 2013-05-06 8:06 ` Javier Sancho 2013-05-06 19:36 ` Panicz Maciej Godek 2013-05-06 21:25 ` Thien-Thi Nguyen 2013-05-07 22:50 ` Panicz Maciej Godek 2013-05-08 9:34 ` Thien-Thi Nguyen 2013-05-08 12:51 ` Panicz Maciej Godek 2013-05-08 13:37 ` Mark H Weaver 2013-05-08 15:15 ` Mike Gran 2013-05-08 21:44 ` Panicz Maciej Godek 2013-05-09 6:50 ` Thien-Thi Nguyen 2013-05-08 21:56 ` Ludovic Courtès 2013-05-07 7:23 ` Javier Sancho 2013-05-07 22:00 ` Panicz Maciej Godek
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).