00:00
lizmat joined
|
|||
dalek | kudo/nom: 00e71c8 | lizmat++ | src/core/Version.pm: Add another way of creating Version object This will basically allow alternate ways of parsing Version strings that generate an array of parts to compare, and possibly an alternate string representation. class Version::Reverse is Version { method new(Str $s) { Version::Reverse.Version::new($s.split(".").reverse,$s) } } |
00:30 | |
stmuk | seen azawawi | ||
lizmat | .seen azawawi | 00:38 | |
geekosaur | yoleaux isn't in here | 00:41 | |
lizmat | yeah, got that now :-) | 00:42 | |
dalek | kudo/nom: b952687 | lizmat++ | src/core/Version.pm: Handle lazy lists correctly |
00:48 | |
lizmat | good night, #perl6! | 00:53 | |
01:00
lizmat joined
01:47
ilbot3 joined
02:02
stmuk_ joined
05:00
skids joined
|
|||
tomboy64 | any comments on the jvm backend for rakudo? | 07:56 | |
stuff asplodes badly when i try to build against the jvm | 07:57 | ||
bartolin | there are a lot of issues with the jvm backend, but at least I was able to build it in the last few weeks. what version of rakudo do you try to build and how does it explode? | 08:00 | |
08:12
RabidGravy joined
|
|||
psch | tomboy64: nom HEAD should definitely build and install, details would be very interesting | 08:21 | |
08:24
[TuxCM] joined
08:25
lizmat_ joined
|
|||
tomboy64 | second | 08:30 | |
bartolin: psch: bpaste.net/show/487fbdbcd5be | 08:36 | ||
hmm i wonder if the nqp jars are seen at all | 08:37 | ||
psch | oh | 08:38 | |
yeah, look it doesn't find them | |||
tomboy64: "warning: [options] bootstrap class path not set in conjunction with -source 1.7" surprises me a little | 08:41 | ||
because we *do* set -Xbootclasspath during build somewhere, i'm not sure it's in that spot though | |||
tomboy64 | yeah, i think i've seen that | ||
it's probably gentoo's messing things up here, but i doubt it, since nothing java-mangling is being pulled in. | 08:42 | ||
psch | i'll start a manual run, for reference | ||
lizmat | jnthn: re irclog.perlgeek.de/p6dev/2016-04-23#i_12381803 | 08:44 | |
jnthn: looks like it needs to be done somewhere near src/Perl6/Metamodel/MultiMethodContainer.nqp, line 94 | |||
jnthn: but I have no idea of the necessary incantation to tweak the package | |||
[TuxCM] | This is Rakudo version 2016.04-22-gb952687 built on MoarVM version 2016.04 | 08:45 | |
test 21.538 | |||
test-t 12.798 | |||
csv-parser 23.692 | |||
psch | tomboy64: just to verify, nqp is installed and e.g. < nqp-m -e'say("hi")' > works? | 08:55 | |
tomboy64 | $ nqp-m -e'say("hi")' | 08:56 | |
hi | |||
yup | |||
psch | fwiw, i don't get the warning about the unset bootclasspath | ||
tomboy64 | moarvm is installed as well, works as well | ||
psch | OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-1~deb8u1) | ||
tomboy64 | i am using 2016.03 - if that's worth anything? | 08:57 | |
psch | tomboy64: oh, my bad, nqp-j, not nqp-m... | ||
ah, 1.8 | |||
tomboy64 | $ nqp-j -e'say("hi")' | ||
hi | |||
takes a little but works fine as well | |||
psch | yeah, that's expected | 08:58 | |
tomboy64 | is 2016.04 released? | ||
should i try with that? | |||
psch | */usr/usr/*share/nqp/runtime/ # <- that's your classpath..? :) | ||
tomboy64 | nope | ||
psch | but that's in your paste | ||
well, minus the *, those were for emphasis :S | 08:59 | ||
tomboy64 | hah | 09:00 | |
that seems to have been it | |||
good catch | |||
i had --sysroot=/usr; making it / made it work | 09:01 | ||
bartolin | psch++ # even without coffee | 09:03 | |
psch | 2016.03 probably won't install, fwiw | 09:04 | |
tomboy64 | well, the moar backend installs just fine | ||
was able to run perl repl from that last night | 09:05 | ||
psch | yeah, but moars p6sort impl cheats somehow | ||
[TuxCM] | perl6 -v does not show the nqp version. Should it? | ||
psch | and deals fine with a Mu (or VMNull, not sure anymore) as first element, which gives an NPE on r-j | ||
tomboy64: 2016.04 is tagged though, that one should work | 09:06 | ||
tomboy64 | ^^ okay, gonna test soon | ||
btw, what would you think about adding this to moarvm's Configure.pl? bpaste.net/show/e6d9849d7d77 | 09:07 | ||
psch | tomboy64: i'd bring that to #moarvm | ||
tomboy64 | i had problems including locally installed libffi.h | ||
ah, alright. thought it was part of perl6 | |||
psch | i mean, people will probably see it here too, but it doesn't seem to directly relate to p6 itself | ||
well, moar is designed upon 6model, which is an object model that does what perl6 needs, but moar can probably be used for other things... :) | 09:08 | ||
nine_ | Oh boy. I got a "Cannot find method 'run_alt'" again | 09:09 | |
psch | nine_: that's QRegex, isn't it..? | 09:10 | |
nine_ | I think so. The issue was first exposed when we started precompiling all modules but disappeared on it's own for unknown reasons. It was probably just hidden though. | 09:12 | |
moritz | psch: 6model isn't really an object model in the sense that language users think of an object model | 09:20 | |
it's more like a framework for separating object storage and object behavior | |||
timotimo | yeah, 6model gives you very basic meta-programming stuff that you can build your own stuff upon | 09:21 | |
moritz | oh gosh, I think tht#s a terrible explanation I just gave | ||
timotimo | that's what REPRs are, mostly | ||
psch | moritz: yeah, i get that much. 6model is a bootstrapping object model for building a languages object model | 09:22 | |
timotimo | in order to figure out how powerful it is, we'd really need someone to implement every single object model out there on top of it :D | 09:23 | |
moritz | psch: that sounds like you'd stop using using it once your language object model is bootstrapped. Which isn't the case | ||
psch: I guess we both have problems finding the right words here :-) | 09:24 | ||
psch | moritz: yeah, seems like. i'll readily admit my experience with 6model is also purely "what is this even and what i can do to {implement,fix} this..?" :) | 09:27 | |
dalek | ast: 34eda5f | usev6++ | S32-hash/adverbs.t: Only skip tests for rakudo-m add reference to RT #126823 |
09:32 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=126823 | ||
09:43
[TuxCM] joined
|
|||
dalek | ast: 4a8c7ea | usev6++ | S32-array/adverbs.t: Only skip tests for rakudo-m add reference to RT #126823 |
09:48 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=126823 | ||
tadzik | github.com/tadzik/rakudobrew/issues/80 has an idea of tagging the latest stable release of rakudo as latest-stable, so rakudobrew and such can install the latest release rather than blead or whatnot. Yay or nay? | 09:55 | |
(last comment is the most relevant) | |||
psch | i thought retagging is a bad idea? | 09:56 | |
tadzik | I'unno | 09:58 | |
it may also be interesting to see how perlbrew/plenv handles this | |||
where do they get the version listing from | |||
psch | blog.iqandreas.com/git/how-to-move-tags/ says every clone has to manually delete the tag at the old location before pulling the tag at the new location | 09:59 | |
which i personally would find somewhat annoying and at least a bit tedious... :) | |||
otoh, that blog post is 3 years old, no idea if anything changed in git wrt tags since then | |||
on an unrelated note, where do i test the fix for #127916? my first idea is in S14-roles, probably mixin.t, but i'm really not confident about that | 10:02 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127916 | ||
lizmat | m: say v1.2 eq v1.2.0 # I posit this is correct | 10:08 | |
camelia | rakudo-moar b95268: OUTPUT«True» | ||
lizmat | m: say v1.2 eqv v1.2.0 # I posit that this is *also* correct, as these versions are *not* deeply equal | 10:09 | |
camelia | rakudo-moar b95268: OUTPUT«False» | ||
lizmat | if we have consensus on this behaviour, I will need to fix a few tests | ||
masak | lizmat: I tentatively agree | 10:10 | |
m: say v1.2.3 ~~ v1.2; say v1.2.3 ~~ v1.2.0 # because of this | 10:11 | ||
camelia | rakudo-moar b95268: OUTPUT«TrueFalse» | ||
masak | I wouldn't expect two canonically equal things to smartmatch differently | ||
psch | equivalent between a superset and one of its members seems to not work if the superset can have more than that one member, right? | ||
*equivalence | |||
...although i'm not sure set theory applies that rigorously to version numbers | |||
masak | I think it does | ||
psch: but I don't understand what your argument there is -- that sounds more like Russel's paradox, which we're not aiming for :P | 10:12 | ||
Russell's* | |||
psch | that's the one with the teapot..? :) | ||
masak | no, the one with the barber | 10:13 | |
and sets | |||
psch | but you're probably right, the argument doesn't really work, because eq doesn't really work by the same rules, does it | ||
masak | eq is just string equivalence | ||
that's easy | |||
lizmat | m: say v1.2.3 ~~ v1.2; say v1.2.3 ~~ v1.2.0 # masak: are you saying this is correct ? | ||
camelia | rakudo-moar b95268: OUTPUT«TrueFalse» | ||
masak | lizmat: oh yes | 10:14 | |
psch | exactly, but the string equivalence has to mean (elem) for my argument to work | ||
masak | lizmat: in other words, v1.2 and v1.2.0 sort of denote "version ranges" | ||
psch | and that's just don't right | ||
masak | it's how I always understood the spec | ||
psch | "member of" for a given patch-level version happens by comparing to a minor-version-level version, and not with eq | ||
in that sense, it works with the smartmatch above | 10:15 | ||
(where a "version range" is a set of versions) | |||
masak | psch: I understand the smartmatch as being a containment check between two version ranges | 10:16 | |
psch | i'm not sure if shaving himself matters there for the barber, but maybe i'm overlooking something | ||
lizmat | actually, thinking about this more, I think we're conflated Version and VersionRange into a single object :-( | ||
masak | psch: if the user chooses to picture the lhs version range as actually a point (and thus the check as membership instead of subsetship), then that's fine | ||
lizmat: but it works out | |||
lizmat | not sure about that in the future | 10:17 | |
I mean, v1.* is *not* a version, it's a version range | |||
psch | masak: ohh, right. now i see where the barber comes into play | ||
masak re-reads S11 | |||
psch: you were talking about comparing a set with its members | 10:18 | ||
lizmat: S11 seems pretty clear that Version fills *both* roles, depending on context | 10:19 | ||
lizmat: for example, in a `use` with :ver<1.2.1>, it's an exact match -- a point, not a range | |||
lizmat | well I guess I'm saying is that a Version is acceptable as a VersionRange | 10:20 | |
masak | lizmat: to get a range, you'd use an actual range in :ver, or :ver<6.2.3+> | ||
lizmat | whereas a VersionRange is *not* acceptable as a Version | ||
masak | lizmat: ok, I can see that point. | 10:21 | |
lizmat | aka, you can say a module is at version v1.2 | ||
not at v1.* | |||
but currently, there's no way to inhibit such a statement | |||
masak | aha | ||
lizmat | that's why I think we need to split the functionality | ||
masak | I wouldn't go so far as needing to split it | ||
lizmat | (an insight I got late last night) | ||
masak | but it does sound like we need some checks in some places... | 10:22 | |
lizmat | well, if we're going to add an "is-range" method to Version, we're hacking a difference into it | 10:23 | |
psch | isn't it just ACCEPTS that needs to know this? | ||
lizmat | how would you use smartmatch to check whether a META6.json spec of a version is in fact a version and not a range ? | 10:24 | |
psch | well, and any intended-as-point spot needs to fill the version to patch-level, so to answer my own question "no"... | ||
lizmat | indeed :-) | ||
psch | m: say (v1.2).perl | 10:25 | |
camelia | rakudo-moar b95268: OUTPUT«v1.2» | ||
tadzik considers opening a rakudobug just so he has a number to put near the roast test | |||
psch | yeah, that seems a bit too contextually-overloaded from here | ||
masak | psch: "needs to fill the version to patch-level" -- that's only true if the whole world runs on semantic versioning, isn't it? | 10:27 | |
psch: as in, I should be allowed to call my *point* versions v1, v2, v3... | |||
(I hope) | 10:29 | ||
lizmat | masak: yes, you are allowed :-) | 10:32 | |
masak | then a point version doesn't have to fill the version to patch level. | 10:33 | |
and that's a sense in which point versions "are" ranges, because I'm intentionally grabbing a whole range and using that as a point | |||
also: | |||
m: say v1.2.3.4 | |||
camelia | rakudo-moar b95268: OUTPUT«v1.2.3.4» | ||
masak | the rabbit hole goes deeper than patch | 10:34 | |
so even patch versions are ranges | |||
psch | masak: yeah, and that's where it turns from "with classes as major versions, sets as minor versions, points as patch-level version" stops working | 10:35 | |
err | |||
s/" stops working/it works" turns into a barber/ | |||
...that's still butchered. | |||
masak | psch: that's not my mental model of it at all | 10:36 | |
psch | masak: no, but it was mine :) | ||
masak | psch: well, stop it :P | ||
psch | *was*. i said *was* :P | ||
masak | to a first approximation, versions are ranges (though not on the real line) | ||
m: say v1.1938 | 10:37 | ||
camelia | rakudo-moar b95268: OUTPUT«v1.1938» | ||
dalek | kudo/nom: 15a0dca | lizmat++ | src/core/Version.pm: Move "+" logic to general .new |
||
psch | m: sub f(+@a) { say @a.perl }; sub g(*@a) { say @a.perl }; f [1, 2], 3; g [1,2], 3 | 10:42 | |
camelia | rakudo-moar b95268: OUTPUT«[[1, 2], 3][1, 2, 3]» | ||
psch | ...my camelia query used to be win5, now that's p6dev :S | ||
dalek | ast: 95a5c18 | peschwa++ | S14-roles/mixin.t: Add test for RT #127916 |
10:50 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127916 | ||
dalek | ast: 16338c5 | (Tadeusz “tadzik” Sośnierz)++ | S06-other/main-usage.t: Add a test for #127977 |
10:56 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127977 | ||
tadzik | who is this Tadeusz “tadzik” Sośnierz stealing all my karma | ||
dalek | kudo/rt-127977: d548b23 | (Tadeusz “tadzik” Sośnierz)++ | src/core/Main.pm: Fix RT #127977 |
10:58 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127977 | ||
tadzik | any comments on that one, before I go forgiveness>permission and merge it? :) | ||
psch looks | 10:59 | ||
masak too | |||
tadzik | lizmat++'s idea: use .startswith() instead of .index() == 0 | 11:00 | |
masak | tadzik: s/and/&&/ both times | ||
lizmat likes && in that case because it lines up better | |||
tadzik | alright, I can agree to that. It lines up better with 'if' :P | ||
masak | tadzik: the whole patch feels a bit like a band-aid, and there's a deeper underlying problem somewhere :/ | ||
psch | i'd also appreciate a comment that notes that we probably want a not-X::AdHoc eventually | 11:01 | |
and i do agree with masak as well, but i often bandaid myself, soo... :) | |||
masak | I'm just generally against mis-using `and` when `&&` works just as well. `and` is for loose, statement-ish-level precedence | ||
tadzik | masak: it is :/ But it fixes the problem, and getting binder to throw out perl6 exceptions sounds like a good reason why it's adhoc in here | ||
masak | I'd say the band-aid is fine if we also commit somehow to fixing the deeper problem | ||
psch | tadzik: the binder has a mechanism in place for throwing typed exceptions | 11:02 | |
it's just a bit fiddly, mostly | |||
tadzik | oh | ||
psch | grep for P6EX | ||
i'm not sure catching a e.g. X::Bind::Argument::Constraint instead of X::AdHoc completely removes the bandaid feeling, though... | 11:05 | ||
s/Bind/TypeCheck/ | |||
it also reaffirms my wish for introspectable where constraints | 11:06 | ||
m: sub MAIN(Int $x where * > 5) { } # this usage is lacking | |||
camelia | rakudo-moar 15a0dc: OUTPUT«Usage: /tmp/vZHUYsPoqq <x> » | ||
dalek | kudo/nom: 1034c62 | lizmat++ | src/core/Version.pm: Allow setting of "+" functionality also |
11:07 | |
kudo/rt-127977: 4543464 | (Tadeusz “tadzik” Sośnierz)++ | src/core/Main.pm: Style fixes for the #127977 fix |
11:08 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127977 | ||
lizmat | hmmm... so what *are* the semantic differences between cmp <=> and leg ? | 11:14 | |
I'm starting to feel that github.com/rakudo/rakudo/commit/688ddee was a mistake | 11:15 | ||
should have been < instead of lt | |||
<= instead of le etc etc | |||
tadzik | so, who's fine with applying the band-aid but keeping the RT open until we get a more proper solution? o/ | 11:19 | |
psch isn't sure what else but a narrower Exception would go into a proper solution | 11:22 | ||
lizmat | tadzik: +1 | ||
psch | if that's all i can probably hack that in rather quickly | ||
tadzik | that'd be nice, I don't know where to start on that | 11:23 | |
psch | well, for now subclassing TypeCheck::Argument doesn't help, 'cause we can't show the failed constraint | 11:27 | |
someone once pointed me at a gist that shows how we could get the where constraint back during runtime, but i neither grokked nor saved it | |||
m: sub f(Int $x) { }; f "f" # this message ~~ s/declared signature/declared constraint $contraint/ | 11:29 | ||
camelia | rakudo-moar 1034c6: OUTPUT«===SORRY!=== Error while compiling /tmp/lJDpOvE90CCalling f(Str) will never work with declared signature (Int $x)at /tmp/lJDpOvE90C:1------> sub f(Int $x) { }; ⏏f "f" # this message ~~ s/declared signa» | ||
psch | hm, and probably s/f(Str)/f($actual-argument)/ | ||
well, i'll subclass but add a # TODO: ... | 11:30 | ||
and also note that in the ticket | |||
hm, maybe it should be X::TypeCheck::Binding::Constraint, actually..? | 11:34 | ||
'cause ::Argument is about protoguilt and all that jazz | |||
dalek | kudo/rt-127977: d3c2254 | peschwa++ | src/ (3 files): Add and throw a typed Exception for where constraints. |
11:47 | |
psch | tadzik: ^^^ | ||
note that i actually realized that we do need to propagate the reason for the dispatch failure towards USAGE somehow | 11:48 | ||
as in, a < sub MAIN(Str $x where .chars > 5) { } > giving USAGE as-is when i supply "foo" doesn't help enough | 11:49 | ||
maybe having where constraints in USAGE is enough there, though | |||
oh duh | |||
that actually works for the wrong reasons it seems | |||
the patch i mean | 11:50 | ||
tadzik | psch (IRC): I think the if chain can go now | ||
psch | tadzik: maybe, i have to fix the lookup via P6EX first though... :) | 11:51 | |
there was two copy-pastos :/ | |||
tadzik sits on the edge of his chair | |||
dalek | kudo/rt-127977: 3381d20 | peschwa++ | src/ (2 files): Correct copy-pastos. |
11:52 | |
kudo/rt-127977: 0ca6e3d | peschwa++ | src/core/Main.pm: Simplify, tadzik++ |
|||
psch | now, who was it that pointed me at code object introspection..? :/ | ||
also, grr me | 11:53 | ||
the previous one didn't work, which i noticed because i tested *after* pushing | |||
and now i pushed again without testing :( | |||
...we can squash before merging, right? :P | |||
tadzik | I'll get that :) | ||
squashing seems like a sensible thing, yes | 11:54 | ||
timotimo | wow, so much #p6dev chat today :) | ||
psch | $ ./perl6-m -e'sub f($x where 5) { }; try f 2; $!.perl.say' | 11:55 | |
X::TypeCheck::Binding::Constraint.new(symbol => "\$x", operation => Any, got => Any, expected => Any) | |||
that's rt-127977 HEAD, so i did good :P | |||
timotimo | lizmat: i was also quite surprised when you used eq and friends for versions, because i'd expect lt, gt and friends to coerce things to strings | 11:56 | |
lizmat | timotimo: yeah, I had just come to the same conclusion | 11:57 | |
tadzik | psch: www.tf2sounds.com/495 :P | ||
yep, tests pass | |||
I'll squash and merge, alrigh? | |||
psch | let me see if i can find that introspection gist | ||
'cause if we can already have the code of the where constraint in the Exception that'd definitely be cooler :) | 11:58 | ||
tadzik | okayo | ||
psch | same for USAGE, too | ||
tadzik | oh yes | ||
psch | hmm, gist.github.com/niner/3be0c164d847ca794e18 was the gist | 12:00 | |
i don't know if that actually helps, 'cause Backtrace just opens its $.file and looks for the surrounding lines... | |||
psch wonders what a good solutions could look like there | 12:01 | ||
annotating every WhateverCode with its source seems kinda ehh | |||
otoh, doing what Backtrace does might not work with e.g. -e..? | 12:03 | ||
well, i suppose for Parameter constraints it makes me sense to stuff it into the Parameter anyway, e.g. < has str $!post_constraints_src > or something, maybe | 12:04 | ||
s/me/more/ | 12:05 | ||
i'll have to ponder that a bit | 12:09 | ||
which probably mostly means accepting that i don't know a better solution than telling a Parameter what the source of its post_constraint looks like textually | |||
during parse that is | 12:10 | ||
lizmat | lunch& | 12:14 | |
psch | oh shucks | 12:53 | |
the parts of a stage parse Match object are BOOTStr, which i somehow can't figure out how to stuff into a str Attribute of Parameter..? | 12:54 | ||
12:56
astj joined,
hankache joined
|
|||
psch | ...the only thing i can think of is unbox_s(box_s($str, find_symbol([Str]))... o.o | 13:00 | |
and that's pretty terrible | |||
well, it still gives a BOOTStr anyway | 13:03 | ||
$ ./perl6 --ll-exception -e'sub f($ where * < 2) { }; say &f.signature.params[0].post_constraints_src' | 13:08 | ||
where * < 2 | |||
RabidGravy | anyway, all my modules pass with the 2016-04 | 13:09 | |
psch | gist.github.com/peschwa/cf6314bd11...e4ad855f25 | 13:27 | |
tadzik: ^^^ | |||
tadzik | psch (IRC): awesome :) | ||
psch | well, and anyone else, really :) | ||
it could be more awesome i suppose | 13:28 | ||
like, the sub example could print "0 < <anon> < 2" | 13:29 | ||
but that's potentially really complicated | |||
timotimo | i didn't know you can have multiple "where"s there | ||
psch | timotimo: fwiw, what clued me in is that it's Parameter.post_constraints :) | ||
timotimo | ah | 13:30 | |
well, you could just write that as where 0 < * < 2 | |||
psch | yeah, in that case | ||
timotimo | if it were <= each time, you could write 0..2 | ||
psch | well, the example is clearly best written as "sub f(1)" :P | 13:31 | |
but that doesn't demonstrate the constraint Exception :) | |||
dalek | kudo/rt-127977: e0f12a4 | peschwa++ | src/ (6 files): Expand USAGE to include post constraints. Necessary condition for that was obviously adding a typed Exception and stuffing the post constraint source into Parameter, which we profit from in normal subroutine invocation as well. |
13:33 | |
tadzik | <3 | 13:34 | |
lizmat | m: dd v6.*.2 # should this be a valid Version object?? | ||
camelia | rakudo-moar 1034c6: OUTPUT«v6.*.2» | ||
psch | fwiw, it's a great solution for the USAGE case, but the implementation still feels band-aid-y to me | ||
lizmat | and if so, what does it mean in a Range context ? | ||
psch | but it's probably the best we can do there, as we can't find out the post constraint source later, so carrying it around from parse time is the only thing we can do (...i think) | 13:35 | |
tadzik: can i ask you to write tests for the new typed Exception? :) | 13:36 | ||
hm, maybe that's pending a more general agreement with the patch anyway... vOv | 13:37 | ||
tadzik | yeah, if we are to write spectests, we need some more speculation I'd say | 13:39 | |
so we have --output, but --profile-filename. Would you oppose to changing it to --profile-output for consistency? | 13:41 | ||
lizmat says +1 | 13:42 | ||
psch | no opposition here | ||
13:49
astj_ joined
|
|||
dalek | kudo/nom: 1512da2 | lizmat++ | src/core/Version.pm: We should use numerical compares for Version |
14:08 | |
vendethiel | lizmat: should Less/More/Same use ==/!=? | 14:11 | |
lizmat | vendethiel: not sure I understand the question | 14:13 | |
vendethiel | lizmat: you use == and != with "compare" objects,is that correct? is that not supposed to use eqv or whatever else form or equality there is? probably doesn't matter | ||
lizmat | "compare" objects? you mean Version objects ? | 14:14 | |
timotimo | tadzik: if you change that, either make both flags work for a while, or directly fix camelia to use --profile-output as well :) | 14:30 | |
tadzik | timotimo: both are probably sensible :) | 14:31 | |
vendethiel | lizmat: no, I mean Less/Same/.. - that's just an enum? | 14:44 | |
lizmat | m: dd Same, Less, More | ||
camelia | rakudo-moar 1512da: OUTPUT«Order::SameOrder::LessOrder::More» | ||
lizmat | vendethiel: yes :-) | ||
psch | m: say so 1 <=> 1 # this consequence tripped me up once | 14:49 | |
camelia | rakudo-moar 1512da: OUTPUT«False» | ||
psch | but then cmp and friends aren't for equality | ||
lizmat | m: m: say so (1 <=> 1) | 15:23 | |
camelia | rakudo-moar 1512da: OUTPUT«False» | ||
lizmat | m: m: say so Same | ||
camelia | rakudo-moar 1512da: OUTPUT«False» | ||
lizmat | m: say so Same | ||
camelia | rakudo-moar 1512da: OUTPUT«False» | ||
lizmat | duh :-) | 15:24 | |
psch | m: say Same.value | ||
camelia | rakudo-moar 1512da: OUTPUT«0» | ||
timotimo | tadzik: but clearly ' and \ must be escaped inside there | ||
which you'd only notice if you have stuff like that in filenames or something silly like that | |||
and \ are probably doubled accidentally | 15:25 | ||
tadzik | ww? :) | ||
well, they're not, somehow :P | |||
timotimo | ww, yes | ||
lizmat | PSA re v2.*.3 : I'm thinking about disallowing that | 15:26 | |
too bad it has one spectest for that particular case | |||
comments / opinions / suggestions ? | |||
tadzik | kill it, imho | 15:27 | |
timotimo | it's a strange thing to want | 15:28 | |
but it may have a reason to exist | |||
lizmat | fwiw, S11 only has examples of * at the end of a version | 15:33 | |
tadzik | does git-blame tell anything interesting? | ||
lizmat | the wording is a bit ambiguous, but I don't think it shows intent of v2.*.3 meaning anything | ||
pmichaud, Nov 2008 | 15:34 | ||
ugexe | v2.*.1+ specifically could make sense, but in general i dunno | ||
lizmat | ugexe: what would that mean ? | ||
timotimo | anything starting in v2, with one part in the middle and ending in .1 or more than that | 15:35 | |
but never ending in .0 | |||
ugexe | only use module whatever version after its first patch (you dont trust the first release). yes this is a stretch | ||
lizmat | feels to me that could be served better with a "where" type clause | 15:36 | |
specifically, is the * supposed to be slurpy? | |||
ugexe | well, not if you are declaring dependencies in a meta file or something | ||
lizmat | would v2.2.2.2.1 ~~ v2.*.1 be true or not ? | 15:37 | |
the reason I'm asking, is that I think v2.4.* should really be a Range | 15:38 | ||
m: dd v.2.4..* | 15:39 | ||
camelia | rakudo-moar 1512da: OUTPUT«===SORRY!=== Error while compiling /tmp/zLZsmB2JVRMalformed postfix callat /tmp/zLZsmB2JVR:1------> dd v.⏏2.4..*» | ||
lizmat | m: dd v2.4..* | ||
camelia | rakudo-moar 1512da: OUTPUT«Method 'succ' not found for invocant of class 'Version' in block <unit> at /tmp/YV2nLFaV2T line 1» | ||
lizmat | m: say v2.4..* | ||
camelia | rakudo-moar 1512da: OUTPUT«v2.4..Inf» | ||
tadzik | I would assume v2.*.1 means v2.[0-9]+.1 | ||
lizmat | so a Version object like that would return a Regex really ? | ||
15:41
mst joined
|
|||
mst | libuv has a unix domain socket and/or win32 named pipe abstraction, is that exposed to perl6 space? | 15:41 | |
lizmat | mst: what is the name of that abstraction ? | 15:42 | |
could grep MoarVM source for it maybe ? | 15:43 | ||
mst | docs.libuv.org/en/v1.x/pipe.html | ||
MadcapJake | lizmat: I am in favor of disallowing vX.*.X for the reason that the amount of work for a dependency manager to support it far outweighs the supposed gain | 15:45 | |
ugexe | s11 says `"use" searches for modules matching a version prefix` | ||
MadcapJake | So far the use cases brought up here seem really trivial | 15:46 | |
can you actually turn a version into a regex directly? | 15:47 | ||
lizmat | mst: there appears to be an nqp::syncpipe | ||
MadcapJake | Thinking on it some more, I suppose the work involved isn't monumental but still seems superfluous | 15:48 | |
mst | lizmat: ooh, so that might turn out to be it | ||
MadcapJake | I feel like there should be a Version.absolute method to check if it's got whatevers or +'s in it | 15:57 | |
lizmat | MadcapJake: that feels like a hack | ||
MadcapJake | why? | 15:58 | |
lizmat | what I'm working on is that v2.3+ is actually syntactic sugar for v2.3..* | ||
which would actually be a Range object which you could smartmatch | |||
m: say v2.4 ~~ v2.2..* | |||
camelia | rakudo-moar 1512da: OUTPUT«True» | ||
lizmat | m: say v2.4 ~~ v2.2+ | ||
camelia | rakudo-moar 1512da: OUTPUT«True» | ||
lizmat | m: say v2.4 ~~ v2.2..* | ||
camelia | rakudo-moar 1512da: OUTPUT«True» | ||
lizmat | m: say (v2.2..*).WHAT | 15:59 | |
camelia | rakudo-moar 1512da: OUTPUT«(Range)» | ||
lizmat | m: say (v2.2.*).WHAT | ||
camelia | rakudo-moar 1512da: OUTPUT«(Version)» | ||
lizmat | m: say (v2.2+).WHAT # would say (Range) | ||
camelia | rakudo-moar 1512da: OUTPUT«(Version)» | ||
MadcapJake | so v2.2+ equiv to v2.2..* ? | 16:00 | |
lizmat | yes | ||
MadcapJake | what about v2.2.* would that be a Range too? | ||
lizmat | yes | 16:01 | |
then checking version dependencies would just fall out of smartmatch | |||
MadcapJake | so could I do $version !~~ Range to see if it's "absolute"? | ||
ugexe | if its an actual range type wouldnt `for v1.0.0..* { say $_; }` be expected to work? | 16:02 | |
lizmat | well, there's no Version.succ at the moment | ||
but conceivably, that could be defined, yes | |||
m: .say for v2..* | 16:03 | ||
camelia | rakudo-moar 1512da: OUTPUT«Method 'succ' not found for invocant of class 'Version' in block <unit> at /tmp/k4GwHsybhO line 1» | ||
MadcapJake | in gx-perl6, I will need to resolve dependency versions and I could shortcut that if I have an absolute version rather than one with +'s and *'s | ||
lizmat | and checking for an absolute version would be ~~ Version | ||
MadcapJake | oh so v2.2.* ~~ Version would return False? | ||
lizmat | yes | 16:04 | |
it would be a Range | |||
MadcapJake | seems kind of magical though, don't ya think? | ||
lizmat | so we can shout at people putting v2.* as the version of a module in the META6.JSON | ||
Version objects are highly magical already, I'm afraid | |||
16:05
skids joined
|
|||
lizmat | m: say v2.abc cmp v2.ab | 16:05 | |
camelia | rakudo-moar 1512da: OUTPUT«More» | ||
MadcapJake | well that could be solved by just having `method absolute { any(self.parts) ~~ Whatever && not self.plus }` | ||
lizmat | m: say v2.abc cmp v2.b | ||
camelia | rakudo-moar 1512da: OUTPUT«Less» | ||
lizmat | m: say v2.a cmp v2.bcd | ||
camelia | rakudo-moar 1512da: OUTPUT«Less» | ||
lizmat | MadcapJake: yes, that would be one solution, yes... | 16:06 | |
however, if we only allow * at the end, that would just be Version.plus | 16:07 | ||
MadcapJake | yeah that sounds good to me | ||
I really don't see the point in a * anywhere else | |||
tadzik | is 2.3 a valid Version.plus for 2.2.4? | 16:08 | |
(I hope not :o) | |||
lizmat | no, Version.plus just indicates whether you had a + at the end | ||
m: dd (v2.3+).plus | 16:09 | ||
camelia | rakudo-moar 1512da: OUTPUT«Bool::True» | ||
lizmat | m: dd (v2.3).plus | ||
camelia | rakudo-moar 1512da: OUTPUT«Bool::False» | ||
MadcapJake | m: v2.3+ ~~ v2.2.4 | ||
camelia | ( no output ) | ||
MadcapJake | m: say v2.3+ ~~ v2.2.4 | ||
camelia | rakudo-moar 1512da: OUTPUT«False» | ||
skids suspects there will eventually be a need for an array of ranges of Version many places they are used, so this all would just be a convenience. | 16:10 | ||
e.g. to skip a buggy release. | |||
MadcapJake | fwiw, I'm not aware of any semver model that allows for * equivalents anywhere but at the end of a version | 16:11 | |
ugexe | maybe Range should be a parameterized role so users can can `use v1.*.roll` | 16:12 | |
lizmat | that's why I want v2.3+ to be a Range, so you can use it like any other Range | ||
MadcapJake | but I do have an affinity to how npm does it: ~1.0.4 means "I installed 1.0.4 but you can upgrade any patch release" and ^1.0.4 means "I installed 1.0.4 but you can upgrade to any minor release" and * or 'x' means "any major release is fine" | 16:13 | |
ugexe | that seems to rely on semantic versions | 16:14 | |
MadcapJake | so maybe allowing v1.2+.4 would be cool for that "any minor release" case. This way you can be aware of what version you have *and* what's an acceptable upgrade path | 16:15 | |
ugexe: yeah it does but I just mean for inspiration, specifically in terms of allowing a + after any element of a version literal | |||
lizmat | well, that's a step further again from v1.2.*.4 | ||
MadcapJake | lizmat: maybe not further but a sidestep :) | 16:16 | |
lizmat | that would basically turn a version into a sequence of regexes | ||
Basically, my premise is that Version is now hacked into using for two functions: | |||
MadcapJake | lizmat: it would translate to a version v1.2 but allow you to pull the actual version via Str | 16:17 | |
correction: v1.2+ would be the actual version matcher | |||
lizmat | 1. specification of a fixed version, like in META6.JSON a module claiming to be v.1.2 | ||
2. specification of an acceptable version, like in META6.JSON in a depends specification | |||
I think these functiionalitiies are currentlly conflated | 16:18 | ||
MadcapJake | my $v = v1.2+.4; $v.Str #={'v1.2.4'}; $v ~~ v1.3 #={True}; # what I'm proposing | ||
lizmat | so the Str representation would not visualize the range aspect ? | 16:20 | |
MadcapJake | In that idea, I would say no because you're looking for Str value, what would visualizing the range accomplish? Having a Str value would allow you to create per-version anything (dir, files, hashes, etc) | 16:21 | |
lizmat | would v1.2.4 and v1.2+.4 be eqv ? | 16:25 | |
because that is using .Str comparison atm | |||
MadcapJake | I would say that ~~ should convert plus'd versions into ranges | 16:26 | |
lizmat | ~~ is not eqv | 16:27 | |
MadcapJake | hmm | 16:28 | |
m: say v1.2+ eqv v1.2 | 16:29 | ||
camelia | rakudo-moar 1512da: OUTPUT«False» | ||
MadcapJake | I'd say stick to that same semantics | ||
stmuk_ | lizmat: FYI I'm hoping to the R* release before you do the p6weekly | 16:30 | |
^ to do the | |||
lizmat | stmuk_: that would be great! | ||
stmuk_ | pl6anet.org/drop/rakudo-star-2016.04-RC2.tar.gz | 16:31 | |
but I'm on Pacific Time! | |||
lizmat | I'll prepare the P6W later today, will be travelling most of tomorrow, and then either very late on Mon or early on Tue do the P6W | ||
MadcapJake | although I *could* see eqv there being True but perhaps we don't want to change the semantics of `v1.2+ eqv v1.2` ? | ||
lizmat | well... I'm still not convinced keeping the two uses of Version in the same object, is a good idea in the long run | 16:32 | |
MadcapJake | lizmat: I think the two uses are connected though, (1) validation and (2) comparison | 16:33 | |
lizmat | see S11:547 | ||
synopsebot6 | Link: design.perl6.org/S11.html#line_547 | ||
stmuk_ | later might be better for the R* | ||
lizmat | "so :ver<6.2.3+> is short for :ver(v6.2.3 .. v6.2.*)" | 16:34 | |
so that actually states that it is a Range | |||
MadcapJake | lizmat: thanks for the Syn link, this is actually exactly what I was looking for yesterday :) | 16:36 | |
lizmat | stmuk_: noted :-) | 16:37 | |
MadcapJake | interesting that :ver(v1.2.1 | v1.3.4) is allowed too :) | 16:38 | |
lizmat | it's all just smartmatching, really :-) | ||
MadcapJake | i'm starting to see that :) | 16:39 | |
lizmat | m: say "foo" if v2.3 ~~ v1.2.1 | v2.2 | v2.3 | ||
camelia | rakudo-moar 1512da: OUTPUT«foo» | ||
skids | I think what this boils down to is that in a lot of cases where you need a group of versions, you also have one that is special -- e.g. the providing module's version or a preferred version. | ||
ugexe | m: use Test:ver({ 1 * 3 }); | 16:40 | |
camelia | ( no output ) | ||
MadcapJake | skids: that's true, that's the purpose behind my v1.2+.3 idea; it contains the installed version (v1.2.3) and the matcher (v1.2+) | 16:41 | |
lizmat: I would say that case #1 is really just a string, right? I don't see the point in separating the two when the first case is so simple. | 16:43 | ||
lizmat | MadcapJake: no, it's not just a string, unfortunately | 16:44 | |
MadcapJake | what's the difference between v1.2.4 and "1.2.4" | ||
lizmat | m: say "1.20.1" cmp "1.2.1" | 16:45 | |
camelia | rakudo-moar 1512da: OUTPUT«More» | ||
lizmat | m: say "1.10.1" cmp "1.2.1" | ||
camelia | rakudo-moar 1512da: OUTPUT«Less» | ||
lizmat | m: say v1.10.1 cmp v1.2.1 | ||
camelia | rakudo-moar 1512da: OUTPUT«More» | ||
lizmat | each component of the Version string is checked separately | ||
m: say v1.10 cmp v1.10.abcd | 16:46 | ||
camelia | rakudo-moar 1512da: OUTPUT«More» | ||
lizmat | that's because missing components get replaced by Int() 0, and numerics always are More than Str | ||
MadcapJake | ok, yeah. is that any different though from how you'd do cmp for a v1.2.*? | 16:51 | |
lizmat | actually, I think cmp for a version with a Whatever, is currently broken | 16:52 | |
16:52
hankache joined
|
|||
lizmat | and has been for a while afaics | 16:52 | |
MadcapJake | yeah seems so, does it just get turned into a 0? | ||
lizmat | hmmm... maybe it works out anyway... :-) | 16:54 | |
lizmat is getting tired | 16:55 | ||
too many short nights in a row | |||
MadcapJake isn't sure what the intended semantics of cmp'ing versions with *'s | 16:58 | ||
are* | 16:59 | ||
m: say v1.2.4 cmp v1.2.* # I would think this would return Same | 17:00 | ||
camelia | rakudo-moar 1512da: OUTPUT«More» | ||
MadcapJake | lizmat: have a good night then! ping me if you make any headway with this version stuff, I'm interested in how it all ends up | 17:02 | |
lizmat | MadcapJake: no rest for the wicked... ;-) | 17:04 | |
just expressing lack of being able to think straight from tiredness :-) | |||
MadcapJake | ahh! I know the feeling xD | ||
MadcapJake is off to lunch & | 17:05 | ||
awwaiid | I'm trying to debug the REPL.pm lifting of code out of nqp and into rakudo on the jvm. I want to sprinkle some nqp::say type debugging into nqp and rakudo. The nqp/ bit make / make install'd ok, but when I pop back out to rakudo and make I keep getting "Missing or wrong version of dependency 'gen/jvm/stage2/QAST.nqp'" -- any pointers? | 17:26 | |
timotimo | awwaiid: at some point things in precompilation blew up hugely when you had says in the wrong places | 17:28 | |
because the output ended up in files that weren't expecting to have debug stuff in them | |||
btw, you can use "note" in nqp code to output strings to stderr | |||
17:32
mst left
|
|||
awwaiid | ok, yes I did run into that before. What is a good way to reset? I did 'make clean' in rakudo and then make still has issues. According to git diff all my current debugging output is to stderr | 17:34 | |
timotimo | you may have to make clean; make install inside nqp | ||
awwaiid | ok, trying that | 17:35 | |
lizmat | rm -rf install | ||
might also help | |||
awwaiid | ok, I'll try that after this :) | ||
since it's complaining about stuff in gen/jvm, maybe I'll rm that stuff too | |||
(again, if other things don't work. one var at a time) | 17:36 | ||
psch | awwaiid: r-j is much more picky wrt left-over files, in my experience | 17:45 | |
i usually git clean -xdf before every rebuild | |||
Pod.pm is one that i often get complaints about, too | 17:46 | ||
dalek | kudo/nom: c066434 | leont++ | tools/build/Makefile- (4 files): Make perl 5 calls in Makefile more explicit |
18:17 | |
kudo/nom: 8a5b0be | leont++ | / (3 files): Try to avoid using perl5 in small commands |
|||
kudo/nom: 531a044 | leont++ | / (3 files): Convert create-moar-runner to perl 6 |
|||
kudo/nom: 13ea1a1 | leont++ | / (8 files): Use pure-perl6 harness |
|||
timotimo | *neat* | 18:18 | |
dalek | kudo/nom: 4232204 | lizmat++ | src/core/Any.pm: Make dd for lazy list not look like valid .perl |
||
lizmat | drink! | 18:29 | |
& | |||
19:03
cognominal joined
|
|||
timotimo | do we even actually need @autovivs for bless and BUILDALL | 19:40 | |
19:41
Skarsnik joined
|
|||
moritz | timotimo: iirc there's an obscure feature for initializing the attributes from a parent class | 20:59 | |
timotimo | yeah | ||
but is that actually implemented? | |||
moritz | Foo.new(x => 42, Bar{ x => 23 }) | 21:00 | |
timotimo | or just a performance drain? | ||
moritz | probably not | ||
but pre-nom it was iplemented, iirc | |||
timotimo | ugh | 21:01 | |
masak .oO( le prénom, il a été implémentée ) | 21:08 | ||
awwaiid | psch: thanks, git clean -xdf, while tedious, did the trick | 21:52 | |
dalek | kudo/generate_buildallplan_2: e76d070 | timotimo++ | src/ (3 files): get a tiny head-start on generating buildallplan code in CompilerServices |
22:17 | |
kudo/generate_buildallplan_2: 8d1725d | timotimo++ | src/Perl6/ (2 files): implement a lot more for code-genning BUILDALLPLAN. currently creates a setting that immediately crashes when it gets loaded. not sure why. |
|||
timotimo | jnthn: i think i need your help with this branch; i'm potentially using the MOP wrong or something like that, but i can't quite figure out what's going wrong | 22:41 | |
github.com/rakudo/rakudo/commit/8d1725daf5 - corresponding backtrace when trying to build the restricted setting |