Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2017-06-20

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:12 AlexDani` joined #perl6-dev
00:12 d4l3k_ joined #perl6-dev
00:13 dalek joined #perl6-dev
00:13 ilmari_ joined #perl6-dev
00:13 Ulti_ joined #perl6-dev
00:13 [Coke]_ joined #perl6-dev
00:13 DrForr_ joined #perl6-dev
00:13 bartolin_ joined #perl6-dev
00:13 jdv79_ joined #perl6-dev
00:13 Brock joined #perl6-dev
00:14 japhb_ joined #perl6-dev
00:14 cono_ joined #perl6-dev
00:14 sivoais joined #perl6-dev
00:14 nine_ joined #perl6-dev
00:16 camelia joined #perl6-dev
00:16 geekosaur joined #perl6-dev
00:18 arnsholt_ joined #perl6-dev
00:18 jnthn joined #perl6-dev
00:19 mst joined #perl6-dev
00:20 btyler joined #perl6-dev
00:24 sivoais_ joined #perl6-dev
00:34 sivoais joined #perl6-dev
00:51 rightfold left #perl6-dev
01:23 AlexDani` joined #perl6-dev
01:24 AlexDaniel wait what… where are the bots? :)
01:25 geekosaur wromg end of a netsplit
01:25 geekosaur *wrong
01:25 AlexDaniel ah, didn't notice
01:25 AlexDaniel m: say 42
01:25 camelia rakudo-moar 6b634a: OUTPUT: «42␤»
01:27 statisfiable6 joined #perl6-dev
01:27 AlexDaniel hm, or are they just stuck trying to reconnect?
01:27 AlexDaniel well, we'll see later
01:28 AlexDaniel or… I can maybe fix it while I'm here…
01:28 geekosaur not sure I'd bother unless they;re needed, since the netsplits are still occuring periodically
01:28 geekosaur my guess is someone's ddos-ing freenode again
01:30 bloatable6 joined #perl6-dev
01:30 committable6 joined #perl6-dev
01:30 evalable6 joined #perl6-dev
01:30 greppable6 joined #perl6-dev
01:30 quotable6 joined #perl6-dev
01:30 unicodable6 joined #perl6-dev
01:30 benchable6 joined #perl6-dev
01:30 bisectable6 joined #perl6-dev
01:30 statisfiable6 joined #perl6-dev
01:31 AlexDaniel never really understood the idea behind ddos-ing freenode
01:33 geekosaur there isn't one except "looky me I'm important I can take a network down"
01:37 jnthn joined #perl6-dev
01:49 ilbot3 joined #perl6-dev
01:49 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
02:27 AlexDaniel yes, I'll never understand how to pipe one proc to another without getting a couple of holes in my feet
02:30 AlexDaniel if you don't do $proc.out.close, then you leave something behind and at some point you'll just go over the open file limit or something
02:30 AlexDaniel if you do, then… it simply doesn't work sometimes?
02:31 AlexDaniel ah no, nevermind
02:31 AlexDaniel you should .out.close, the issue I had right now was different
02:44 astj joined #perl6-dev
02:57 Ben_Goldberg joined #perl6-dev
06:23 nebuchadnezzar joined #perl6-dev
06:42 [Tux] under 4, but only by the minimal possible amount :)
06:42 [Tux] This is Rakudo version 2017.06-13-g6b634a369 built on MoarVM version 2017.06-7-gee49c831
06:42 [Tux] csv-ip5xs        2.496
06:42 [Tux] test            12.629
06:42 [Tux] test-t           3.999 - 4.042
06:42 [Tux] csv-parser      12.489
06:43 [Tux] Error encoding UTF-8 string: could not encode Unicode Surrogate codepoint 56388 (0xDC44)
07:40 lizmat joined #perl6-dev
07:42 lizmat Files=1204, Tests=62525, 216 wallclock secs (13.15 usr  5.05 sys + 1315.04 cusr 132.23 csys = 1465.47 CPU)
07:52 lizmat whee, test-t below 4!   3.999   :-)
08:00 lizmat Q: if a module has a BUILD method, can the BUILDPLAN ever have more than one element ?
08:02 lizmat also: are there still modules out there that depend on the "old" BUILDALL interface ?
08:03 lizmat if not, we could make BUILDALL an only method
08:17 TimToady joined #perl6-dev
08:29 samcv lizmat, would you support a variation of %( ) where the keys can be objects? like :{ } but with nicer syntax and none of the block problems
08:29 lizmat what are the block problems ?
08:30 samcv { } can create a block
08:30 samcv or create a hash
08:30 samcv m: my $var = { $_ => 'word' }; say $var.gist
08:30 camelia rakudo-moar 6b634a: OUTPUT: «-> ;; $_? is raw { #`(Block|43311368) ... }␤»
08:30 samcv also { } is slightly slower than %( ) for the parser
08:31 samcv well like 15% i think. something. not sure if 15% is more than slightly
08:31 lizmat "for the parser" you mean for compiling the code?
08:32 samcv yeah
08:32 samcv it's 15% faster to use %( ) than { }
08:32 samcv and it doesn't have to decide whether or not it's a block or a hash
08:40 lizmat samcv: I wouldn't mind seeing %() and/or :%(), but that's really up to TimToady & jnthn
08:40 samcv kk
08:41 samcv also see this https://stackoverflow.com/questions/44101411/is-that-a-perl-6-hash-or-block
08:41 samcv is background on what prompted this
08:41 samcv oddly enough i had recently started making myself use %( ) after reading the synopsis and also being bitten by random blocks where i wanted a hash
08:43 lizmat afk for a few hours&
08:51 jnthn m: dd :{ 1, 2 }
08:51 camelia rakudo-moar 6b634a: OUTPUT: «-> ;; $_? is raw { #`(Block|31328624) ... }␤»
10:06 Geth ¦ roast: c8f9fa490a | (Jonathan Worthington)++ | S32-encoding/registry.t
10:06 Geth ¦ roast: Test we can find built-in encodings by registry.
10:06 Geth ¦ roast: review: https://github.com/perl6/roast/commit/c8f9fa490a
10:06 Geth ¦ roast: ebfbe65f47 | (Jonathan Worthington)++ | S32-encoding/encoder.t
10:06 Geth ¦ roast: Basic tests for Encoding::Encoder.
10:06 Geth ¦ roast: review: https://github.com/perl6/roast/commit/ebfbe65f47
10:06 Geth ¦ rakudo/encoding-objects: 274e7c0413 | (Jonathan Worthington)++ | 5 files
10:06 Geth ¦ rakudo/encoding-objects: Add encoding support to new encoder API.
10:06 Geth ¦ rakudo/encoding-objects:
10:06 Geth ¦ rakudo/encoding-objects: This will be used by I/O handles for doing output, and may be used by
10:06 Geth ¦ rakudo/encoding-objects: Perl 6 language users directly also. It is designed to allow various
10:06 Geth ¦ rakudo/encoding-objects: decisions to be made up front (on newline translation, replacement
10:06 Geth ¦ rakudo/encoding-objects: chars, and output blob type), while `.encode` today has to make them
10:06 Geth ¦ rakudo/encoding-objects: for every single call.
10:06 Geth ¦ rakudo/encoding-objects: review: https://github.com/rakudo/rakudo/commit/274e7c0413
10:07 Geth ¦ rakudo/encoding-objects: 8974dd2574 | (Jonathan Worthington)++ | t/spectest.data
10:07 Geth ¦ rakudo/encoding-objects: Run S32-encoding/encoder.t.
10:07 Geth ¦ rakudo/encoding-objects: review: https://github.com/rakudo/rakudo/commit/8974dd2574
10:27 astj joined #perl6-dev
10:27 astj joined #perl6-dev
10:40 Geth ¦ rakudo/encoding-objects: f267928f1f | (Jonathan Worthington)++ | 3 files
10:40 Geth ¦ rakudo/encoding-objects: Use Encoding::Encoder in synchronous handles.
10:40 Geth ¦ rakudo/encoding-objects:
10:40 Geth ¦ rakudo/encoding-objects: Rather than calling `.encode` every single time. Removes a good bit of
10:40 Geth ¦ rakudo/encoding-objects: overhead, and also means that userspace encoders are now possible with
10:40 Geth ¦ rakudo/encoding-objects: synchronous I/O handles. A "write a million lines to a file" benchmark
10:40 Geth ¦ rakudo/encoding-objects: now runs in 55% of the time it used to.
10:40 Geth ¦ rakudo/encoding-objects: review: https://github.com/rakudo/rakudo/commit/f267928f1f
10:41 timotimo that sounds great!
10:55 Geth ¦ rakudo/encoding-objects: 4f9aafaf29 | (Jonathan Worthington)++ | 2 files
10:55 Geth ¦ rakudo/encoding-objects: Use Encoding::Encoder in async I/O handles.
10:55 Geth ¦ rakudo/encoding-objects:
10:55 Geth ¦ rakudo/encoding-objects: Means that they now also support user-defined encodings, and should
10:55 Geth ¦ rakudo/encoding-objects: have an output performance boost too.
10:55 Geth ¦ rakudo/encoding-objects: review: https://github.com/rakudo/rakudo/commit/4f9aafaf29
11:10 robertle joined #perl6-dev
11:16 Geth ¦ rakudo/encoding-objects: 58769585a1 | (Jonathan Worthington)++ | src/core/Encoding/Builtin.pm
11:16 Geth ¦ rakudo/encoding-objects: Allow empty replacement char in default encoder.
11:16 Geth ¦ rakudo/encoding-objects: review: https://github.com/rakudo/rakudo/commit/58769585a1
11:16 Geth ¦ rakudo/encoding-objects: 642d24f173 | (Jonathan Worthington)++ | src/core/Encoding/Builtin.pm
11:16 Geth ¦ rakudo/encoding-objects: Encode into blob8 by default, not just Blob.
11:16 Geth ¦ rakudo/encoding-objects: review: https://github.com/rakudo/rakudo/commit/642d24f173
11:16 Geth ¦ rakudo/encoding-objects: 03765c3635 | (Jonathan Worthington)++ | src/core/Str.pm
11:16 Geth ¦ rakudo/encoding-objects: Switch `Str.encode` to use the Encoding objects.
11:16 Geth ¦ rakudo/encoding-objects:
11:16 Geth ¦ rakudo/encoding-objects: Meaning that "foo".encode('user-defined-encoding') will now also work.
11:16 Geth ¦ rakudo/encoding-objects: At this point, everywhere that an encoding can be mentioned by name in
11:16 Geth ¦ rakudo/encoding-objects: CORE.setting does lookups in `Encoding::Registry`, meaning that user
11:16 Geth ¦ rakudo/encoding-objects: defined encodings should be usable everywhere.
11:16 Geth ¦ rakudo/encoding-objects: review: https://github.com/rakudo/rakudo/commit/03765c3635
11:18 jnthn Think that branch is in pretty decent shape by now
11:18 jnthn I want to write some more tests
11:18 jnthn But now, lunch and language lesson :) bbl
11:20 Geth ¦ roast: d275acbfd8 | (Jonathan Worthington)++ | S32-encoding/encoder.t
11:20 Geth ¦ roast: Correct expected encoding output type.
11:20 Geth ¦ roast: review: https://github.com/perl6/roast/commit/d275acbfd8
12:15 [Coke] jnthn: is the encoding registry lexical?
12:20 BenGoldberg joined #perl6-dev
12:22 timotimo [Coke]: looks global
12:22 timotimo [Coke]: i.e. the Register::Encoding class has a my-scoped hash in it
12:24 timotimo a lexical registry wouldn't be very useful, unless functions that take encoding names also look into the CALLER's lexical scope
12:28 [Coke] just wondering if that means that I can override an existing entry in the registry, breaking someone else's code.
12:32 ilmari [Coke]: it won't let you clobber an already-registered name, and the lookup hash is private to the registry class
12:32 ilmari https://github.com/rakudo/rakudo/blob/encoding-objects/src/core/Encoding/Registry.pm
12:34 [Coke] whee.
12:34 [Coke] ilmari++ looking stuff up so I don't have to. :)
12:50 lizmat write_fhb requires a native array to read from  # huh ?
12:50 lizmat trying to get some debug info out of BUILDALL
12:50 lizmat nqp::writefh(nqp::getstderr,"$count\n");  # what's wrong with that?
12:51 timotimo you have to use "note" now
12:51 timotimo char writing ops have been deprecated
12:51 timotimo you'd have to manually use an encoder
12:51 timotimo but note() does that for you
12:51 lizmat timotimo: note() at that location gets setting compilation into an infiniloop
12:52 lizmat tried that first  :-)
12:53 lizmat so how do I write something on STDERR from nqp ?
12:53 timotimo i feared as much
12:53 lizmat also: https://github.com/perl6/nqp/blob/master/docs/ops.markdown#writefh
12:53 timotimo i tried to have a note inside MethodContainer so that i could see how many times it gets called during, for example, stage compile
12:53 timotimo setting compilation*
12:54 lizmat can't write to stdout, as that interferes with precomp  :-(
12:54 timotimo right, that shouldn't say "Str" there
12:55 nine_ lizmat: precomp should ignore everything on stdout that doesn't look like a dependency id
12:55 lizmat I guess I was outputting numbers
12:55 lizmat ok, maybe that will work  :-)
12:56 nine_ It's probably kinda hard to hit this by accident :) $dependency-str ~~ /^<[A..Z0..9]> ** 40 \0 .+/
12:57 lizmat it was a sequence of numbers separated by spaces
13:00 lizmat nine_: it caused ===SORRY!===
13:00 lizmat Missing or wrong version of dependency
13:04 nine_ very odd
13:10 AlexDaniel joined #perl6-dev
13:15 perlpilot_ joined #perl6-dev
13:17 lizmat timotimo: I guess the BUILDPLAN is shared between BUILDALL and BUILDLEASTDERIVED, right ?
13:19 lizmat I see a lot of cases where 13 is executed by the BUILDALL, but that is a noop there
13:19 perlpilot_ joined #perl6-dev
13:20 dogbert11 m: say Match.^methods # what's happening here?
13:20 camelia rakudo-moar 6b634a: OUTPUT: «X::Method::NotFound exception produced no message␤  in block <unit> at <tmp> line 1␤␤»
13:20 yoleaux 2 Jun 2017 14:39Z <Zoffix> dogbert11: do remember the story about $?BITS not being 32 on 32 bit boxes? I recall pmurias was fixing something in that area.
13:20 yoleaux 2 Jun 2017 14:45Z <Zoffix> dogbert11: never mind, turns out $?BITS isbits in an int, not OS bits
13:21 lizmat m: .say for Match.^methods>>.^name
13:21 camelia rakudo-moar 6b634a: OUTPUT: «List␤»
13:21 lizmat m: .say for Match.^methods
13:21 camelia rakudo-moar 6b634a: OUTPUT: «STR␤MATCH␤CURSOR_NEXT␤CURSOR_OVERLAP␤CURSOR_MORE␤INTERPOLATE␤CALL_SUBRULE␤DYNQUANT_LIMITS␤OTHERGRAMMAR␤INDMETHOD␤INDRULE␤RECURSE␤BUILD␤clone␤Bool␤prematch␤postmatch␤caps␤chunks␤X::Method::NotFound exception produced …»
13:21 dogbert11 is it something with nqp?
13:22 lizmat m: .say for Match.^methods.map: *.^name
13:22 camelia rakudo-moar 6b634a: OUTPUT: «Method␤Method␤Method␤Method␤Method␤Method␤Method␤Method␤Method␤Method␤Method␤Method␤Submethod␤Method␤Method␤Method␤Method␤Method␤Method␤NQPRoutine␤NQPRoutine␤NQPRoutine␤NQPRoutine␤NQPRoutine␤NQPRoutine␤NQ…»
13:22 lizmat yeah, an NQPRoutine, and they don't now how to .gist
13:23 dogbert11 thx, a bit annoying though
13:23 lizmat dogbert11: fwiw, I'm not sure why those classes do not have a .gist or .Str method
13:26 dogbert11 an oversight perhaps
13:28 Geth ¦ rakudo/nom: f03a176c81 | (Elizabeth Mattijsen)++ | src/core/Lock.pm
13:28 Geth ¦ rakudo/nom: Give Lock its own .new
13:28 Geth ¦ rakudo/nom:
13:28 Geth ¦ rakudo/nom: So it won't have to go through BUILDALL, where it wasn't doing anything
13:28 Geth ¦ rakudo/nom: anyway.
13:28 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f03a176c81
13:30 timotimo we're building a few locks during startup, aren't we?
13:32 lizmat yeah, 6
13:33 lizmat a bare startup now created 3 IO::Handle, 1 ThreadPoolScheduler and 1 Collation object using standard BUILDALL semantics
13:34 lizmat The ThreadPools Scheduler one is particularly wasteful: one call to BUILD and then 6x noop
13:34 lizmat (aka 13)
13:35 timotimo if we guarantee that 13 is only ever followed by other 13s until the end
13:35 timotimo we can skip all the rest when we see the first 13
13:35 lizmat there could be a TWEAK after it  :0(
13:36 lizmat timotimo: but what is the reason for 13 in BUILDALL in the first place?
13:36 lizmat is that really because the same buildplan is also used for BUILDLEASTDERIVED ?
13:36 timotimo i believe so
13:37 lizmat and when is BUILD-LEAST-DERIVED called ?
13:38 timotimo when we have roles involved
13:38 timotimo i forgot the exact details
13:38 lizmat ok, something like $handle but Foo
13:39 timotimo all the variants of does have that in them
13:39 timotimo and but, too
13:39 timotimo not all, there is exceptions
13:40 timotimo but yeah, that's what it's for
13:40 lizmat ok, this is weird
13:40 lizmat all calls to BUILD_LEAST_DERIVED I can see, pass an empty hash as the parameter
13:41 lizmat ah, not all
13:41 timotimo not all, yeah
13:41 lizmat grrr
13:46 lizmat timotimo: have you thought about creating a separate buildplan for ALL / DERIVED ?
13:48 timotimo i'd expect it'd be a waste of memory. i'd rather do the thing with skipping when you find the first 13
13:48 * jnthn back
13:48 lizmat but then we'd have to know whether there's no TWEAK at the end :-(
13:49 timotimo then we make sure to put the tweak in there before the 13s
13:49 timotimo either by sorting or through whatever other mean
13:49 lizmat buildplan of IO::Handle is: 1 1 1 1 1  4 4 4 13 13 13 13 0
13:49 lizmat but shouldn't the TWEAK be at the very end always ?
13:50 jnthn [Coke]: No, decided there didn't seem much use for that, especially given we'll let you pass an Encoding into IO handles rather than a name
13:51 jnthn lizmat: Eventually we'll compile, not interpret, the build plan
13:51 jnthn So I'd not worry abou tit
13:51 jnthn *about it
13:52 lizmat well, I've heard that for a long time already  :-)
13:52 lizmat if I can get in some cheap opts in there still, it would be worth it now, no ?
13:52 lizmat anyways, this digging is good for my understanding of things  :-)
13:53 jnthn Sure, so long as you don't break subclassability of stuff
13:53 * lizmat break anything?  :-)
13:53 perlpilot joined #perl6-dev
13:54 jnthn So, what was I going to do next today..
13:54 jnthn oh, right
13:54 [Coke] jnthn: there's apparently a segfault in Proc stuff? eveo mentioned it was known, but I don't see an RT.
13:55 jnthn [Coke]: There's two RTs on proc stuff that I'll work on later in the week :)
13:55 lizmat nine_: do you still need the "old" (@positional,%attr) interface to BUILDALL for Inline::Perl5 ?
13:55 [Coke] jnthn++
13:55 eveo joined #perl6-dev
13:55 jnthn Though they both want the same fix
13:55 eveo Sorry, I misspoke, it wasn't a segv but a race
13:56 jnthn Or rather, one will be cleared up by the fix
13:56 jnthn (Because it's about code that goes away when doing the fix)
13:56 jnthn eveo: If it's not already (and you ain't already on it), could you RT the race? :)
13:56 eveo jnthn: it's this one https://rt.perl.org/Ticket/Display.html?id=131592
13:57 jnthn oh, right
13:57 [Coke] ... I am getting a segfault here on OS X. (checkout docs. run 'perl6 xt/space-after-comma.t'
13:57 jnthn But that goes away when we just start doing it wiht the hanndles :)
13:57 jnthn *with, *handles :)
13:57 eveo Yeah, probably
13:58 [Coke] If your fix is likely to avoid the segv, I'll just wait and try again later. Danke.
13:58 jnthn [Coke]: Are you chaining one process into another?
13:58 jnthn If so, then wait. If not, then it's probably something else.
13:59 * jnthn builds his encoding branch on JVM to make sure he hasn't busticated it
14:00 dogbert11 [Coke]: I believe the handle thing is RT #131576
14:00 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131576
14:02 dogbert11 jnthn: how does the output code stand up against Perl 5 atm?
14:04 nine_ lizmat: looks like I do. What's wrong with it?
14:05 lizmat well, if we could make it a separate method, we could make BUILDALL an only
14:05 lizmat method
14:05 lizmat which presumably would dispatch faster
14:05 jnthn Not automatically
14:06 jnthn Depends on how it's speshed
14:07 jnthn Note that we only don't need it 'cus we haven't implemented part of S12 also :)
14:07 lizmat ah, ok, so forget about that then  :-)
14:08 eveo left #perl6-dev
14:08 jnthn phew, JVM happy
14:09 jnthn Or at least, JVM not sad :P
14:10 [Coke] jnthn: yes, output from a -> b, in a loop for several hundred files.
14:10 [Coke] (ach chain is only about 2 procs long.)
14:10 jnthn [Coke]: Ah, OK, then should be covered
14:11 * [Coke] tries to figure out how to get an lldb backtrace...
14:12 jnthn OK, JVM looking alright. Merge time
14:14 jnthn dogbert11: Not too well; I need to look at why
14:14 * [Coke] gives up before he loses an hour here.
14:14 jnthn dogbert11: Though a lot better than it was before :)
14:16 jnthn I'll run some profiles once I've got this merge landed
14:17 Geth ¦ rakudo/nom: 17 commits pushed by (Jonathan Worthington)++
14:17 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/compare/f03a176c81...d0995f6890
14:18 jnthn dogbert11: OK, so for:
14:18 jnthn perl -e 'open my $fh, ">:encoding(UTF-8)", "longfile"; for (1..1_000_000) { print $fh ("xyz" x 20) . "\n" }; close $fh'
14:19 jnthn ./perl6-m -e 'my $fh = open "longfile", :w; for ^1_000_000 { $fh.say("xyz" x 20) }; $fh.close'
14:19 jnthn m: say 5.068 / 0.929
14:19 camelia rakudo-moar f03a17: OUTPUT: «5.455328␤»
14:19 jnthn Used to be nearly 5.5x slower
14:19 jnthn m: say 2.455 / 0.929
14:19 camelia rakudo-moar f03a17: OUTPUT: «2.642626␤»
14:19 jnthn Now about 2.5x slower
14:20 nine_ progress!
14:20 jnthn I suspect when writing to a file, though, Perl 5 does some buffering
14:20 jnthn 'cus the Perl 6 time output is
14:20 jnthn real    0m2.455s
14:20 jnthn user    0m1.620s
14:20 jnthn sys 0m0.828s
14:21 jnthn vs. with Perl 5
14:21 jnthn real    0m0.929s
14:21 jnthn user    0m0.828s
14:21 jnthn sys 0m0.092s
14:21 jnthn Note the epic difference in sys
14:29 dogbert11 doesn't look too bad
14:31 dogbert11 hopefully there are some LHF's hiding in the code
14:37 Geth ¦ rakudo/nom: fff433379f | (Elizabeth Mattijsen)++ | src/core/Mu.pm
14:37 Geth ¦ rakudo/nom: Micro-optimize building of some objects
14:37 Geth ¦ rakudo/nom:
14:37 Geth ¦ rakudo/nom: The buildplan may contain several "13" entries which only have meaning
14:37 Geth ¦ rakudo/nom: when mixing in stuff into a class.  In the standard BUILDALL execution,
14:37 Geth ¦ rakudo/nom: they have no meaning.  However, they're always checked last.  Since we
14:37 Geth ¦ rakudo/nom: know that all 13's are grouped together, we can shortcut the loop so
14:37 Geth ¦ rakudo/nom: that multiple consecutive 13's don't need to go through the whole
14:37 Geth ¦ rakudo/nom: machinery.  This e.g. saves 36 nqp::iseq_i's for each IO::Handle object
14:37 Geth ¦ rakudo/nom: that gets created (of which we always create 3 at startup, so saves
14:37 Geth ¦ rakudo/nom: 108 nqp::iseq_i's for each startup).
14:37 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fff433379f
14:38 lizmat jnthn: all of a sudden I see setting parse drop 5 seconds ???
14:41 jnthn o.O
14:45 lizmat but bare startup seems to have risen  :-(
14:50 lizmat ah, 7 Encoding::Builtin objects being created at startup
14:50 lizmat jnthn: shouldn't that be precompiled ??
14:50 jnthn We could stick BEGINs in there, but is it really so costly?
14:51 |Tux| lizmat, that causes some tests to break
14:51 jnthn The add to registry call needs to happen at startup
14:51 jnthn But the encoding objects themselves we can precomp
14:51 lizmat [Tux]: looking at CSV now
14:52 |Tux| perl6    csv         Cannot invoke null object
14:52 lizmat I have all tests successful
14:52 lizmat ?
14:52 lizmat All tests successful.
14:52 lizmat Files=29, Tests=22298, 23 wallclock secs (14.94 usr  1.60 sys + 60.97 cusr  3.59 csys = 81.10 CPU)
14:52 |Tux| it is one of the older test scripts
14:53 lizmat which one ?
14:53 |Tux| test and test-t still pass, as does the test suite
14:53 |Tux| $ p6 csv.pl </tmp/hello.csv
14:54 |Tux| Cannot invoke null object
14:54 |Tux| in sub non_nil at csv.pl line 37
14:54 |Tux| and don't ask me why that script is (still) there
14:54 lizmat [Tux]: works ok here
14:55 |Tux| This is Rakudo version 2017.06-32-gfff433379 built on MoarVM version 2017.06-7-gee49c831
14:55 |Tux| csv-ip5xs        2.602
14:55 |Tux| test            12.253
14:55 |Tux| test-t           4.016 - 4.030
14:55 |Tux| csv-parser      12.004
14:55 |Tux| is fff433379 new enough?
14:56 lizmat that's the latest afaik
14:57 jnthn Wow, nice, the inliner does pretty good already on the line output loop
14:58 jnthn All of write-internal, encode-chars, and gist get inlined into say
14:59 jnthn However, since it thus inlines ops that can't JIT...the whole lot ends up unjitted
14:59 jnthn So I guess that's my LHF :)
15:00 timotimo any jit ops i could implement?
15:02 jnthn timotimo: afaik it just needs write_fbh and encode; I'm already on them
15:03 jnthn timotimo: Though you could do some other I/O or decoder ops
15:03 jnthn Since most are missing
15:17 ugexe https://github.com/sergot/perl6-encode/tree/master/lib/Encode # here are 3 mappings in the ecosystem
15:46 timotimo sure, for now my next steps are grocery shopping though
15:50 * lizmat just pushed https://github.com/rakudo/rakudo/commit/79ce1a991f044e381ba4d1
15:51 lizmat fwiw, this seems to scrape off a few milliseconds from bare startup for me
15:52 timotimo now we can build all these iso-12345 encodings in perl6-space
15:53 lizmat would that mean they would be ecosystem, or just an extra module in lib, or part of the setting ?
15:53 timotimo good question
15:54 timotimo i mean all three of these are possible
15:54 jnthn Ecosystem
15:54 jnthn If something is common enough to warrant inclusion with Rakudo, it'd be common enough to warrant an optimized impl in the VM.
16:11 jnthn Nice thing about speeding up writes is I'm seeing slightly faster spectest times :)
16:14 jnthn m: say 2.085 / 0.929
16:14 camelia rakudo-moar 79ce1a: OUTPUT: «2.244349␤»
16:16 jnthn m: say q:c"You can now $fh.say in {100 * 2.085 / 4.434}% of the time you could at the start of the day"
16:16 camelia rakudo-moar 79ce1a: OUTPUT: «You can now $fh.say in 47.023004% of the time you could at the start of the day␤»
16:19 jnthn The big win still to be had is implementing output buffering
16:20 Geth joined #perl6-dev
16:20 jnthn But I'd like to let some more of the other I/O change dust settle before I do that.
16:20 jnthn The other wins will come from better spesh :)
17:01 * jnthn afk for rest, nom, etc.
17:38 Geth ¦ rakudo/nom: 640404fc10 | (Elizabeth Mattijsen)++ | src/core/Mu.pm
17:38 Geth ¦ rakudo/nom: Same as fff433379f33e621a3 for BUILD_LEAST_DERIVED
17:38 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/640404fc10
18:25 Geth ¦ rakudo/nom: e36d7eda37 | (Elizabeth Mattijsen)++ | src/core/Collation.pm
18:25 Geth ¦ rakudo/nom: Initialize $*COLLATION only when needed
18:25 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e36d7eda37
18:38 Geth ¦ rakudo/nom: 888a1b2ad8 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
18:38 Geth ¦ rakudo/nom: Initialize $*SCHEDULER only when needed
18:38 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/888a1b2ad8
18:43 ggoebel joined #perl6-dev
18:46 jnthn m: say PROCESS::<$SCHEDULER>
18:46 camelia rakudo-moar e36d7e: OUTPUT: «ThreadPoolScheduler.new(initial_threads => 0, max_threads => 16, uncaught_handler => Callable)␤»
18:47 lizmat jnthn: are you implying in cannot be initialized lazily ?
18:47 lizmat *it
18:47 jnthn Did you spectest the change?
18:48 lizmat yup
18:48 lizmat I always spectest changes before pushing (well 99.99% of the time :-)
18:48 jnthn Huh, I undid the laziness there because https://github.com/rakudo/rakudo/blob/nom/src/core/Proc.pm#L140 uses PROCESS::<$SCHEDULER>
18:49 lizmat is there a reason you didn't want to use $*SCHEDULER there ?
18:49 jnthn Because we always want to use the built-in one, not any override one
18:49 lizmat ok, I'll revert  :-)
18:49 jnthn But I did the change because the lookup failed
18:49 jnthn And run/shell were totally busted by that
18:49 jnthn So I'm wondering how you got away with it :-)
18:49 * lizmat is not sure
18:50 * lizmat spectests again, just to be 100% sure
18:50 jnthn I un-lazy'd it like last week because I ran into problems :)
18:50 jnthn Does a simple -e 'run "ls"' or so work?
18:50 lizmat yes
18:51 lizmat maybe something else in Proc is triggering initialization before the spawn-internal ?
18:54 jnthn Yeah, that's my guess. It wasn't that way originally
18:54 jnthn And I'm curious what it is, and if it leaks anything
18:54 lizmat perhaps I should add a //= ThreadPoolScheduler.new  ?
18:54 lizmat to line 140 in Proc ?
18:54 jnthn Well, // $*SCHEDULER would maybe do it but it's fragile
18:55 jnthn Becuase technically you can override it without ever having touched the original
18:56 lizmat hence my idea for //= ?
18:56 lizmat instead of // ?
18:56 lizmat make sure that that default TPScheduler will be the default one in the future ?
18:57 lizmat dinner calls&
18:58 jnthn Maybe that'd work, yeah
18:58 jnthn How costly is constructing it? Do we save a lot with the laziness?
19:44 AlexDaniel joined #perl6-dev
19:48 lizmat 9 attributes without initialization, so quite a buildplan
19:48 lizmat they're all 13's so they've actually become a lot cheaper now
19:49 lizmat that saved 8x12 nqp::if/nqp::iseq_i 's
19:49 lizmat for a ThreadPoolScheduler object
19:50 lizmat ah, and a call to BUILD
20:00 lizmat https://metacpan.org/pod/release/DCONWAY/Perl6-Controls-0.000002/lib/Perl6/Controls.pm   # pointy blocks and phasers in Perl 5
20:02 lizmat https://www.reddit.com/r/perl/comments/6ie5fg/perl6controls_add_perl_6_control_structures_as/ # Reddit comments
20:09 awwaiid joined #perl6-dev
20:09 lizmat jnthn: hmmm... looks like I've introduced a race condition
20:11 Geth ¦ rakudo/nom: 608fd580c1 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
20:11 Geth ¦ rakudo/nom: Revert "Initialize $*SCHEDULER only when needed"
20:11 Geth ¦ rakudo/nom:
20:11 Geth ¦ rakudo/nom: This reverts commit 888a1b2ad8fa484eae77ed0fbe9b81523030fb8a.
20:11 Geth ¦ rakudo/nom:
20:11 Geth ¦ rakudo/nom: Feels like this also introduced a race condition somehow, so reverting
20:11 Geth ¦ rakudo/nom: for now.
20:11 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/608fd580c1
20:20 lizmat hmmm.. I guess that goes for any standard dynamic that's lazily initialized
20:40 awwaiid joined #perl6-dev
20:46 awwaiid joined #perl6-dev
21:17 lizmat http://www.unicode.org/emoji/charts/emoji-released.html  # fresh emojis  :-)
21:22 AlexDaniel U+1F91F spiderman gesture!
21:26 jnthn I wonder if there'll be a font with "face with symbols on mouth" there the symbols are valid Perl syntax... :)
21:26 jnthn *where
21:31 Geth ¦ rakudo/nom: 0f77dd7cbc | (Elizabeth Mattijsen)++ | src/core/Mu.pm
21:31 Geth ¦ rakudo/nom: Remove superfluous nqp::p6box_s
21:31 Geth ¦ rakudo/nom:
21:31 Geth ¦ rakudo/nom: These would probably be speshed/jitted away already, but this also
21:31 Geth ¦ rakudo/nom: makes the code easier to read.
21:31 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0f77dd7cbc
21:59 Geth ¦ rakudo/nom: b456122966 | (Elizabeth Mattijsen)++ | src/core/Mu.pm
21:59 Geth ¦ rakudo/nom: Reorganize BUILDALL logic
21:59 Geth ¦ rakudo/nom:
21:59 Geth ¦ rakudo/nom: So that we have fewer conditions to check on average when building
21:59 Geth ¦ rakudo/nom: an object using the default .new semantics.
21:59 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b456122966
21:59 lizmat afk&
22:14 TimToady_ joined #perl6-dev
22:14 japhb joined #perl6-dev
22:14 dalek joined #perl6-dev
22:14 ilmari_ joined #perl6-dev
22:15 btyler joined #perl6-dev
22:19 Ulti joined #perl6-dev
22:19 nine joined #perl6-dev
22:20 awwaiid joined #perl6-dev
22:26 MasterDuke joined #perl6-dev
22:57 cognominal joined #perl6-dev
23:40 travis-ci joined #perl6-dev
23:40 travis-ci Rakudo build failed. Elizabeth Mattijsen 'Reorganize BUILDALL logic
23:40 travis-ci https://travis-ci.org/rakudo/rakudo/builds/245134515 https://github.com/rakudo/rakudo/compare/0f77dd7cbc72...b4561229663b
23:40 travis-ci left #perl6-dev
23:40 buggable [travis build above] ☠ Did not recognize some failures. Check results manually.

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary