FROGGS_ | o/ | 07:12 | |
[Tux] | This is Rakudo version 2016.10-57-g4829f1c built on MoarVM version 2016.10-15-g715e39a | 07:38 | |
csv-ip5xs 3.283 | |||
test 14.585 | |||
test-t 6.813 | |||
csv-parser 17.030 | |||
FROGGS | jnthn: why dont we have the highwater here? | 08:41 | |
m: grammar G { token TOP { a+ } }; say G.subparse("aaaaaabbbbbb"); say $/.CURSOR.'!highwater'() | |||
camelia | rakudo-moar 4829f1: OUTPUT«「aaaaaa」0» | ||
dalek | ast: f0d17aa | niner++ | / (3 files): Another test for nested packages |
08:52 | |
arnsholt | FROGGS: I think you need a dba to set the highwater mark | 09:05 | |
(Grepping through the sources, looks like that's what sets it) | |||
lizmat | git diff | ||
oops | |||
jnthn | - A bug | 09:07 | |
+ A fix | |||
lizmat | if it only were that easy :-) | ||
arnsholt | =D | ||
lizmat gives up on an opt that would give Str.match another 1% | 09:08 | ||
jnthn | FROGGS: Only certain things update the highwater. | ||
FROGGS: Of note, protoregexes | |||
FROGGS: Also alternations | |||
lizmat | runs fine in a script, breaks the build with "Invocant requires a type object of type List, but an object instance was passed" | ||
jnthn | They're basically the places where we can also produce highexpect | ||
lizmat | weird | ||
jnthn | Since the point is the two are "in sync" (e.g. the point we mark is the point that we expected those things) | 09:09 | |
FROGGS | arnsholt: ahh, that reminds me that we dont have dba yet :o) | 09:10 | |
arnsholt: (outside of nqp that is) | |||
arnsholt | jnthn: I still can't quite get it to set the highwater, even with an alternation. Do you have an example that sets it? | 09:22 | |
jnthn | m: "abc" ~~ /. [ [d|e] || { say $/.CURSOR."!highwater"() }]/ | 09:25 | |
camelia | rakudo-moar 4829f1: OUTPUT«1» | ||
jnthn | m: "abc" ~~ /.. [ [d|e] || { say $/.CURSOR."!highwater"() }]/ | ||
camelia | rakudo-moar 4829f1: OUTPUT«2» | ||
dalek | kudo/nom: 04b6da1 | lizmat++ | src/core/Str.pm: The list of iterators was from a previous idea In the new form, we only ever have 2 iterators: one that post processes cursor values, and one that does not. So make them proper named classes for better optimizability. |
10:12 | |
lizmat | m: class A { class B {} }; use MONKEY; augment class A { class B { } } # buglet ? | 10:16 | |
camelia | rakudo-moar 4829f1: OUTPUT«===SORRY!===Could not locate compile-time value for symbol B» | ||
lizmat | or at least LTA error ? | ||
jnthn | No idea what it thinks it's doing there :) | 10:18 | |
lizmat | rakudobug it to be sure ? | 10:20 | |
jnthn | Sure, something's going on | 10:27 | |
moritz | should probably a redeclaration error | 11:15 | |
timotimo | are we allowing augmentation of packages that way? | 11:16 | |
moritz | well, package is the only thing you can redeclare implicitly | 11:20 | |
but in the example above, A::B is redeclared | 11:21 | ||
timotimo | yeah | ||
dalek | kudo/nom: 4f87b54 | lizmat++ | src/core/Str.pm: Don't use indexes Again, if we're going to define "constants", they might as well be the actual thing. So get rid of a level of indirection, which gives us about 1%. Not a lot, but for such a vital part of the language worth it. And it should also improve readability for a change :-) |
11:28 | |
lizmat | m: say "1234567890".subst(/..?/, "x", :ex) # I guess this is a case of DIHWIDT ? | 12:10 | |
camelia | rakudo-moar 4f87b5: OUTPUT«Substring length (-2) cannot be negative in block <unit> at <tmp> line 1» | ||
lizmat | or should we maybe disallow :ex and :ov explicitely in Str.subst ? | 12:11 | |
m: say "1234567890".subst(/../, "x", :ov) # interesting, but is that what the user expects ? | 12:12 | ||
camelia | rakudo-moar 4f87b5: OUTPUT«x34567890x4567890x567890x67890x7890x890x90x0x» | ||
masak | lizmat: I don't understand the "Substring length (-2) cannot be negative" error message, so it's hard to say whether it's possible to do better than it :> | 12:13 | |
also -- unrelatedly -- there is something that bothers me about the phrasing of that message | |||
lizmat | m: say "1234".match(/..?/, :ex) # maybe this explains it better ? | 12:14 | |
camelia | rakudo-moar 4f87b5: OUTPUT«(「12」 「1」 「23」 「2」 「34」 「3」 「4」)» | ||
masak | perhaps the fact that -2 obviously *is* negative... and Rakudo might wish for that not to be so, but I'm sorry, it is | ||
lizmat | the problem is that subst assumes monotonically increasing from/to values and no overlap | ||
masak | lizmat: it would seem to me that after the first 「12」 has been replaced with "x", the 「1」 match no longer exists. | 12:15 | |
a DWIM argument would perhaps claim that you shouldn't attempt to replace something which is no longer there :P | |||
a sanity argument might try to show that .subst and :ex don't mix well, even in less involved circumstances. (I don't know whether that's true, though.) | 12:16 | ||
lizmat | masak: well, the .match is pretty agnostic about its use by .subst | 12:19 | |
so fwiw, the match still exists | |||
masak | oh, sure | ||
lizmat | *or* we would need to restart a match after each substitute | ||
masak | I have no conceptual quibbles about the match | ||
lizmat | which would be *BAD* from a performance point of view | 12:20 | |
masak | it's more like -- does it make sense to exhaustively substitute, the way you can exhaustively match? | ||
my gut feeling is "no, it doesn't" | |||
but I don't have proof | |||
jnthn | My initial thought is "probably not" | ||
masak | yeah, that | ||
jnthn | Or at least "it's very hard to think about" | ||
masak | to the extent I understand it, it seems a bad idea | 12:21 | |
lizmat | yeah... so I'll disallow :ex and :ov in .subst and see what/who starts complaining? | ||
jnthn | (Since the text you're replacing may not be what it was at the time of the match) | ||
masak | because it's about overlapping matches -- but whenever you make the first substitution on something overlapping, you in a sense invalidate the other overlapping match | 12:22 | |
lizmat | yup | ||
jnthn | The moment the length of the subsituted thing is different from the matched thing, you're in a world of hurt with indexes too | ||
lizmat | so my idea is to disallow now, and maybe allow later if we figured a way to have it make sense ? | ||
masak | +1 | ||
jnthn | I guess we didn't have any spectests for being able to do it? :) | 12:23 | |
lizmat | pretty sure we don't, but lemme test that assumption | ||
masak | wouldn't hurt to make the error message a bit apologetic and say that we don't have a good sense of how to do this rather than "it's bloody impossible" :P | ||
just in case someone in the future figures out a way | |||
perlpilot | .oO( Just add a :junction modifier to make the overlapping substitution return a junction of substituted strings ;-) ) |
12:26 | |
lizmat | lunch& | ||
masak | perlpilot: I'm so relieved I don't have to handle the fallout of someone seriously proposing that. | 12:29 | |
jnthn | ;) | 12:30 | |
perlpilot | yesterday, before a demonstration meeting I was talking about the most dangerous phrases all start with something like "can't you just ..." and then the execs came in and the demo got started for real. About 20 minutes in, one of the execs hyperfocuses on something everyone else thinks is insignificant and says "Can't you just turn turn <feature> off?" We all had a nice chat about that after the demo :) | 12:37 | |
s/turn turn/turn/ | 12:38 | ||
dalek | kudo/nom: c8b20f2 | jnthn++ | src/core/ (2 files): Pass on --optimize setting when precomping. |
12:40 | |
kudo/nom: ab11e6a | jnthn++ | src/core/CompUnit/PrecompilationRepository.pm: Include precomp flags in debug output. |
|||
jnthn proves that you can't just turn off the optimizer to eliminate the precomp bug he's hunting | |||
Figured the above two patches are generally useful for others though, so at least something came out of trying that hypothesis. | 12:41 | ||
MasterDuke_ | in the middle of trying to turn more BOOTSTRAPATTRs to Attributes, i also noticed attributes are only ever of type Mu or native (e.g., int, str, bigint) | 12:51 | |
dalek | kudo/nom: 326aeb0 | lizmat++ | src/core/Str.pm: Unlegalize :ov and :ex in .subst |
12:52 | |
MasterDuke_ | is there a reason some of those couldn't be more precise? | ||
[Coke] | perlpilot: (can't you just) archive.oreilly.com/pub/post/cant_y...redux.html | 12:54 | |
lizmat | MasterDuke_: maybe more precise types don't exist yet at that point ? | ||
MasterDuke_ | i also tried converting $!arity in Signature from Mu to int. i got it to build (with what seems to be a minor change to create_signature()), but didn't have time to run a spectest. however, is this a welcome change? | ||
lizmat | MasterDuke_: I think it is desirable from a memory usage point of view | 12:55 | |
MasterDuke_: but I seem to recall some issues with int attributes on JVM (but that maybe long ago) | 12:56 | ||
MasterDuke_ | lizmat: for some its future type might not be available, this is in BOOTSTRAP.nqp, but i think it might be possible to do some types | ||
lizmat: many of them are already int, i just didn't see why $!arity wasn't | 12:57 | ||
lizmat | well, if you can get it to work, more power to you :-) | 12:58 | |
perlpilot | [Coke]++ alester++ | 12:59 | |
jnthn | nine: When we run Rakudo to precomp, do we somehow take a different codepath than the normal compiler stages thing? | 13:09 | |
nine: Trying to figure out why passing along --optimize=off in c8b20f2 was seemingly not enough | 13:10 | ||
Oh...though it may be that I disabled an optimization and we rely on the opt to not have the problem | |||
MasterDuke_ | jnthn: if you've seen my recent MoarVM PR it was a change i made to help when trying to convert list BOOTSTRAPATTRs to Attributes. if i change Parameter.$!named_names ( github.com/rakudo/rakudo/blob/nom/....nqp#L1464 ) to an Attribute (with a $type of List) with a non auto_viv_container it complains that i'm trying to put an NQPArray into a BOOTStr at github.com/rakudo/rakudo/blob/nom/s | ||
jnthn | List won't work | 13:11 | |
List is a Perl 6 type | |||
No idea where the BOOTStr comes from though | 13:12 | ||
MasterDuke_ | ok, good to know, i'll have to change that | ||
damn, that's the part i was going to ask about | |||
jnthn | A wild guess would be that somehow we generate a hint wrongly | 13:13 | |
MasterDuke_ | what would the correct $type be? Iterable? | 13:15 | |
huh, haven't looked at hints yet | 13:16 | ||
masak .oO( a wild guess appears! ) | 13:19 | ||
MasterDuke_ | btw, i was using List because i saw this in Parameter.pm: method named_names() { nqp::p6bindattrinvres(nqp::create(List),List,'$!reified',$!named_names) }, which i assume would just become: method named_names() { $!named_names } if i get the change made? | 13:21 | |
lizmat | MasterDuke_: yes | 13:22 | |
arnsholt | If it's going to contain an NQPArray, I think it'll have to be Mu | ||
lizmat | ah, I assumed it would be List | ||
but isn't it already an NQPArray at the moment ? | 13:23 | ||
jnthn | MasterDuke_: You can't put a Perl 6 type on that attr | 13:25 | |
Mu will do 'cus it can be anything | |||
dalek | kudo/nom: b90c741 | lizmat++ | src/core/ (2 files): Give using :ex|ov its own error |
13:26 | |
MasterDuke_ | jnthn: interesting. in that case, why doesn't it work to use scalar_attr() with no auto_viv for that attr? (scalar_attr() is a bad name at that point, it doesn't do anything with Scalar) | 13:29 | |
[Coke] | lizmat: could you show us what that error message looks like for you locally now? | ||
lizmat | [Coke]: you mean the :ov|:ex one? | 13:32 | |
Cannot use :ex adverb in Str.subst, got True | 13:33 | ||
Cannot use :ov adverb in Str.subst, got True | |||
jnthn | MasterDuke_: No idea, sorry | 13:35 | |
It seems the optimizer is hiding a precomp bug somehow: github.com/jnthn/oo-monitors/issues/7 | 13:36 | ||
Think somebody mentioned here a while back the --optimize=off broke some tests. May be related to the issue I'm currently hunting. | |||
[Coke] | oh, the got is the value. Danke. | 13:37 | |
MasterDuke_ | jnthn: oh well, thanks for the help, i'll keep messing around then | 13:38 | |
dalek | kudo/nom: 23faf61 | jnthn++ | src/Perl6/Optimizer.nqp: Check level before transforming. --optimize=0 should run analyses, but not actually transform. |
13:47 | |
lizmat | m: sub a(:$/) { say $/ }; a |("/" => 42) # not sure we should allow :$/ ? | 13:49 | |
camelia | rakudo-moar b90c74: OUTPUT«42» | ||
jnthn | I think we'll survive :) | ||
lizmat | hehe | ||
jnthn | Doesn't do any harm | 13:50 | |
Don't think it's worth the extra error checking code to rule it out | |||
lizmat | m: sub a(:$_) { say $/ }; a |("_" => 42) # doesn't work with $_ | ||
camelia | rakudo-moar b90c74: OUTPUT«Nil» | ||
jnthn | m: sub a(:$_) { say $_ }; a |("_" => 42) | ||
camelia | rakudo-moar b90c74: OUTPUT«42» | ||
jnthn | Does it you say the correct var ;) | ||
lizmat | ah, duh :-) | 13:51 | |
dalek | ast/lexical_module_load: 96badd3 | niner++ | / (4 files): Fixup tests for lexical module loading We now need to explicitly use modules if we want to use their symbols and can no longer rely on them being loaded by one of our dependencies. |
15:00 | |
ast/lexical_module_load: 2f45726 | niner++ | / (2 files): Test that globals of loaded modules are imported lexically |
|||
ast/lexical_module_load: 02e63a6 | niner++ | packages/S11-modules/Main/Nested.pm: Remove superfluous use statement |
|||
kudo/nom: 4943ef3 | jnthn++ | src/Perl6/World.nqp: Clean up compiler services object at compunit end. It may end up being closed over in MOP modules, and then we try to serialize the Perl6::World as a result, which goes predictably badly. This cleans up the reference to the world at the end of the compunit, so we won't end up with this problem. |
15:02 | ||
kudo/lexical_module_load: 52fae8e | niner++ | src/Perl6/World.nqp: Fix our scoped nested package swallowed by lexically scoped parent In "use Foo; class Foo::Bar { }" Foo::Bar would be created as child of the lexically imported Foo class and was thus missing from the globals. Previous fixes only handled the case when Foo was a stub package, not when it was a full class. Remove the special case and fix the follow up bug that we now got a duplicate symbol when trying to lexically override classes in the RESTRICTED setting. There's no need to upgrade the main package to a global if we only want to create a lexically scoped child anyway. |
15:05 | ||
kudo/nom: ae85bac | lizmat++ | src/core/ (2 files): Fix "abc".match(/a<(bc)>/, :as(Str)): abc -> bc Spotted by nicq20++ . Also removed support for as(Range) and as(Pair) as there is no real performance win to be gotten there (at least for now). This also removes the rather new Cursor.RANGE and Cursor.FROMTO methods. |
15:14 | ||
kudo/nom: 3fdae43 | (Zoffix Znet)++ | src/core/List.pm: Make arity-0 infix:<Z> return a Seq instead of a List To make it consistently return a Seq for all inputs |
15:16 | ||
viki | ZOFVM: Files=1198, Tests=130083, 130 wallclock secs (20.06 usr 2.96 sys + 2293.52 cusr 201.63 csys = 2518.17 CPU) | 15:19 | |
dalek | ast: b42e604 | (Zoffix Znet)++ | S03-metaops/zip.t: Test artity-0 Z returns a Seq |
15:21 | |
lizmat | afk& | 15:29 | |
dalek | kudo/nom: 70a367d | jnthn++ | src/ (3 files): Make nextwith and friends be real routines. This means they are compile-time resolved, rather than runtime, and so calls to them will produce better code. Done to see if it would avoid a precomp issue (it didn't), but a good change to have. |
15:49 | |
viki | \o/ | 15:50 | |
travis-ci | Rakudo build errored. Jonathan Worthington 'Check level before transforming. | ||
travis-ci.org/rakudo/rakudo/builds/170778730 github.com/rakudo/rakudo/compare/b...faf61f5f0e | |||
buggable | [travis build above] ✓ All failures are due to timeout (1), missing build log (0), or GitHub connectivity (0). All failures are on JVM only. | ||
jnthn | OO::Monitors, with a workaround applied, now seems to precomp fine | 15:51 | |
Well, more to the point, things that use it can precomp fine | |||
m: class A { class B::C {} }; use MONKEY; augment class A { class B::C { } } | 16:19 | ||
camelia | rakudo-moar 70a367: OUTPUT«===SORRY!===Could not locate compile-time value for symbol B::C» | ||
jnthn spectests a fix for that error reporting bug plus the simpler case in RT #129968 | 16:22 | ||
dalek | kudo/nom: ab94694 | jnthn++ | src/Perl6/ (2 files): Make find_symbol consider the current package. Fixes a couple of error reporting bugs. |
16:32 | |
ast: 3e2326b | jnthn++ | S32-exceptions/misc.t: Tests to cover RT #129968. |
|||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129968 | ||
nine | When github.com/bbkr/jsonrpc/pull/30 is merged, Task::Star installs successfully on lexical_module_loading | 16:50 | |
timotimo | ooooooh, that's a good milestone | ||
nine | DBIish uncovered a rakudo bug which I fixed today. Otherwise adding use statements helped but most installed just fine unmodified. | 16:51 | |
use-ok is pretty useless however. It will load the module but the symbols won't be visible anymore in the test script. So you'd need to do a plain use anyway but then the use-ok is superfluous. | 16:52 | ||
timotimo | mhm | 16:55 | |
ilmari | use_ok is considered pretty useless in perl5 land too | ||
use ok 'Some::Module'; is a bit better, since it happens at compile time and imports work, but I prefer just 'use'. it's not like there's any point in running the rest of the test if you can't load the module under test | 16:57 | ||
nine | And the error messages usually tell you quite well what's broken. | 17:00 | |
We could deprecate use-ok and maybe catch a couple of dists that would break early on? | 17:08 | ||
viki | I'm surprised it crashes if it can't load the module. I'd expect the test function to output ok/nok and return the value | 17:13 | |
timotimo | oh, the function will not crash | 17:14 | |
viki | I just tried and it did. | ||
timotimo | it's the rest of compilation that thinks the result of using that module would crash and burn | ||
...oh? | |||
viki | oh, never mind. I'm just used to running with -v switch, and didn't this time | 17:16 | |
I see no reason to deprecate it then. Can be useful for TDD, with a test file that has just a bunch of `use-ok`s for all the modules you plan to develop by your design. | 17:17 | ||
with all the benefits of skips and todos | 17:18 | ||
timotimo | that's fair | 17:23 | |
FROGGS | viki++ | 17:51 | |
dalek | kudo/js: 7baae04 | (Pawel Murias)++ | src/vm/js/perl6-runtime/runtime.js: [js] Fix coercing a rakudo_scalar to num or str. |
18:15 | |
kudo/js: 82846b6 | (Pawel Murias)++ | src/core/Str.pm: [js] Add some NYI stubs for unicode stuff. |
|||
p: 6ae77ff | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js: [js] Allow Uninstantiable to be composed, and when creating an instance of it produce a better error message. |
|||
[Coke] | pmurias++ | 18:17 | |
lizmat | m: class A { class B {} }; use MONKEY; augment class A { augment class B { } } # jnthn :-) | 19:21 | |
camelia | rakudo-moar ab9469: OUTPUT«===SORRY!=== Error while compiling <tmp>You tried to augment class B, but it does not existat <tmp>:1------> ONKEY; augment class A { augment class B⏏ { } } # jnthn :-) expecting any of: generic role» | ||
lizmat | m: class A { class B {} }; use MONKEY; augment class A { class B { } } # doesn't exist ?? :-) | ||
camelia | rakudo-moar ab9469: OUTPUT«===SORRY!=== Error while compiling <tmp>Redeclaration of symbol 'B'at <tmp>:1------> }; use MONKEY; augment class A { class B⏏ { } } # doesn't exist ?? :-) expecting any of: generic role» | ||
geekosaur gets a headache | 19:22 | ||
RabidGravy | clearly need some more goat sacrificing or something | 19:24 | |
japhb | jnthn++ xx 1000; # OO::Monitors precomp -- `time perl6 -I lib -M Terminal::Print -e ''` on one of my boxes dropped from 4.957s to .346s! | 19:38 | |
jnthn | \o/ | 19:39 | |
viki | \o/ | ||
jnthn | lizmat: Heh, bet that was bust before also. It probably just needs a similar find_symbol call tweak | 19:40 | |
Lemme take a quick look... | |||
Think I found it. Compiling. :) | 19:44 | ||
lizmat | jnthn++ | ||
jnthn | Yup | 19:46 | |
jnthn writes a spectest and runs the suite | |||
m: use Test; lives-ok 'class A { class B {} }; use MONKEY; augment class A { augment class B { } }' | 19:47 | ||
camelia | rakudo-moar ab9469: OUTPUT«===SORRY!=== Error while compiling <tmp>Calling lives-ok(Str) will never work with any of these multi signatures: (Callable $code, $reason = "")at <tmp>:1------> use Test; ⏏lives-ok 'class A { class B {} }; use MO» | ||
jnthn | bah | ||
m: use Test; eval-lives-ok 'class A { class B {} }; use MONKEY; augment class A { augment class B { } }' | 19:48 | ||
camelia | rakudo-moar ab9469: OUTPUT«not ok 1 - # Failed test at <tmp> line 1# Error: You tried to augment class B, but it does not exist» | ||
lizmat | m: say $*PROGRAM ~~ /e/; dd $/.orig # jnthn: is there a reason why .orig is not a Str in this case ? | 19:53 | |
camelia | rakudo-moar ab9469: OUTPUT«「e」"<tmp>".IO(:SPEC(IO::Spec::Unix),:CWD("/home/camelia"))» | ||
dalek | kudo/nom: 87880ca | jnthn++ | src/Perl6/Grammar.nqp: Fix augment of a nested package. |
19:54 | |
ast: 78e4df6 | jnthn++ | S12-class/augment-supersede.t: Test augment of a nested class. |
|||
jnthn | lizmat: orig is always mean to be what you originally matched against | ||
*meant | 19:55 | ||
m: say $*PROGRAM ~~ /e/; dd $/.CURSOR.target | |||
camelia | rakudo-moar ab9469: OUTPUT«「e」"<tmp>"» | ||
lizmat | so we need to stringify everytime then :-( | ||
jnthn | vs that, which is always a Str | ||
Or just use target? :) | 19:56 | ||
lizmat | ah! ok | ||
jnthn | Oh, and 87880ca should deal with the augment discrepancy :) | 19:59 | |
lizmat | jnthn: cool, makes it easier for me to refactor Str.subst | 20:01 | |
jnthn | :) | 20:02 | |
m: use Test; my $warned; { EVAL 'my $!a'; ok 'no warning'; CONTROL { when CX::Warn { nok 'warned' } } | 20:07 | ||
camelia | rakudo-moar ab9469: OUTPUT«===SORRY!=== Error while compiling <tmp>Missing blockat <tmp>:1------> NTROL { when CX::Warn { nok 'warned' } }⏏<EOL>» | ||
jnthn | m: use Test; my $warned; { EVAL 'my $!a'; ok 'no warning'; CONTROL { when CX::Warn { nok 'warned' } } } | ||
camelia | rakudo-moar ab9469: OUTPUT«not ok 1 - # Failed test at <tmp> line 1» | ||
jnthn | d'oh :) | 20:08 | |
m: use Test; my $warned; { EVAL 'my $!a'; pass 'no warning'; CONTROL { when CX::Warn { flunk 'warned' } } } | |||
camelia | rakudo-moar ab9469: OUTPUT«not ok 1 - warned# Failed test 'warned'# at <tmp> line 1» | ||
dalek | kudo/nom: f21887c | jnthn++ | src/core/Exception.pm: Avoid warning when producing an exception message. |
20:18 | |
ast: 1f553c2 | jnthn++ | S32-exceptions/misc.t: Test to cover RT #129921. |
|||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129921 | ||
jnthn | A simple one to finish up the day :) | ||
dalek | kudo/nom: e65d931 | lizmat++ | src/core/Match.pm: Make Match.Str|prematch|postmatch 2x as fast Instead of using $!orig (which is HLL and could be something other than a Str), use $!CURSOR.target instead. jnthn++ for the idea. |
20:22 | |
lizmat | jnthn: ^^^ also a simple one... :-) | ||
jnthn | :) | ||
jnthn once again managed to find useful things to do that weren't fixing hyper/race like he's been planning for the last ages... | |||
lizmat | well, that's still better than needing to ditch 1.5 week of work | 20:23 | |
:-) | |||
(which was take #1 on the Str.match refactor | |||
) | 20:24 | ||
jnthn | Aww | 20:25 | |
Glad it worked out better second time | |||
lizmat | yeah... sometimes you need to be hard on yourself :-) | ||
jnthn | Not throwing away the wrong thing tends to make stuff even harder later... | ||
jnthn goes for some fresh air | |||
timotimo | 2x is amazing | 20:27 | |
lizmat | timotimo: yeah, I was surprised by that as well | ||
dalek | kudo/nom: 1fce095 | lizmat++ | src/core/Match.pm: Squeeze about 1% out of Match.Bool Not a lot, but it's used a lot |
20:48 | |
lizmat | hmmm.... can we actually have a failed Match object nowadays? | 20:49 | |
I mean, .match sets $/ to Nil or () on a failed match | 20:50 | ||
timotimo | what about submatches? | 20:51 | |
we definitely use failed cursors to signal state around, i think. but i'm not sure baout match objects | |||
lizmat | hmm.... | 20:52 | |
oddly enough, only 3 tests in roast fail if Match.Bool always returns True | 21:00 | ||
apparently Grammar.subparse can create failed Match objects | 21:01 | ||
moritz | that's likely a hysterical accident | 21:03 | |
failed Match objects used to be a thing, and have later been replaced by Nil (?) | |||
lizmat | ok, yes, indeed | ||
looks like subparse is faulty | |||
travis-ci | Rakudo build passed. Jonathan Worthington 'Make find_symbol consider the current package. | 21:10 | |
travis-ci.org/rakudo/rakudo/builds/170830292 github.com/rakudo/rakudo/compare/7...9469457350 | |||
cygx | o/ | 21:33 | |
m: say "abc" ~~ /)> . <(/ | |||
camelia | rakudo-moar 1fce09: OUTPUT«#<failed match>» | ||
cygx | \o/ | ||
lizmat | so should we consider that a bug or not ? | ||
m: say "foo" if "abc" ~~ /)> . <(/ | 21:34 | ||
camelia | ( no output ) | ||
cygx | depends on whether failed matches are truly no longer supposed to be a thing | 21:36 | |
Zoffix | Failed match sounds good to me. The match start and end markers make no sense. | ||
m: say ("abc" ~~ /)> . <(/).^name | |||
camelia | rakudo-moar 1fce09: OUTPUT«Match» | ||
Zoffix | m: say ("abc" ~~ /blasafdsad/).^name | 21:37 | |
camelia | rakudo-moar 1fce09: OUTPUT«Nil» | ||
Zoffix | interesting | ||
cygx | if we consider this a user error, it should fail or die | ||
Zoffix | m: my $s = ')>'; say "abc" ~~ /<$s> . <(/ | 21:40 | |
camelia | rakudo-moar 1fce09: OUTPUT«「」» | ||
Zoffix | ¯\_(ツ)_/¯ | ||
m: my $s = ')> . <('; say "abc" ~~ /<meow=$s>/ | |||
camelia | rakudo-moar 1fce09: OUTPUT«「a」 meow #<failed match>» | ||
Zoffix | cool | ||
m: my $s = ')> .+ <('; say "All your base are belong to us" ~~ /<meow=$s>/ | 21:41 | ||
camelia | rakudo-moar 1fce09: OUTPUT«「All your base are belong to us」 meow #<failed match>» | ||
Zoffix | ehehe | ||
dalek | kudo/nom: a1fceeb | lizmat++ | src/core/Rakudo/Internals.pm: Initialize the $*VAR initializers hash ad-hoc If we have an execution error during optimizing, we should at least get something now, rather than complaining about the $*VAR initializers hash not being initialized |
21:50 | |
lizmat | ok, getting too tired for this | 21:59 | |
good night, #perl6-dev! | |||
cygx | good night o/ | 22:01 | |
timotimo | lizmat++ # good work today | 22:04 |