IRC channel logs

2021-03-16.log

back to list of logs

***scs is now known as Guest20543
<daviid>davexunit: great, is this part of chickadee?
***`micro_ is now known as Guest57360
***edcragg2 is now known as edcragg
***berndj-blackout is now known as berndj
***scs is now known as Guest17776
<apteryx>wingo: hey, I had somehow missed your message about now having the OK to push patches to guile-lib at my leisure ;-). Sounds good! I'll take the opportunity to merge the recent changes I proposed. Thank you.
<daviid>apteryx: please don't, i am worji
<daviid>i am working on those, in devel, and almost ready to release
<daviid>but have a problem with the web pages ...
<daviid>I would also ask you (or any one else) to send parches to guile-devel for review first - tx
<apteryx>daviid: OK, no worries
<flatwhatson>is there an easy way to run a unit test under gdb?
<apteryx>also OK to send any new patches I make for guile-lib to guile-devel for review first
<apteryx>thank you for working on a new release!
<daviid>apteryx: ok great, tx - I think it is important to give us (all) a 'window' for review(s), but we could agree on somehting like if no answers in say, 2 weeks (just like in/for guix iiuc), then ok to push ...
<daviid>apteryx: fwiw, and as an example, i disagre with your patch-6 :), but didn't have time to write about this yet, because i first wanted to work on a release including all other patches, especially the long awaited htmlprag fixes ...
<daviid>it seems savannah gnu/nongnu git servers are unaccessible at this time
<apteryx>I'm having the same problem
<daviid>ok, tx for the confirmation
<apteryx>I'll let you work through it and comment on any email feedback you may have; just make sure I'm CC'd on your replies so that I don't miss them.
***scs is now known as Guest61540
<daviid>apteryx: I am the release prep final steps, as soon as this is done ...
***scs is now known as Guest67472
***apteryx is now known as Guest28195
***apteryx_ is now known as apteryx
***scs is now known as Guest59056
<wingo>moin
<janneke>o/
<civodul>hi there!
<janneke>so, i got 64bit mingw running yesterday on guile master :-)
<janneke>not sure yet how correct it is, or even if it's what we want, how we want it
<spk121>janneke: that's awesome
<janneke>spk121: thanks :)
<spk121>janneke: is it still that wip-mingw branch?
<janneke>spk121: yes, i reset https://gitlab.com/janneke/guile/-/tree/wip-mingw
<janneke>and rebased on your jit (wow!) -- didn't test that here just yet
<spk121>janneke: since the "Support for x86_64-w64-mingw32" patch is a bit serious, I guess the next step would to get wingo or civodul to ponder https://gitlab.com/janneke/guile/-/commit/b54432212aa8f8e957c670bb6df6fe7266842dd0
<janneke>yes sure, i merely said "it works"...
<wingo>why wouldn't we want uintptr_t fixnums ?
<janneke>also, i haven't attempted running the test suite yet
<janneke>hmm, i must have had a wine hack/setup for wip-mingw-guile-2.2, thanks for listening
<spk121>wingo: because GMP works on long?
<wingo>does gmp work on long even on mingw64 ??
<wingo>dunno why they wouldn't define a word-sized digit type
<janneke>i think the comment in numbers.h hints to that and it seems to be the case
<wingo>but in guile #define SCM_T_SIGNED_BITS_MIN INTPTR_MIN
<wingo>and #define SCM_T_SIGNED_BITS_MAX INTPTR_MAX
<janneke>yes, that makes more sense
<wingo>how about typedef intptr_t scm_t_inum on mingw64
<wingo>ah mpz. hummm
<wingo>sorry, this is the denial,anger,acceptance thing
<wingo>mingw64 grief is a process :P
<janneke>yeah, tell me!
<janneke>why don't you just run wsl, if you must have an insecure backdoored, proprietary platform?
<wingo>janneke: ok here's a bonkers idea, what about on mingw64 we require minigmp and define MINI_GMP_LIMB_TYPE
<spk121>wingo: I was actually just about to go there, too
<janneke>wingo: that's a nice idea
<wingo>hehe
<wingo>nice to commiserate with friends ;)
*janneke likes this
<janneke>too bad we're too late for the potluck :)
<wingo>haha
<wingo>leftovers :)
<janneke>hehe
<spk121>so it would just be some configure stuff and then setting MINI_GMP_LIMB_TYPE to long long for __MINGW64__ I guess?
<wingo>yeah i think so. could add '-DMINI_GMP_LIMB_TYPE=long long' in configure, that way source needs no changes
<wingo>and we eliminate that source of potential bugs (different mini-gmp users defining or not that definition)
<janneke>and then change instances of "long" to some typedef MINI_GMP_LIMB_TYPE some_gmp_type?
<wingo>which instances of long ?
<wingo>in numbers.c you mean?
<wingo>i guess you would change any long which is a GMP digit to mp_limb_t
<wingo>humm
<wingo>but in numbers.h
<wingo>i think you could just use intptr_t and somewhere we make a compile-time assert that the size of mp_limb_t is the same as the size of intptr_t
<wingo>wdyt?
<wingo>just an idea
<janneke>ah yes
<janneke>i was wondering about things like hash.c, e.g. unsigned long scm_ihashq (SCM obj, unsigned long n)
<janneke>
***scs is now known as Guest16313
<spk121>couldn't you recycle scm_t_inum instead of creating a new mp_limb_t type? Is there a meaningful difference between those terms
<spk121>nevermind, I see where mp_limb_t lives
<wingo>janneke: for scm_ihashq or anything that returns something that should be an inum, i guess scm_t_inum would not be a bad choice
<wingo>note though that scm_ihashq could continue to return a long on mingw64
<wingo>just wouldn't be optimal
<wingo>so it probably makes sense to separate necessary changes from optimizations
<janneke>okay, thanks
<spk121>OK, so it is just, (1) -DMINI_GMP_LIMB_TYPE=long long for mingw64 (2) make scm_t_inum and mp_limb_t the same type (3) assert that sizeof(void *) == sizeof(mp_limb_t) == sizeof(scm_t_inum)
<spk121>?
<wingo>(2) make scm_t_inum be scm_t_signed bits i guess
<wingo>because with mini-gmp, users won't have access to mp_limb_t
<spk121>what about #ifdef MINI_GMP_LIMB_TYPE / typedef MINI_GMP_LIMB_TYPE scm_t_inum; #else typedef long scm_t_inum.
<spk121>oh right, numbers.h is a public header.
<janneke>hmm, the new locale check fails for me
***scs is now known as Guest63903
<wingo>janneke: yeah me too, will look at it
<janneke>wingo: ah "good", thanks
<wingo>:)
*janneke does another round of builing x86_64-w64-mingw32
<jonsger>:)
<davexunit>daviid: to answer your question from yesterday: no it's not part of chickadee. chickadee is more low-level and doesn't use goops.
<civodul>i suppose one can test with: guix build guile-next --with-branch=guile-next=master --target=x86_64-w64-mingw32
<davexunit>I'm doing some more experimental work with high-level "game engine" style abstractions in an unpublished project and I use goops there.
<civodul>my modest contribution :-)
<janneke>hmm, what's a mp_limb_t
<janneke>
<janneke>oh, that should be our MINI_GMP_LIMB_TYPE
<janneke>hmm
*janneke uses --keep-failed to heat-up their laptop a bit
<civodul>:-)
***vup is now known as __vupbot
***__vupbot is now known as vup
***scs is now known as Guest93585
<dsmith-work>UGT Greetings, Guilers
<janneke>hello dsmith-work
***daviid is now known as Guest14771
<janneke>spk121: hmm, --enable-jit segfaults for me, at least in combination with the new approach for x86_64-w64-mingw32
<spk121>janneke: pity. It definitely isn't well tested. I'm not even sure what a proper JIT test should look like
<janneke>well, without JIT i get a familiar error with the new approach: unexpected syntax in form ((@ (ice-9 control) %)
<spk121>janneke: did you rebuild your *.go now that they should be identical to the linx x64 *.go files?
<spk121>(well, not so sure about identical, but, more similar?)
*spk121 is off to work
<spk121>good luck
<janneke>thanks!
<janneke>yeah, i use guix to rebuild everything
*janneke goes to check .go equivalence
***scs is now known as Guest99582
<dsmith-work>spk121: Upstream lightening has some tests: https://gitlab.com/wingo/lightening/-/tree/main/tests
<wingo>upstream lightening even has ci :)
<dsmith-work>On multiple archs too!
<rlb>...I'd pondered pushing here for some extra testing (even if I just did it for myself), fwiw: https://man.sr.ht/builds.sr.ht/compatibility.md If I got that working, I suppose we might be able to set up some kind of mirroring from savannah if that were feasible/desirable.
<rlb>Though I haven't really tried the CI there yet much myself, so was just contemplating.
<janneke>hmm, mini-gmp uses long and unsigned long in signatures, wondering if that's a problem
<janneke>e.g.: int mpz_cmp_ui (const mpz_t, unsigned long);
<manumanumanu>ahoy hoy! 3.0.6 looks like it is going to be a fine release whenever it is ready!
<manumanumanu>and from what I can see there is some work done towards working under cygwin
***scs is now known as Guest99737
<manumanumanu>What was it Andy said? Mike for president?
<davexunit>would be cool if my goops patch could be included in 3.0.6 :D
***pkill9_ is now known as pkill9
<manumanumanu>davexunit: which one?
<davexunit>manumanumanu: fixes an issue with redefinable classes. it's the only bug I have open in the bug tracker
<davexunit>manumanumanu: https://lists.gnu.org/archive/html/bug-guile/2021-01/msg00028.html
***scs is now known as Guest31785
***Guest14771 is now known as daviid
<daviid>davexunit: ah ok, i asked because i was interested to look at your solution/the code, whenever it becomes public, let me know ...
<wingo>janneke: are there many of those cases? (using long to indicate an immediate int)
<janneke>wingo: yes, it seems long is taken to be == MINI_GMP_LIMB_TYPE, if i understand the code correctly; of which i'm not entirely sure
<manumanumanu>davexunit: thanks! goops is a powerful beast... I mostly use a home-rolled predicate-based system, which is faster for my use case (dispatching on a few elements, with a few methods). I lose specialisation, but gain that in lines of code
<janneke>i tried replacing long and long int with xlong and then #define xlong long long for mingw, which did not make any difference wrt the "unexpected syntax in form ((@ (ice-9 control) %)" problem
<janneke>so, i'm kinda lost with this new approach atm
<janneke>the fixnum patch seems more attractive atm, as "it works" ;-)
<wingo>civodul: i18.test:282 or so, testing "STRASSE" etc. are we failing to pass the de locale parameter to the comparator?
*wingo fixed the i18n test probs that he introduced; "yay"
<janneke>\o/
<wingo>zzz
<civodul>wingo: indeed, the Straße example lacks the 3rd arg to string-locale-ci=?
<davexunit>daviid: the project is unpublished, but the code is available. here's the relevant section: https://git.dthompson.us/starling.git/tree/starling/node.scm#n65
<davexunit>context: <node> is the base class for all objects in a game. <meta-node> is <node>'s metaclass. an "asset" represents anything loaded from disk like an image or audio file.
<janneke>hmm, long2big, ulong2big all need to do inum2big, unum2big i guess
<janneke>and the mpz_set_si, the mpz_set_ui probably need to take similar custom types
<daviid>davexunit: oh, tx
*janneke introduces mp_long and mp_ulong for mini-gmp
***scs is now known as Guest97525
***daviid` is now known as daviid
<daviid>davexunit: beautifully written, congrat!
<daviid>davexunit: I think you should file a bug report with your patch for (compute-slots (class <redefinable-class>)), so the fix might make it to 3.0.6 - unless andy tells us it's not a bug but i don't think so