IRC channel logs

2017-02-01.log

back to list of logs

<lloda2>I've sent a patch/hack to guile-devel re: truncating the exception output
<lloda2>I couldn't think of a cleaner way to do it...
<hiphish>Hello schemers. I have a (hopefully) quick question about embedding Guile. I was considering it as the scripting language for a game engine and I have been looking around what already exists.
<hiphish>The ones I have seen (GNUMaku, Chickadee) are all mostly pure Scheme and just load a shared object written in C for some parts.
<hiphish>Is that The Right Way or just the author's preference?
<hiphish>The Guile manual when talking about embedding Scheme in a C application always starts a Scheme REPL, which isn't what I want.
<davexunit>hiphish: this the "embedding vs. extending" debate. guile allows embedding, but recommends extending instead.
<davexunit>this is the*
<hiphish>What I was thinking about was more akin to a C program that looks for a Scheme bunch of Scheme modules distributed along the binary. If it doesn't find anything it terminates, and if it does find like a "pong.scm" file it loads that and runs the game logic form there.
<davexunit>you can certainly embed guile into a c program
<davexunit>gnumaku took that approach
<davexunit>(that was an old experiment of mine)
<hiphish>I would also like to have modding support so players can drop some scripts in a particular directory and the engine picks up those scripts as well.
<davexunit>chickadee is a guile library, so that is extending, not embedding.
***hiphish is now known as HiPhish
<HiPhish>I have taken a look at gnumaku, but there is no
<davexunit>I have no idea if gnumaku would even still build with the latest guile. I abandoned it years ago. it was my first foray into guile.
<HiPhish>'int main()'. It looks like you just compile the C source to a shared objects which are loaded by Guile. Am I mistaken?
<davexunit>there's a main C program that provides the "engine", and it makes calls to the guile part of the program
<davexunit>the guile code would be a "mod"
<HiPhish>davexunit: Is the gnumaku repository on GitHub outdated? Because I typed "main" into the search box and it only shows the name main in two Guile files.
<davexunit>HiPhish: I haven't looked at the source in so long. it's the latest, though.
<HiPhish>davexunit: I think I got it, you last commit deleted the 'main
<HiPhish>' function.
<davexunit> https://github.com/davexunit/gnumaku/blob/master/src/main.c
<HiPhish>Yeah, there is no main function there in the last commit anymore. But thanks, I'll try to see if I can learn anything from older commits, I was just looking for a point to start.
<HiPhish>BTW, is there any particular reason you went from embedding to extending?
<dsmith-work>Morning Greetings, Guilers
<lloda`>does anyone know why the Guile source files are randomly sprinkled with ^L (form feed?) characters?
<davexunit>they aren't random
<davexunit>they're to separate logical sections of source files
<davexunit>so you can easily jump between "pages" in emacs
<lloda`>is there a special command for that?
<amz3>héllo #guile!
<dsmith-work>lloda`: sure
<dsmith-work>lloda`: mark-page, forward-page, backward-page, etc
<dsmith-work>lloda`: https://www.gnu.org/software/emacs/manual/html_node/emacs/Pages.html#Pages
<lloda`>thx
<avoine>you can use this plugin to have a nice line instead of ^L -> https://github.com/purcell/page-break-lines
<daviid>heya guilers!
<amz3`>o/
<daviid>ot: any one knows what and where is the css file used with/for texinfo -> html 'gnu doc' online, so I could grab it and use it locally ?
<OrangeShark>o/
<janneke>How are you all using geiser? I wrote this Emacs init file http://paste.lisp.org/+78RF
<janneke>but it feels terribly clumsy, and wrong [%load-compiled-path]
<rekado>janneke: why do you do this?
<rekado>janneke: I set the geiser load path with “(setq geiser-guile-load-path '("~/dev/guix-wip"))”
<paroneayea>hoo! the "game level" (just content, not the engine) I'll be showing off at FOSDEM is probably way bigger than necessary...
<civodul>oh ho, teaser! :-)
<nks>Dear GNU Team, My name is Nikhil Soni, I am a senior year student at IIT Roorkee, India. I want to contribute to GNU Project and participate in GSoC this year. I am particularly very interested in a project idea mentioned in GNU Guix idea page i.e. "Write a Bourne-shell compiler front-end for Guile". I have woked with C/C++, Bash scripting, web applications on Ruby and PHP. Can anyone please point me in the right direction on where to start with this project idea
<nks>and how could I know more about it.
<nks>Any guidance would be very much appreciated.
<janneke>rekado: thanks...
<rekado>nks: nice! This project is very dear to me, too.
<janneke>i work on guile, on mes, on projects for clients, try-out websockets, 8sync
<janneke>and guix
<janneke>i thought about writing something in elisp to set/switch guile-load-[compiled]paths...but then wrote this
<rekado>nks: you may want to play around with Guile first because the implementation would be in Guile.
<janneke>i think it would be nice if guile projects would come with a built-in ready to use geiser solution instead of each of us brewing their own?
<rekado>janneke: ah, this makes sense. Yeah, that would be nice.
<janneke>(and for me, i was frustrated for quite some time that I couldn't get geiser to work)
<janneke>turned out that there was a time it didn't work with guile-2.1...and i thought *everyone* used that...i just feel a bit disconnected sometimes ;-)
<OrangeShark>I just use this one command in geiser to set the load path
<janneke>rekado: yes...so i "invested" some time to find a sort of nice solution for one project...now to see if it makes sense to share this, or improve on it, change it entirely
<OrangeShark>geiser-add-to-load-path
<nks>Thank you rekado for suggestion, I will explore the Guile.
<nks>Can you please tell me more about this project as it doesn't have much info on wiki page and who might be the mentor for this project?
<nks>Or point me to where I can get more info on this?
<rekado>nks: as far as I understand the goal is to be able to implement many features of a Bourne shell in Guile, so that one can run a configure shell script with just Guile.
<rekado>nks: currently GNU Guix provides a “bournish” language
<rekado>but it is very simplistic
<rekado>nks: to improve it one would probably use “(ice-9 peg)” to write a grammar for shell syntax
<rekado>and then compile that to Guile.
<rekado>the PEG module is described here: https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html
<rekado>(looks like it’s only available in the development version of Guile, not in the latest stable release.)
<rekado>nks: have you previously worked with grammars and parsers?
<nks>rekado: no but I am reading about it and want to learn Guix better
<dsmith-work>Woah! Using bash syntax as a guile language frontend? Wow.
<rekado>nks: you should also take a look at the file guix/build/bournish.scm in the Guix source tree.
<rekado>nks: it’s the current implementation, which cannot easily be extended to cover more syntax.
<rekado>but the idea is very similar.
<rekado>instead of using “string-tokenize” to split a line into words you’d use a grammar to split the string into tokens
<rekado>the tokens can be tagged so that you can distinguish if something is a built-in command, an argument, a pipe, a redirection, etc.
<rekado>the grammar would need to be tested well to ensure that position-dependent characters really are parsed with the expected meaning.
<nks>rekado: I think this gives me some idea about the project, I will try to understand the current bournish.scm implementation and explore the grammer.
<nks>rekado: if there is anything else, you think I should familiarize myself with?