IRC channel logs

2021-11-30.log

back to list of logs

<ns12>Hi, if I write software using Guile Scheme and want to release the software as open source, do I have to release the software under the GPL3+License? Or can I use a non-copyleft license such as BSD-2?
<daviid>ns12: maybe someone who knows will shime in 'here' and gives an opinionated opinion, but you might want to ask those question(s) on #fsf - my 2c
<RhodiumToad>guile's own license only applies to software that copies some part of guile, it does not apply to software _written in_ guile
<RhodiumToad>or to put it another way, the code you write yourself can have any license you choose (or none), you only have to respect an existing license if you copy the code it is attached to, or make "derivative" works of that code
<ns12>RhodiumToad: From my understanding, this means that if I create a standalone executable of my program using Guile, the executable will have to distributed using GPL (because the executable contains Guile parts). If I license my code under a BSD-2 license, someone can take that code and modify it to run under another Scheme implementation without
<ns12>being bound by GPL because my code does not include any part of Guile.
<RhodiumToad>if you distribute an executable that contains libguile, I believe you need to follow LGPL rather than GPL, but you'd have to check the docs and/or sources to verify that
<RhodiumToad>a quick look suggests that all of guile is actually under LGPL and not the full GPL
<RhodiumToad>(which makes sense, given the intended use)
<lampilelo>ns12: from what i've read, if you want to dynamically link to libguile, there are no requirements, if you want to statically link against libguile to create a single executable, you are required to provide a way of obtain object files of your software so that it's possible to re-link it against a modified version of libguile, either way if you distribute the library along with your program, you need to provide the code for it or a way
<lampilelo>to obtain the code and, of course, provide guile's license
<lampilelo>i.e. lgpl
<lampilelo>ofc if your software is open source, you don't have to distribute object files for it, it's just a bare minimum to conform to lgpl
<wkmanire>Does the guile compiler do anything to optimize data locality in memory for vectors? For instance, if I call map against a vector of similarly shaped scheme objects will the compiler try to store said object data contiguously for access? Also, will the map function cause a lot of stack frame thrashing, pushing and popping stack frames for each call to f?
***chris is now known as Guest8167
***Guest8167 is now known as chrislck
***chris is now known as Guest7813
***Guest7813 is now known as chrislck
***chris is now known as Guest3502
***Guest3502 is now known as chrislck
<dsmith-work>{appropriate time} Greetings, Guilers
<attila_lendvai>this is rather ugly, can i do this nicer/simpler: (map (lambda (x) (random 256)) (iota 12))
<chrislck>unlikely.
<chrislck>(let lp ((i 12) (ret '())) (if (zero? i) ret (lp (1- i) (cons (random 256) ret)))) if you want to avoid intermediate list.
<attila_lendvai>oh well...
<attila_lendvai>collecting list elements has always been cumbersome both in scheme, and to some extent even in CL
<lampilelo>attila_lendvai: maybe (list-tabulate 12 (lambda _ (random 256)))?
<attila_lendvai>lampilelo, oh, that's nicer, thanks!