<daviid>I did ask, here is what they answered: <daviid>but i don't even have an account, nor a third party account (it seems you can't register anymore), and i'd be happy to clone and send an sxml patch to a ML, but ... they don1 thave ML anymore and don't use sxml :):) so, if anyone here has the knowledge, time, an account ... it'd be nice, let me know ***chrislck_ is now known as chrislck
<leoprikler>It appears you can convert boring old Github/Gitlab accounts to GNOME Gitlab accounts, so that works out for me. <leoprikler>Okay, I've managed to get a local checkout, but I'll have to stop here and continue later <ArneBab>manumanumanu: cool! Thank you for the info! ***sneek_ is now known as sneek
***apteryx_ is now known as apteryx
<daviid>leoprikler: nice! for the 'About' subsection, I would copy the one on the g-golf website, or the guix synopsis - otherwise, it's seems good to me, tx again <leoprikler>hmm, I think that neither are quite fitting for the context of Gtk-Web. <leoprikler>That it's GI-based is already clear from its inclusion in language-bindings. <leoprikler>And that it uses GOOPS does not differentiate it from the other GI bindings for Guile, that are out there ;) <daviid>leoprikler: please, take the g-golf about text, or the guix synopsis <daviid>leoprikler: perfect, many thanks <leoprikler>How far away is G-Golf from Guile 3.0 compatibility? <elliotpotts>anybody managed to replace setjmp/longjmp with c++ exceptions before? <elliotpotts>I suppose being able to do it myself is the whole point of the GPL :D <RhodiumToad>C allows setjmp to appear only in very specific contexts. <elliotpotts>how is it acceptable that guile has UB? maybe gnu c has an exception or something? <RhodiumToad>setjmp(...); can be a statement by itself (with optional (void) cast), or you can have setjmp(...) with an optional comparison to an integer constant or an optional ! operator as the expression in a conditional statement or switch() <RhodiumToad>all other uses of setjmp, including the resume = setjmp (registers); in vm.c, are undefined <RhodiumToad>if you're going to modify it to use exceptions, then you'd be changing that anyway <elliotpotts>I mean, I'm not sure I can be bothered to put the effort in to change it to exceptions, though :P <RhodiumToad>setjmp returns 0 when called normally, but longjmp makes the corresponding setjmp call return again with a value other than 0 <RhodiumToad>so if (!setjmp(&x)) { /* this part happens normally */ } else { /* this can only happen if something in the normal part did longjmp(&x) */ } ***terpri_ is now known as terpri
<RhodiumToad>if you don't mind limiting yourself to gcc or llvm, then you could do what luajit does and use libunwind-based exception logic <elliotpotts>really all I wanted scheme for was to eval some sexprs with quoting <elliotpotts>I was thinking of using quoting to replace what is essentially JSX-esque stuff <elliotpotts>^this sorta thing. So any lisp will do really, I just thought it'd be nice to use gnu guile <chrislck>very ominous: "brb, installed a new kernel" <RhodiumToad>the longjmp thing is only likely to be a problem if you call into c++ code from guile and throw exceptions <mwette>while on the setjmp issue, is setcontext more typical than setjmp these days? <spk121>mwette: setcontext hasn't made it into the WG14 standard for C2X. I don't have a feel for how popular it is out in the real world <spk121>of course the actual C2X standard is pretty weird: thousands of obscure math functions but no way to list the files in a directory <elliotpotts>the problem is if I call guile from c++, destructors will be skipped over if the guile code throws <dsmith-work>So if you call guile code from C++, you need to wrap the call in a catch handler to get controll back. <leoprikler>FWIW I wrote a wrapper once, that catches Guile exceptions and stores them in GErrors, with the code only being a rather short switch case <leoprikler>converting them to std::exception should not be a big deal <leoprikler>RhodiumToad: is the return value of setjmp after longjmp not defined as "the argument that was passed, or 1 if it's 0"? ***jonsger1 is now known as jonsger
<mwette>RDO = regular day off : work 9 days every two weeks <spk121>three day weekends would be nice <rlb>Does guile allow us to assume anything wrt set! and threads, i.e. maybe that all threads will eventually see the change, and that the underlying word change will be atomic? (I suspect that's true, but wondered if we're allowed to depend on it.) <justin_smith>rlb: I'm not sure of the details here, but a pattern I have learned that simplifies this a lot is using an immutable data structure, plus a mutable box - it's much easier to ensure that the one mutation (changing the box) never puts the data in an invalid state <justin_smith>guile has immutable sets and hashes, and and it's easy to pretend lists are immutable and just not use the mutation function on them <rlb>Oh, certainly - I just have a special case in some testing code where it'd be easier to rely on mutating the let vars. <rlb>I can easily rewrite it to use atomic boxes or something similar (the code is actually testing some race conditions, so rewriting it more functionally would invalidate the test :) ). <spk121>it would be cool if there were a procedure like 'eval-string' that processed a line of text as if you were typing it into the REPL <leoprikler>similarly start-repl*, which is used by coop-server even though it's not exported <emys>so, I am implementing my own language using the guile compiler tower. <emys>now I have a weird issue, in the spec I set the #:make-default-environment parameter to a custom function so that I start from a clean-slate environment (and not use the scheme environment). <emys>If run a script using `guile --language=my-lang my-file' everything works as expected (my test is the `write' procedure which isn't present in my lang). <emys>I mean `guile --language=my-lang -s my-file' <emys>If I run the repl via `guile --language=my-lang' the `write' procedure seems to still be in the namespace <emys>so I am fairly confident that in the repl, the environment-generating thunk is not called <mwette>You are setting #:make-default-environment in your lang/spec.scm file to something appropriate? <emys>mwette, think so, I had a look at make-fresh-user-module and went from there, its a thunk in which I use (make-module) to create a new module and `module-define!' for adding the builtins <emys>if I ad an `(error "test")` call, `guile -s` doesn't work anymore because an error is raised but I can still use the repl with my language <emys>also I have verified that in the repl it indeed uses my compile-tree-il code because the forms I implemented there are correctly treated. <mwette>What if you run guile and use ,L my-lang ? <emys>same as guile --language=my-lang <emys>maybe its something about the "#:evaluator" keyword? <emys>Its not documented in the docs so I didn't use it <emys>but I don't thats the reason <mwette>I use '#:evaluator (lambda (exp mod) (primitive-eval exp)) <mwette>but I'm including the scheme env in my lang's <emys>yeah, adding this doesn't change anything. <emys>,L ecmascript also features scheme stuff on the repl <mwette>maybe try '#:evaluator (lambda (exp mod) (eval exp mod)) <emys>I guess REPL is using (current-module) or something <mwette>Your compile routine is returning the env it was passed? (values tree env cenv) <mwette>It's been a while since I worked on this stuff. <emys>in the REPL, (current-module) is $1 = #<directory (guile-user) 7fe216f1ef00> <emys>outside the REPL its #<module (#{ g160}#) 7ff481996780> <mwette>check this: (use-modules (system base compile)) <mwette>sorry: (decompile (compile '(write 1) #:from 'scheme #:to 'tree-il #:env (make-module)) #:from 'tree-il #:to 'scheme) <mwette>maybe that is not good because scheme will pull in it's default. But you may be able to decopile inside your compile-tree-il to see what's going on <mwette>or try the (deompile (comile #:from my-lang #:to tree-il) #:to 'scheme) with use of write in my-lang <mwette>maybe this: in (system repl repl) meta-reader is called with (current-module) ***ftknox is now known as ayeaye