IRC channel logs

2022-02-01.log

back to list of logs

<gnousrick>hhm I see. I'll read more about that. thank you !
***conjunctive_ is now known as conjunctive
***attila_lendvai_ is now known as attila_lendvai
<wingo>civodul: yeah this reproducible build thing is gnarly
<civodul>heh, i'm with you! :-)
*civodul double-checks a psyntax patch re source properties
<civodul>wingo: how about this: https://paste.debian.net/1229167/ ?
<civodul>it reduces the scheme->tree-il step of gnu/packages/crates-io.scm from 30s to 20s, which is something
<wingo>hah, the recorded inlinable exports are getting put through a hash table and back
<civodul>heap size from 456M to 436M
<wingo>leading to inconsistent ordering
<civodul>oh
<wingo>civodul: lgtm
<wingo>civodul: i get reproducible builds now :)
<civodul>wingo: yay, well done!
<civodul>i'll push the psyntax change
<chrislck>sneek: botsnack
<sneek>:)
<wingo>git.sv.gnu.org seems down?
***robin__ is now known as robin
<civodul>i can ping it
<civodul>hmm lists.gnu.org is down
<civodul>i guess something's wrong under the snow over there
*wingo thinks using gitlab would be nice
<civodul>or sr.ht?
<civodul>wingo: i have this change to use srcprop SMOBs instead of alists: https://paste.debian.net/1229183/
<civodul>it shaves a little bit on wall-clock time and on heap usage
<civodul>WDYT?
<wingo>civodul: ok for the optimization to parse alists to smobs but i hesitate about the new interface; srcprops are fundamentally not what we want i think; instead psyntax should arrange to not need them
<wingo>already having switched to read-syntax we get rid of a large source of source properties and psyntax is really only using those properties internally
<wingo>you know what i mean?
<wingo>in the limit case psyntax could instead have a local lexically bound weak table that it uses if it really needs a side table
<wingo>then it could use the sourcev format instead
<wingo>but probably psyntax can be reworked to not need a side table at all
<wingo>like would it be possible to replace decorate-source with (make-syntax datum empty-wrap #f sourcev) ?
<civodul>wingo: agreed that source properties are not what we want
<civodul>i think longer-term what you suggests is the way to go
<civodul>the new interface is not something crucial here, just a way to reduce allocations in psyntax today
<civodul>we could keep it private
<civodul>it'd be awesome if decorate-source could be written the way you show, but i guess it's not that simple?
<wingo>civodul: how does https://wingolog.org/priv/decorate-source-hack.patch work for you
<wingo>it used to not be possible to write decorate-source in that way but since we switched to read-syntax we had to allow syntax objects that wrap lists
<wingo>and pairs and vectors etc
<wingo>there are a couple other places where decorate-source is used that i didn't patch, but that patch should at least let us try and see
<civodul>oh oh! let me see
<civodul>wingo: that works well! https://paste.debian.net/1229186/
<civodul>(on top of my earlier patch)
<wingo>neat, i will just change the implementation of decorate-source then
<civodul>yes, lemme push that other patch first
<civodul>it savannah is back
<wingo>civodul: i updated that patch in place fwiw
<civodul>ok
<civodul>git's still running here :-/
<avalenn>When #:key is used together with a rest argument, the keyword parameters in a call all remain in the rest list
<civodul>yes
<civodul>hi!
<Rue>hello o/
<avalenn>Is there any way to have the other behaviour (only non-declared keyword parameters in the rest list) ?
<wingo>source properties are still used on the result of syntax->datum fwiw, and some tests appear to rely on that
<wingo>avalenn: not automatically, you have to filter them out yourself. easy enough with a macro i guess
<avalenn>easy enough with a function I guess, doing it now
<avalenn>I know nothing of macros
<wingo> https://hostux.social/@fsfstatus/107723270341698955
<avalenn>I should learn but never took the time. syntax-rules or syntax-case seems obscure strange beast to me
<dsmith-work>avalenn: syntax-rules is actually pretty simple. Just a collection of pattern/replacements.
<dsmith-work>I'm getting a 502 from https://git.savannah.gnu.org/git/guile.git/ when I do a "git fetch".
<dsmith-work>After a longish time
<dsmith-work>Like 2 minutes. But it's timing out much faster now, under a second.
<wingo>dsmith-work: yeah ssh access down too
<wingo>civodul: https://wingolog.org/priv/0001-Avoid-source-properties-in-psyntax.patch
<wingo>that's a patch that passes all tests
<dsmith-work>!uptime
<sneek>I've been running for one month
<sneek>This system has been up 27 weeks, 6 days, 47 minutes
<dsmith-work>sneek: botsnack
<sneek>:)
<dsmith-work>yey! Looks like git fetch is working again
<daviid>avalenn: guix has a strip-keyword-arguments proc in (guix utils), and fwiw, g-golf as a split-keyword-args highly inspired by the guix proc
<avalenn>Thanks, I did https://paste.debian.net/1229214/ Will look at guix one
<daviid>avalenn: fwiw, https://git.savannah.gnu.org/cgit/guix.git/tree/guix/utils.scm#n484and https://git.savannah.gnu.org/cgit/g-golf.git/tree/g-golf/support/keyword.scm?h=devel
<daviid>avalenn: note that both of the above assumes a list of kw 'only'
<avalenn>daviid: thanks for the links
<daviid>welcome
<daviid>avalenn: there is another kwrelated proc utils, in (oop goops), that might interest you as well - https://git.savannah.gnu.org/cgit/guile.git/tree/module/oop/goops.scm#n401
<civodul>wingo: thanks for the psyntax changes \o/
<wingo>civodul: np :)
<drakonis>is there any hope to have almost all of guile's procedures also be in guile or is it done in C because of performance?
<dsmith-work>drakonis: Well, it's certainly moving in that direction. Seems like each major release has C code replaced by Scheme.
<wingo>civodul: so i think the remaining thing is just NEWS. the reproducible builds issue is fixed i think and inlinable exports collection are punted to -O2, leaving -O1 optimized for speed-of-compilation
<wingo>3.0.8 might be one of those that needs a quick followup tho
<drakonis>dsmith-work: integer-expt got reverted back to C tho
<dsmith-work>eval is now Scheme. Recently, the reader is now Scheme.
<drakonis>i see
<drakonis>well.
<drakonis>the important stuff being in scheme is great.
<civodul>wingo: nice!
<civodul>what time frame do you have in mind?
<civodul>i'd like to do some more compiler profiling
<civodul>we have a problem: https://issues.guix.gnu.org/53506 :-)
<civodul>argh, set-source-properties! is back at the top of profiles
<wingo>how? :)
<wingo>are you using "read" yourself?
<civodul>nope, compile-file
<civodul>so i guess it has to come from 'strip'
<civodul>(supports-source-properties? #<syntax ...>) => #t, no?
<civodul>hmm
<wingo>i think it's because guix has a lot of quoted/quasiquoted things, right?
<wingo>so this is when applying source properties to the different sub-components of a 'datum
<wingo>i don't know whether that is a useful thing to do or not tho ;)
<civodul>here's how i profile: https://paste.debian.net/1229229/
<civodul>(what i mean is that set-source-properties! is higher than what i had achieved earlier today)
*civodul has to go :-/
<wingo>civodul: that is guile 3.0.7 ?
<wingo>i.e. not guile from today
<dsmith-work>So just tried a "make dist"
<dsmith-work>guile-3.0.7.168-54bbe/ChangeLog: > $ /gnu/store/r2nr74rwhpqg16y1lyi6l0jn3lwx4yyz-guile-3.0.6/bin/guile <(echo '(')
<dsmith-work>error: store file names embedded in the distribution
<dsmith-work>
<dsmith-work>Looks like it's assuming it's on guix?
<dsmith-work>Ahh. comes from the assert-no-store-file-names target
<dsmith-work>Hah! It's finding that in the CHangeLog
<wingo>dsmith-work: what! in the changelog!!!
<wingo>delightful
<dsmith-work>The generated ChangeLog from the commit messages
<dsmith-work>wingo: For grins I added "sed -i 's|/gnu/store/|/GNU/STORE/|' $(distdir)/ChangeLog;" by hand to the gen-ChangeLog target and it was happy. Obviously not the right thing...
<wingo>dsmith-work: dunno, sounds good to me
<dsmith-work>Maybe replace with a known env var? Like ${GNU_STORE} or something? (I don't know guix)
<dsmith-work>Or maybe add "--exclude ChangeLog" to the grep. (Is that only in gnu grep?)
<dsmith-work>Yeah, that works too.
<wingo>there's actually a lot of stuff in 3.0.8
<gnousrick>hi, I don't understand something. I use a procedure to generate a string from a url (uri-scheme) but when I use it in a (string?=), guile doesn't like it. I think it's because this function can return #f too. Can I force the string conversation or it's better to use a lambda / cond, just to be sure it's a string ? I use guile 2.2.7
<wingo>you can use equal?
<wingo>doesn't require that arguments are strings
<gnousrick>hmm okay, and it's make the same thing ?
<wingo>will finish NEWS tomorrow i guess
<wingo>gnousrick: yeah, equal? on strings is the same as string=?
<wingo>it's just that equal? takes more things
<gnousrick>ooh okay, I see! thank you
<dsmith-work>What a delightful bug! The fix finds itself mentioned and fails the make.
<civodul>wingo: you're right, i was looking at 3.0.7, silly me
<civodul>much better with current main!
<dsmith-work>civodul: Did you see my comments about make dist checking for /gnu/store ?
<dsmith-work>civodul: I suggest the "--exclude=ChangeLog" for grep fix
<civodul>dsmith-work: ah yes, --exclude=ChangeLog is fine; the goal is to make sure we don't embed /gnu/store file names in shebangs