Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_logs/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm Set by AlexDaniel on 12 June 2018. |
|||||||||||||||||||||||||||||||||||||||
00:27
mst left
00:34
mst joined,
mst left,
mst joined
00:39
Ven` joined
00:43
Ven` left
01:04
Kaypie left
01:05
lizmat left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: Kaiepi++ created pull request #2082: Remove <?before> token in token term:sym<multi_declarator> |
01:25 | |||||||||||||||||||||||||||||||||||||
01:51
fake_space_whale joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | nqp/grammar-update: a86d643b1a | 陈梓立++ | src/NQP/Grammar.nqp Remove <?before> token in token term:sym<multi_declarator> |
02:35 | |||||||||||||||||||||||||||||||||||||
nqp: tison1++ created pull request #484: Remove <?before> token in token term:sym<multi_declarator> |
02:36 | ||||||||||||||||||||||||||||||||||||||
03:00
Kaypie joined
03:53
MasterDuke left
04:11
Ven` joined
04:15
Ven` left
05:44
fake_space_whale left
05:58
fake_space_whale joined
06:12
fake_space_whale left
06:25
robertle joined,
nebuchadnezzar joined
07:44
lizmat joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | Files=1243, Tests=76209, 373 wallclock secs (16.13 usr 5.65 sys + 2633.27 cusr 253.78 csys = 2908.83 CPU) | 07:48 | |||||||||||||||||||||||||||||||||||||
07:58
ilogger2 joined
08:15
Ven` joined
08:17
pmurias joined
08:29
pmurias left
|
|||||||||||||||||||||||||||||||||||||||
samcv | ok i fixed the SEGV problems gonna need a nqp and rakudo bump | 09:52 | |||||||||||||||||||||||||||||||||||||
releasable6: status | |||||||||||||||||||||||||||||||||||||||
releasable6 | samcv, Next release in ≈4 days and ≈9 hours. 10 blockers. 0 out of 210 commits logged (⚠ 12 warnings) | ||||||||||||||||||||||||||||||||||||||
samcv, Details: gist.github.com/c7c25e2c27e24ff296...f2cfa5749d | |||||||||||||||||||||||||||||||||||||||
Geth | nqp: b939b50b00 | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/build/MOAR_REVISION [MoarVM Bump] 85bf30b0b In SCRef gc_free searc […] MoarVM bump brought: github.com/MoarVM/MoarVM/compare/2...g85bf30b0b |
09:54 | |||||||||||||||||||||||||||||||||||||
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...g85bf30b0b | |||||||||||||||||||||||||||||||||||||||
samcv | essentially the issue is that i recently changed the hash implementation so it's a singly linked list not doubly, so only stores pointers to the next hash handle not the previous | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: bfa8d37e3f | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/build/NQP_REVISION [NQP Bump] b939b50b0 [MoarVM Bump] 85bf30b0b I […] NQP bump brought: github.com/perl6/nqp/compare/2018....gb939b50b0 |
||||||||||||||||||||||||||||||||||||||
¦ rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....gb939b50b0 | |||||||||||||||||||||||||||||||||||||||
samcv | which exposed an issue in SCRef.c in the gc_free() function. For whatever reason the hash handle ends up in the wrong hash bucket. previously when it was dobuly linked it didn't matter if the hash handle was in a specific bucket or not. (well it could probably cause crashes honestly) | 09:55 | |||||||||||||||||||||||||||||||||||||
but it wouldn't happen except in rare cases. (like if the thing to be deleted were the first item in a bucket i would wager). in any case. the issue is fixed now because i just iterate through the scref hash and delete it when i find it | 09:56 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | cool | 09:57 | |||||||||||||||||||||||||||||||||||||
samcv | so i likely solved some less producable (or maybe producable?) crashes | ||||||||||||||||||||||||||||||||||||||
so it's good enough for release, though i'll try and fix the origin of the problem. even though the solution is non-ideal, i figure that it probably fixes other crashes to be a good enough reason that we can release it with my fix in it | 09:58 | ||||||||||||||||||||||||||||||||||||||
10:09
travis-ci joined
|
|||||||||||||||||||||||||||||||||||||||
travis-ci | NQP build failed. Aleks-Daniel Jakimenko-Aleksejev '[MoarVM Bump] 85bf30b0b In SCRef gc_free searc […] | 10:09 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/perl6/nqp/builds/404818883 github.com/perl6/nqp/compare/33e22...39b50b00b2 | |||||||||||||||||||||||||||||||||||||||
10:09
travis-ci left
10:13
robertle joined
|
|||||||||||||||||||||||||||||||||||||||
tbrowder_ | ref poster: “in the future” of the two choices sounds better to me... | 10:19 | |||||||||||||||||||||||||||||||||||||
lizmat just fixed a local spectest error by removing a Foo.pm6 from the system | 10:20 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | samcv: travis-ci.org/perl6/nqp/jobs/404818886#L577 | ||||||||||||||||||||||||||||||||||||||
samcv | yeah it should be fixed in moarvm master, just gonna wait for all travis to finish then you can bump again :p | 10:21 | |||||||||||||||||||||||||||||||||||||
lizmat | which means I'm down to 3 spectest: the in-loop (POST) one, a watch-path flapper (MacOS only) and a utf8-c8 one (also MacOS only) | ||||||||||||||||||||||||||||||||||||||
samcv | AlexDaniel: ok you can bump moarvm again | 10:30 | |||||||||||||||||||||||||||||||||||||
10:48
cognominal joined
10:54
travis-ci joined
|
|||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build failed. Aleks-Daniel Jakimenko-Aleksejev '[NQP Bump] b939b50b0 [MoarVM Bump] 85bf30b0b I […] | 10:54 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/404818996 github.com/rakudo/rakudo/compare/d...a8d37e3ffe | |||||||||||||||||||||||||||||||||||||||
10:54
travis-ci left
|
|||||||||||||||||||||||||||||||||||||||
buggable | [travis build above] ☠ Did not recognize some failures. Check results manually. | 10:54 | |||||||||||||||||||||||||||||||||||||
10:59
stmuk joined
11:01
Zoffix joined
|
|||||||||||||||||||||||||||||||||||||||
Zoffix | m: class { has $!bar is required(Any) } | 11:01 | |||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> 'is required' must be Cool at <tmp>:1 |
||||||||||||||||||||||||||||||||||||||
Zoffix | That's a weird choice... | ||||||||||||||||||||||||||||||||||||||
lizmat | I have no idea where that comes from, tbh | 11:02 | |||||||||||||||||||||||||||||||||||||
Zoffix | It's from the same trait where the block for privates was | ||||||||||||||||||||||||||||||||||||||
m: class { has $!bar is required(42) } | 11:03 | ||||||||||||||||||||||||||||||||||||||
camelia | ===SORRY!=== Object of type Int in QAST::WVal, but not in SC |
||||||||||||||||||||||||||||||||||||||
Zoffix | uh | ||||||||||||||||||||||||||||||||||||||
lizmat | Zoffix: I meant, the reasoning for only allowing Cool | ||||||||||||||||||||||||||||||||||||||
Zoffix | s: Attribute.new, 'set_required' | 11:04 | |||||||||||||||||||||||||||||||||||||
SourceBaby | Zoffix, Something's wrong: ERR: ./perl6-m: 2: exec: /home/zoffix/services/sourceable/building-perl6/install/bin/moar: not found | ||||||||||||||||||||||||||||||||||||||
lizmat | Zoffix: traits.pm | ||||||||||||||||||||||||||||||||||||||
Zoffix | .ask jnthn do you know why `is required` appears to accept various numeric values? It restricts to Cool and has `$attr.set_required(nqp::istype($required,Bool) ?? +$required !! $required)`... Is there any meaning other than "yes" and "no"? Wanting to change it to Any type and boolify it | 11:08 | |||||||||||||||||||||||||||||||||||||
yoleaux | Zoffix: I'll pass your message to jnthn. | ||||||||||||||||||||||||||||||||||||||
lizmat | Zoffix: afaik, "is required" is not something jnthn was really involved in, it was more timotimo and moritz I believe | 11:10 | |||||||||||||||||||||||||||||||||||||
timotimo | you could have put an error message there, for example? | ||||||||||||||||||||||||||||||||||||||
lizmat got burned putting in an error message there already :-) | 11:11 | ||||||||||||||||||||||||||||||||||||||
11:11
Ven` left
|
|||||||||||||||||||||||||||||||||||||||
Zoffix | m: class { has $!bar is required('nope') } | 11:11 | |||||||||||||||||||||||||||||||||||||
camelia | ===SORRY!=== Object of type Str in QAST::WVal, but not in SC |
||||||||||||||||||||||||||||||||||||||
timotimo | ouchies :) | ||||||||||||||||||||||||||||||||||||||
Zoffix | :) | ||||||||||||||||||||||||||||||||||||||
.tell jnthn nm, looks like it's for error message, but it's broken ATM: colabti.org/irclogger/irclogger_log...-07-17#l88 | 11:12 | ||||||||||||||||||||||||||||||||||||||
yoleaux | Zoffix: I'll pass your message to jnthn. | ||||||||||||||||||||||||||||||||||||||
Zoffix | R#2084 | ||||||||||||||||||||||||||||||||||||||
synopsebot | R#2084 [open]: github.com/rakudo/rakudo/issues/2084 `is required` can take an error message but currently broken | ||||||||||||||||||||||||||||||||||||||
Geth | nqp: 74f247d7dd | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/build/MOAR_REVISION [MoarVM Bump] 0daa14c87 Make sure declarations […] MoarVM bump brought: github.com/MoarVM/MoarVM/compare/2...g0daa14c87 |
11:15 | |||||||||||||||||||||||||||||||||||||
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...g0daa14c87 | |||||||||||||||||||||||||||||||||||||||
rakudo: 20b1756a78 | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/build/NQP_REVISION [NQP Bump] 74f247d7d [MoarVM Bump] 0daa14c87 M […] NQP bump brought: github.com/perl6/nqp/compare/2018....g74f247d7d |
|||||||||||||||||||||||||||||||||||||||
rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....g74f247d7d 7c349b7e80 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/BOOTSTRAP.nqp |
|||||||||||||||||||||||||||||||||||||||
lizmat pulls, configures, builds, installs and spectests | 11:16 | ||||||||||||||||||||||||||||||||||||||
|Tux| |
|
11:22 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | Zoffix++ # changelogging own commits | 11:26 | |||||||||||||||||||||||||||||||||||||
11:30
travis-ci joined
|
|||||||||||||||||||||||||||||||||||||||
travis-ci | NQP build passed. Aleks-Daniel Jakimenko-Aleksejev '[MoarVM Bump] 0daa14c87 Make sure declarations […] | 11:30 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/perl6/nqp/builds/404850682 github.com/perl6/nqp/compare/b939b...f247d7dd8e | |||||||||||||||||||||||||||||||||||||||
11:30
travis-ci left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | Zoffix: fwiw, the "error message" functionality of "is required" was never documented, and apparently also not tested | 11:43 | |||||||||||||||||||||||||||||||||||||
although I'm pretty sure it *has* worked at one time, otherwise I wouldn't have added it | 11:44 | ||||||||||||||||||||||||||||||||||||||
timotimo | i think maybe my claim that "you could have put an error message there" sounded much more assured than it was %) | 11:47 | |||||||||||||||||||||||||||||||||||||
lizmat | Zoffix: got a fix for "is required" | 11:51 | |||||||||||||||||||||||||||||||||||||
Zoffix | lizmat++ | 11:59 | |||||||||||||||||||||||||||||||||||||
lizmat | testing a better fix now :-) | 12:00 | |||||||||||||||||||||||||||||||||||||
12:00
Ven` joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | AlexDaniel: the docs/release_guide currently states: Remind people of the upcoming release, invite people to | 12:05 | |||||||||||||||||||||||||||||||||||||
update the ChangeLog file, update the ROADMAP, etc. | |||||||||||||||||||||||||||||||||||||||
perhaps it would be handy to put a link to the ChangeLog wiki there (so people can find that easily) | |||||||||||||||||||||||||||||||||||||||
Zoffix | And in the bot's notices: colabti.org/irclogger/irclogger_log...07-16#l382 | 12:06 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | ok | ||||||||||||||||||||||||||||||||||||||
AlexDaniel does it | |||||||||||||||||||||||||||||||||||||||
lizmat | AlexDaniel++ | ||||||||||||||||||||||||||||||||||||||
AlexDaniel filed R#2085 | 12:08 | ||||||||||||||||||||||||||||||||||||||
synopsebot | R#2085 [open]: github.com/rakudo/rakudo/issues/2085 [easy to resolve][meta] Move ROADMAP items into tickets | ||||||||||||||||||||||||||||||||||||||
12:15
travis-ci joined
|
|||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build passed. Aleks-Daniel Jakimenko-Aleksejev '[NQP Bump] 74f247d7d [MoarVM Bump] 0daa14c87 M […] | 12:15 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/404850739 github.com/rakudo/rakudo/compare/b...b1756a7892 | |||||||||||||||||||||||||||||||||||||||
12:15
travis-ci left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: b5892dd85d | (Aleks-Daniel Jakimenko-Aleksejev)++ | docs/release_guide.pod Don't mention ROADMAP in the release guide See R#2085 github.com/rakudo/rakudo/issues/2085 |
12:19 | |||||||||||||||||||||||||||||||||||||
rakudo: b6cc7168ad | (Aleks-Daniel Jakimenko-Aleksejev)++ | docs/release_guide.pod Link to ChangeLog-Draft page and explain it |
|||||||||||||||||||||||||||||||||||||||
synopsebot | R#2085 [open]: github.com/rakudo/rakudo/issues/2085 [easy to resolve][meta] Move ROADMAP items into tickets | ||||||||||||||||||||||||||||||||||||||
12:21
Zoffix left
12:27
releasable6 joined,
ChanServ sets mode: +v releasable6
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat: done, I think | 12:27 | |||||||||||||||||||||||||||||||||||||
lizmat | AlexDaniel++ # yeah thanks, working on adding commits now | ||||||||||||||||||||||||||||||||||||||
Geth | ¦ rakudo: jnthn self-unassigned “MVMHash representation requires MVMString keys” rescalar regression github.com/rakudo/rakudo/issues/2056 | 12:32 | |||||||||||||||||||||||||||||||||||||
¦ rakudo: jnthn self-unassigned `Cannot call method 'ACCEPTS' on a null object` in Slang::SQL github.com/rakudo/rakudo/issues/2080 | |||||||||||||||||||||||||||||||||||||||
jnthn | Unassigned since the bugs are fixed, but they're testneeded still, but it doesn't have to be me who adds tests :) | 12:33 | |||||||||||||||||||||||||||||||||||||
Geth | roast: d34d852ab6 | (Elizabeth Mattijsen)++ | S12-class/attributes-required.t Added test for "is required($reason)" |
12:45 | |||||||||||||||||||||||||||||||||||||
12:54
j3nnn1 joined
12:56
buggable joined,
ChanServ sets mode: +v buggable
13:03
Ven` left
13:09
Ven` joined
13:14
travis-ci joined
|
|||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Make "is required("reason")" work (again)' | 13:14 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/404870732 github.com/rakudo/rakudo/compare/2...349b7e8098 | |||||||||||||||||||||||||||||||||||||||
13:14
travis-ci left
13:16
brrt joined
13:25
skids joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 7a7e5e96fe | (Elizabeth Mattijsen)++ | src/Perl6/World.nqp Hide generated BUILDALL from backtraces It was showing up in "attribute is required" stack traces. Since there is nothing to see there, as it is all generated code, it is best not to show it to people at all (unless you use --ll-exception of course). |
13:34 | |||||||||||||||||||||||||||||||||||||
13:46
tbrowder_ left
13:47
tbrowder_ joined
14:05
fake_space_whale joined
14:19
brrt left
14:48
pmurias joined
|
|||||||||||||||||||||||||||||||||||||||
releasable6 | Next release in ≈4 days and ≈3 hours. 10 blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft | 15:00 | |||||||||||||||||||||||||||||||||||||
15:06
pmurias left,
pmurias joined
15:11
pmurias left
15:22
pmurias joined
15:34
pmurias left
15:35
pmurias joined
15:39
pmurias left
15:55
pmurias joined
15:56
brrt joined
16:03
brrt left
16:06
robertle left
16:48
perlpilot joined
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat++ | 16:48 | |||||||||||||||||||||||||||||||||||||
17:11
PufferBot joined
18:20
pmurias left
18:47
Ven` left
19:22
pmurias joined
19:30
japhb__ joined,
japhb__ left
19:39
brrt joined,
pmurias left
19:51
pmurias joined
20:02
brrt left
|
|||||||||||||||||||||||||||||||||||||||
Geth | nqp/nqp-in-the-browser: b42996b29c | (Paweł Murias)++ | src/vm/js/nqp-runtime/runtime.js [js] Add support for loading compiled NQP code in the browser |
20:13 | |||||||||||||||||||||||||||||||||||||
nqp/nqp-in-the-browser: e298dd68cf | (Paweł Murias)++ | src/vm/js/nqp-runtime/browser.js [js] Make nqp::stderr and nqp::stdout output to console.error and console.log |
|||||||||||||||||||||||||||||||||||||||
b2gills | Is it intentional that the iterator for `Range.roll(*)` has a native `int` for `$!min`? (same for `Range.roll(42)`) | 20:14 | |||||||||||||||||||||||||||||||||||||
I ask because some code I'm writing works for `Range.roll() xx *, but not for `Range.roll(*)` | |||||||||||||||||||||||||||||||||||||||
20:14
Ven`` joined
20:15
perlpilot left
|
|||||||||||||||||||||||||||||||||||||||
timotimo | that doesn't sound right. doesn't it switch to an Int version when it's outside of the range? | 20:16 | |||||||||||||||||||||||||||||||||||||
b2gills | github.com/rakudo/rakudo/commit/6e...d4e8be2c40 | ||||||||||||||||||||||||||||||||||||||
timotimo | by "that doesn't sound right" i mean "looks like you found a bug" | ||||||||||||||||||||||||||||||||||||||
b2gills | The previous code was `gather loop { take self.roll }` | 20:17 | |||||||||||||||||||||||||||||||||||||
It only checks that it `$!is-int` | |||||||||||||||||||||||||||||||||||||||
timotimo | yeah i think that should be fixed | ||||||||||||||||||||||||||||||||||||||
lizmat | b2gills: is there a ticket for it already ? | 20:34 | |||||||||||||||||||||||||||||||||||||
yoleaux | 18:05Z <Zoffix> lizmat: do you remember what was the usecase for .toggle? I need something nice and awesome for a 6.d teaser poster | ||||||||||||||||||||||||||||||||||||||
b2gills | I have no idea | 20:35 | |||||||||||||||||||||||||||||||||||||
lizmat | b2gills: sorry for the confusion: did you make a ticket already ? | ||||||||||||||||||||||||||||||||||||||
b2gills | Nope, was going to ask for your input first | 20:36 | |||||||||||||||||||||||||||||||||||||
lizmat | I think this is from the time that "is-int" (not the lowercase) actually meant it's in native integer range | 20:38 | |||||||||||||||||||||||||||||||||||||
b2gills | .pick(42) has the same issue | ||||||||||||||||||||||||||||||||||||||
lizmat | same reason | 20:39 | |||||||||||||||||||||||||||||||||||||
b2gills: please make a ticket, will assign it to me | 20:41 | ||||||||||||||||||||||||||||||||||||||
b2gills | I actually didn't test .pick(42). I was looking at the code, and it also uses a native int | ||||||||||||||||||||||||||||||||||||||
20:56
skids left
|
|||||||||||||||||||||||||||||||||||||||
b2gills | github.com/rakudo/rakudo/issues/2090 | 20:59 | |||||||||||||||||||||||||||||||||||||
lizmat | b2gills: thanks! | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 6ad096c8a6 | (Elizabeth Mattijsen)++ | src/core/Range.pm6 Decont min/max on Range creation Since they're immutable, there's no reason not to. And in some places that saves an awkward (repeated) decont. |
21:00 | |||||||||||||||||||||||||||||||||||||
b2gills | I can see `.pick` having a `int` check, but since `(^(2**12*)).roll(*)` works, and works well, I think it may be as simple as s/int/Int/ for the .roll(*) and .roll(42) cases | 21:04 | |||||||||||||||||||||||||||||||||||||
^(2**128) | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 806752fb54 | (Elizabeth Mattijsen)++ | src/core/Range.pm6 Abstract check for Range being inside native integer range |
21:25 | |||||||||||||||||||||||||||||||||||||
21:38
MasterDuke joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: b30800c8ec | (Elizabeth Mattijsen)++ | src/core/Range.pm6 Fix Range.roll(*)/roll(N)/pick(N) wrt big ints For no apparent reason, native ints were used internally for some value keeping. Fixes R#2090 |
21:39 | |||||||||||||||||||||||||||||||||||||
synopsebot | R#2090 [open]: github.com/rakudo/rakudo/issues/2090 Range.roll(*) doesn't work with large minimums | ||||||||||||||||||||||||||||||||||||||
lizmat | b2gills: ^^^ | ||||||||||||||||||||||||||||||||||||||
lizmat calls it a day& | 21:58 | ||||||||||||||||||||||||||||||||||||||
22:23
Zoffix joined
|
|||||||||||||||||||||||||||||||||||||||
Zoffix | Is there something good I can read to learn the regex stuff? Like the "NFA", "Epsilon", "Fate", "to edge", "state"... all these things. | 22:23 | |||||||||||||||||||||||||||||||||||||
jnthn | Yes, read up on finite automaton | 22:26 | |||||||||||||||||||||||||||||||||||||
Which will get you everything except "fate" | |||||||||||||||||||||||||||||||||||||||
Zoffix | Thanks. | ||||||||||||||||||||||||||||||||||||||
jnthn | And fate = an edge in the state machine that indicates a proto regex or alternation we are picking as a result | 22:27 | |||||||||||||||||||||||||||||||||||||
Zoffix | huggable: fate :is: fate = an edge in the state machine that indicates a proto regex or alternation we are picking as a result | 22:28 | |||||||||||||||||||||||||||||||||||||
huggable | Zoffix, Added fate as fate = an edge in the state machine that indicates a proto regex or alternation we are picking as a result | ||||||||||||||||||||||||||||||||||||||
jnthn | Which will probably make more sense after reading up on automta | ||||||||||||||||||||||||||||||||||||||
Zoffix | Cool. | ||||||||||||||||||||||||||||||||||||||
:) | |||||||||||||||||||||||||||||||||||||||
TimToady is currently working on returning multilevel fates from the NFA as STD used to do, but it's quite the brain burner... | 22:38 | ||||||||||||||||||||||||||||||||||||||
22:39
Ven`` left
|
|||||||||||||||||||||||||||||||||||||||
MasterDuke | Zoffix: have you read Friedl's book, Mastering Regular Expressions? it's one of two programming reference books i've read cover to cover (the other being Programming Perl (twice)) | 22:41 | |||||||||||||||||||||||||||||||||||||
yoleaux | 12:39Z <AlexDaniel> MasterDuke: you now have a commit bit for MoarVM repo \o/ | ||||||||||||||||||||||||||||||||||||||
MasterDuke | infinite cosmic power! | 22:42 | |||||||||||||||||||||||||||||||||||||
[Coke] | itty bitty memory footprint | 22:43 | |||||||||||||||||||||||||||||||||||||
jnthn: I feel like I might be able to abuse it with CALLER somehow. :P | |||||||||||||||||||||||||||||||||||||||
(ww) | |||||||||||||||||||||||||||||||||||||||
Zoffix | MasterDuke: nope | 22:44 | |||||||||||||||||||||||||||||||||||||
MasterDuke: so you know all those terms from that book? | |||||||||||||||||||||||||||||||||||||||
MasterDuke | [Coke]: ah, you too watched some disney ~25 years ago | 22:45 | |||||||||||||||||||||||||||||||||||||
Zoffix | 544 pages.. ain't nobody got time for that | ||||||||||||||||||||||||||||||||||||||
MasterDuke | Zoffix: some of them. i definitely felt it helped me understand regexes at a deeper level than just what syntax does my current programming language use | 22:47 | |||||||||||||||||||||||||||||||||||||
a lot (i think, don't remember exactly) of those pages are in-depth descriptions of how they | |||||||||||||||||||||||||||||||||||||||
Zoffix | I bet it's not that complex once you get past all the lofty waffle like "self-propelled" "finite state" and "automata" | ||||||||||||||||||||||||||||||||||||||
MasterDuke | 're implemented in a couple different languages and the differences in syntax and capability | 22:48 | |||||||||||||||||||||||||||||||||||||
[Coke] | MasterDuke: that wasn't 25 years ago it, it wa... oh my god. | ||||||||||||||||||||||||||||||||||||||
MasterDuke | which of course isn't really required reading if you're just interested in the theory part | ||||||||||||||||||||||||||||||||||||||
[Coke]: that was my reaction also | 22:49 | ||||||||||||||||||||||||||||||||||||||
[Coke] | I remember going to see it in the theatre at college. :| | ||||||||||||||||||||||||||||||||||||||
22:50
Zoffix left
|
|||||||||||||||||||||||||||||||||||||||
jnthn | TimToady: I've been pondering it a bit. I wondered about introducing some kind of object (as a REPR) that holds the current parse state, and various ops to interrogate it | 22:50 | |||||||||||||||||||||||||||||||||||||
TimToady: And it can keep hold of what it already figured out | |||||||||||||||||||||||||||||||||||||||
And we're not trying to shuffle it through some relatively narrow interface | 22:51 | ||||||||||||||||||||||||||||||||||||||
TimToady | I've been thinking similar thoughts | 22:52 | |||||||||||||||||||||||||||||||||||||
one important thing is that we need to keep names rather than just fate numbers, I think | |||||||||||||||||||||||||||||||||||||||
since we need the names anyway | |||||||||||||||||||||||||||||||||||||||
jnthn | Also that maybe we want to stop flattening subrule NFAs into the overall NFA and instead "invoke" them | ||||||||||||||||||||||||||||||||||||||
TimToady | and the names work even when other fate numbering systems are incorporated | 22:53 | |||||||||||||||||||||||||||||||||||||
jnthn | Though we need to be a bit careful in various ways on that | ||||||||||||||||||||||||||||||||||||||
TimToady | or there needs to be "universe tree" of possibilities for each NFA, and then the numbers pick from that | ||||||||||||||||||||||||||||||||||||||
jnthn | Though it might massively decrease memory footprint too | ||||||||||||||||||||||||||||||||||||||
TimToady | at each level you can get ties as well | ||||||||||||||||||||||||||||||||||||||
jnthn | eeek, yes | ||||||||||||||||||||||||||||||||||||||
I didn't really get past thinking through the data logistics :) | 22:54 | ||||||||||||||||||||||||||||||||||||||
TimToady | originally I was just going to assign everything a unique fate number, but that doesn't work so well at deserialize time | ||||||||||||||||||||||||||||||||||||||
the universe tree can be reused, and the fate tree can be tail-reffed such that each step just follows a link to the next level | 22:55 | ||||||||||||||||||||||||||||||||||||||
that's all assuming we still want to run the NFA at every step, though there are also schemes where we cache through a trie for commonly seen longest tokens and just remember the fate tree for specific matches | 22:56 | ||||||||||||||||||||||||||||||||||||||
but my gut feel is we should make the NFAs faster first | |||||||||||||||||||||||||||||||||||||||
jnthn | Probably, yes | 22:57 | |||||||||||||||||||||||||||||||||||||
TimToady | another approach on the ties business is to assume that the first match is likeliest and throw away the less likely info | ||||||||||||||||||||||||||||||||||||||
(as we currently throw away all the info) | |||||||||||||||||||||||||||||||||||||||
and just re-NFA at the lower level if something unlikely happens | |||||||||||||||||||||||||||||||||||||||
though there are spots in the grammar that might rely rather heavily on rejecting the LTM | |||||||||||||||||||||||||||||||||||||||
jnthn | EXPR for sure | 22:58 | |||||||||||||||||||||||||||||||||||||
TimToady | and if not in our grammar, maybe in someone else's | ||||||||||||||||||||||||||||||||||||||
jnthn | It wants to know there's no infixish | ||||||||||||||||||||||||||||||||||||||
So it can stop expr parsing | |||||||||||||||||||||||||||||||||||||||
TimToady | so if we can efficiently generate and keep the whole tree, that would be more scalable, but that's a big if | 22:59 | |||||||||||||||||||||||||||||||||||||
jnthn | Yeah, I fear that's subject to combinatorial explosions | ||||||||||||||||||||||||||||||||||||||
TimToady | at that point, however, if you can cache and reuse the common trees, it might be a win | 23:00 | |||||||||||||||||||||||||||||||||||||
or just figure out where it's a win, and only do it there, somehow | |||||||||||||||||||||||||||||||||||||||
jnthn | We do plenty of dynamic adaptation elsewhere :) | ||||||||||||||||||||||||||||||||||||||
TimToady | other things that need to happen eventually is figure out which NFAs make sense to turn into a DFA | 23:01 | |||||||||||||||||||||||||||||||||||||
but that's not so important for parsing | |||||||||||||||||||||||||||||||||||||||
except maybe for the first char or so of each token could use something trie-ish | |||||||||||||||||||||||||||||||||||||||
to cut the statespace way down | |||||||||||||||||||||||||||||||||||||||
jnthn | Yes; did you see my recent-ish patch that shaved 13% off the time we spend in NFAs by storing all the literal grapheme matches in codepoint order, then binary searching them? | 23:02 | |||||||||||||||||||||||||||||||||||||
The infix category is *huge* but almost entirely starts with a literal | 23:03 | ||||||||||||||||||||||||||||||||||||||
So it made the first char match of that O(log(n)) in the number of infixes, not O(n) | |||||||||||||||||||||||||||||||||||||||
TimToady | I saw you talking about that, and thought maybe we could do even better with the ASCII subset indexing into a table | ||||||||||||||||||||||||||||||||||||||
but certainly we have things outside of ASCII too | |||||||||||||||||||||||||||||||||||||||
jnthn | Yeah, true. | ||||||||||||||||||||||||||||||||||||||
TimToady | there are also adaptive caches that put the most recent things into more accessible places | 23:04 | |||||||||||||||||||||||||||||||||||||
that kinda depends on the distribution though | |||||||||||||||||||||||||||||||||||||||
and maybe we'd already get that effect with normal cache lines | 23:05 | ||||||||||||||||||||||||||||||||||||||
a lot of my caching wisdom is from the dark ages where all memory accesses were equally expensive :) | |||||||||||||||||||||||||||||||||||||||
jnthn | That's way untrue by now, alas. :) | 23:06 | |||||||||||||||||||||||||||||||||||||
TimToady | but right now my goal is not repeating the identical lexer scan four or five times at each spot... | 23:07 | |||||||||||||||||||||||||||||||||||||
jnthn | One other thing I realized that may help some grammars: some tokens are 100% declarative, and so we needn't call them in theory. In practice, though, they may have action methods. But the new spesh plugin stuff means we can look into that and cache that by actions type (which is presumably not very polymorphic) and then just let the NFA tell us the lot matches. :) | 23:08 | |||||||||||||||||||||||||||||||||||||
TimToady | we can also skip over some amount of literal rematching knowing what the longlit match was | 23:10 | |||||||||||||||||||||||||||||||||||||
jnthn | But mroe simply than that, it'd be good if we could for decalrative prefixes with not capturing etc. to get a point to "jump" directly to | ||||||||||||||||||||||||||||||||||||||
TimToady | what I just said :) | ||||||||||||||||||||||||||||||||||||||
jnthn | Well, except we could potentially do it for \w* too :) | 23:11 | |||||||||||||||||||||||||||||||||||||
Not just long lit | |||||||||||||||||||||||||||||||||||||||
TimToady | true, though generally you're into capture stuff by then | ||||||||||||||||||||||||||||||||||||||
we don't have many keywords with optional endings... | 23:12 | ||||||||||||||||||||||||||||||||||||||
23:12
test567 joined
|
|||||||||||||||||||||||||||||||||||||||
TimToady | well, unless you count \s+ | 23:12 | |||||||||||||||||||||||||||||||||||||
jnthn | For our grammar yes, though maybe that's less true for user ones | 23:14 | |||||||||||||||||||||||||||||||||||||
TimToady | but something would actually have to record the position en passant if that's not the end of the token | ||||||||||||||||||||||||||||||||||||||
23:14
test567 left
|
|||||||||||||||||||||||||||||||||||||||
jnthn | Yeah. To the degree I pondered it (not a huge deal), I thought about an edge that just records taht | 23:15 | |||||||||||||||||||||||||||||||||||||
23:16
pmurias left
|
|||||||||||||||||||||||||||||||||||||||
jnthn | But then I wasn't sure how well we can correlate it to the eventual fate | 23:17 | |||||||||||||||||||||||||||||||||||||
Then figured that's probably the same problem as the sub-fates | |||||||||||||||||||||||||||||||||||||||
TimToady | each of those needs to correlate with its immediately outer fate | ||||||||||||||||||||||||||||||||||||||
we get away with the longlit correlating to the final fate currently because we throw away the subfates | 23:18 | ||||||||||||||||||||||||||||||||||||||
and usually the longlit is the same for subrules, though not necessarily | 23:19 | ||||||||||||||||||||||||||||||||||||||
if all subrules are totally literal, we can recombine and continue litting | 23:20 | ||||||||||||||||||||||||||||||||||||||
(as currently coded) | |||||||||||||||||||||||||||||||||||||||
jnthn | Ooh, yes. Tricky. | 23:21 | |||||||||||||||||||||||||||||||||||||
TimToady | but in that case we probably don't need the longlit disambiguator for the subrules anyway | ||||||||||||||||||||||||||||||||||||||
anyway, we should structure the tree such that whenever we follow a pointer to the next bit, that sub-tree looks identical to what the lexer would've returned if we ran it again | 23:25 | ||||||||||||||||||||||||||||||||||||||
jnthn | Indeed | 23:27 | |||||||||||||||||||||||||||||||||||||
We can probably even have a debugging mode that *does* run it again and checks | |||||||||||||||||||||||||||||||||||||||
TimToady | as for data structure, I was gonna hijack states[0] for most of that, but if we want to do something more official, I'm happy to let someone else write the new opcode :) | ||||||||||||||||||||||||||||||||||||||
currently the only real constraint on states[0] (in the C code) is that we use .elems to presize the fates array; everything else is done in nqp, so it could be retargeted by nqp code that stays sufficiently in sync with the bootstrap | 23:29 | ||||||||||||||||||||||||||||||||||||||
I sound pretty smart when I talk about the individual bits of it, but my aged brain complains about trying to keep everything in there at once :) | 23:31 | ||||||||||||||||||||||||||||||||||||||
TimToady is an expert on various pieces of the elephant, taken one at a time... | 23:33 | ||||||||||||||||||||||||||||||||||||||
timotimo | don't overexpert yourself | 23:34 | |||||||||||||||||||||||||||||||||||||
TimToady | when I actually try to construct the elephant in the room, everything goes kinda gray... | 23:35 | |||||||||||||||||||||||||||||||||||||
.oO(Life is a process for turning gray matter into gray hairs.) |
23:36 | ||||||||||||||||||||||||||||||||||||||
jnthn | :) | ||||||||||||||||||||||||||||||||||||||
I guess "first, make it work" :) | 23:37 | ||||||||||||||||||||||||||||||||||||||
TimToady | then figure out a way to turn the amoeba into an elephant... | 23:38 | |||||||||||||||||||||||||||||||||||||
okay, well, unless someone volunteers to figger out the fancy repr-based way, I'll continue to think about prototyping with arrays of arrays of arrays, and we can translate to real objects later | 23:43 | ||||||||||||||||||||||||||||||||||||||
jnthn | That works for me | 23:44 | |||||||||||||||||||||||||||||||||||||
TimToady is assuming that if he pokes extra arrays into states[0][0] they'll get serialized... | |||||||||||||||||||||||||||||||||||||||
jnthn | My brane is pretty occupied with optimizer stuff for the moment :) | ||||||||||||||||||||||||||||||||||||||
Should do | 23:45 | ||||||||||||||||||||||||||||||||||||||
TimToady | then I will not only presume it, but also postsume it | ||||||||||||||||||||||||||||||||||||||
even in the current setup, states[0][0] is unused, since fates start at 1 | |||||||||||||||||||||||||||||||||||||||
(for protos) | 23:46 | ||||||||||||||||||||||||||||||||||||||
anyway, thanks for the thinks | 23:47 | ||||||||||||||||||||||||||||||||||||||
jnthn | Welcome :) | 23:49 | |||||||||||||||||||||||||||||||||||||
I'm kinda interested in this area also, since I need to get the Comma IDE parser faster also :) | 23:50 | ||||||||||||||||||||||||||||||||||||||
Though that's really a bear of little brain at the moment :) | |||||||||||||||||||||||||||||||||||||||
(It doesn't even do an NFA.) | 23:51 |