Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2017-03-26

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

All times shown according to UTC.

Time Nick Message
00:00 MasterDuke oh well, nobody's perfect
00:00 MasterDuke i may bug you tomorrow though, if you don't mind
00:01 vendethiel- joined #perl6-dev
00:01 timotimo you can certainly try :)
00:02 MasterDuke excellent, prepare to be bugged in ~16h
00:03 timotimo i'll try to be awake at that time
00:15 vendethiel joined #perl6-dev
00:28 * Zoffix notices for the first time newio branch isn't using $*SPEC
00:32 Zoffix .ask lizmat so we blow up $*SPEC? I'm in. Can we easily treat Windows same as *nix though? On Linux, C:/foo is a relative path, but on Windows it's absolute (can't create a dir with `:` in its name).
00:32 yoleaux2 Zoffix: I'll pass your message to lizmat.
00:47 AlexDaniel joined #perl6-dev
00:51 Zoffix Did 2015.03 Rakudo had some sort of different installation instructions? I'm having trouble finding a newio commit that builds. Build dies with "Unhandled exception: While looking for 'ModuleLoader.moarvm': no such file or directory"
01:03 AlexDani` joined #perl6-dev
01:05 Zoffix hehe
01:05 Zoffix Was thinking: should write tests for all the combinations of IO::Handle.open's args...
01:05 Zoffix $ perl6 -e 'IO::Handle.^lookup("open").signature.params.combinations.elems.say'
01:05 Zoffix 1048576
01:06 Zoffix :) heavy
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
02:52 Geth ¦ roast: 091931a717 | (Zoffix Znet)++ | S32-io/open.t
02:52 Geth ¦ roast: [io grant] Expand &open tests
02:52 Geth ¦ roast:
02:52 Geth ¦ roast: Add tests for argument combinations:
02:52 Geth ¦ roast: - :r
02:52 Geth ¦ roast: - :a
02:52 Geth ¦ roast: - :ra
02:52 Geth ¦ roast: - :append
02:52 Geth ¦ roast: <…commit message has 5 more lines…>
02:52 Geth ¦ roast: review: https://github.com/perl6/roast/commit/091931a717
04:08 Geth ¦ rakudo/nom: 4032953a00 | (Zoffix Znet)++ | src/core/IO/Handle.pm
04:08 Geth ¦ rakudo/nom: [io grant] Make IO::Handle.open 75% faster
04:08 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4032953a00
04:53 ZzZombo joined #perl6-dev
05:19 TimToady joined #perl6-dev
06:17 Geth ¦ rakudo/nom: 8370e8471a | (Zoffix Znet)++ | src/core/IO/Spec/Unix.pm
06:17 Geth ¦ rakudo/nom: Remove trailing whitespace
06:17 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8370e8471a
06:18 Geth ¦ rakudo/nom: 55abc6d1bc | (Zoffix Znet)++ | 2 files
06:18 Geth ¦ rakudo/nom: [io grant] Improve IO::Path.child perf on *nix
06:18 Geth ¦ rakudo/nom:
06:18 Geth ¦ rakudo/nom: - make IO::Path.child 2.1x faster on *nix
06:18 Geth ¦ rakudo/nom: - make IO::Spec::Unix.join 8.5x faster
06:18 Geth ¦ rakudo/nom: - make IO::Spec::Unix.catpath 9x faster
06:18 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/55abc6d1bc
06:31 [TuxCM] joined #perl6-dev
06:37 [TuxCM] This is Rakudo version 2017.03-36-g55abc6d1b built on MoarVM version 2017.03-25-ga8448142
06:37 [TuxCM] csv-ip5xs        2.985
06:37 [TuxCM] test            12.326
06:37 [TuxCM] test-t           4.876 - 4.907
06:37 [TuxCM] csv-parser      12.690
06:38 Zoffix buggable: speed
06:38 buggable Zoffix, ▁▁▁▁▂▁▂▂▂▂▂▂▂▁▂▁▁▃▂▂▂▂▂▁▁█▂▂▃▁▁▁▁▁▁▁▁▁▁▁▁▁▂▁▁▁▂▂▁▁ data for 2017-03-02–2017-03-26; range: 4.829s–7.664s
07:12 Zoffix What's the difference between `callwith` and `samewith`?
07:14 ZzZombo samewith calls same named multi as the current one.
07:26 Zoffix seems effects-wise, samewith throws X::NoMulti if it can't find any more candidates, whereas nextwith silently ignores that case.
07:26 Zoffix The speculations say samewith uses same dispatcher, but next* redispatches... so what does that mean in English?
07:29 Geth ¦ nqp: skids++ created pull request #349: Fixes for Perl6 FOREIGN_LANG
07:29 Geth ¦ nqp: review: https://github.com/perl6/nqp/pull/349
07:31 Zoffix Hm.. "Cannot auto-generate a proto method for 'BUILD' in the setting"
07:31 Zoffix Yet, I gave it a proto :/
07:33 Geth ¦ rakudo: skids++ created pull request #1047: Fix SEGV in FOREIGN_LANG after nqp fixes in nqp PR#349
07:33 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1047
07:39 Zoffix seems it wants proto method, not proto submethod
07:49 Woodi timotimo: chop @array to N pieces, put them on N threads, burn CPU, join. but I seriously have no experience with efficient parallel things. what jnthn++ proposed looks like v2.0 implementation for v1.0 :)
07:54 Woodi I think that in future, when async and parallel things will be standard" (hopefully), we should mark sequencial code same as we mark reentrant functions atm. in case someone want instruct computer to do work without RPC ar async features...
07:57 Zoffix m: class Foo { multi method new (Str $x) {}; multi method new (Str(Cool) $x) {} }.new: 'x'
07:57 camelia rakudo-moar 55abc6: OUTPUT: «Ambiguous call to 'new'; these signatures all match:␤:(Foo $: Str $x, *%_)␤:(Foo $: Cool $x, *%_)␤  in block <unit> at <tmp> line 1␤␤»
07:58 Zoffix Except they don't?
08:01 RabidGravy joined #perl6-dev
08:04 RabidGravy Hmm
08:05 RabidGravy m: (1,2,3).invert
08:05 camelia rakudo-moar 55abc6: OUTPUT: «Type check failed in invert; expected Pair but got Int (Int)␤  in block <unit> at <tmp> line 1␤␤»
08:05 Zoffix Known.
08:06 RabidGravy I know
08:06 RabidGravy I'm looking at the test
08:07 RabidGravy trying to work out why changing "role Associative" to "my role Associative[::TValue = Mu, ::TKey = Mu]" turns it into a failure rather than an exception
08:08 Zoffix What about my role Associative[Mu ::TValue = Mu, Mu ::TKey = Mu]
08:09 RabidGravy (the reason for changing it is to fix introspection of  "class C { has Str %.foo{subset :: of Str}; })
08:10 nine Zoffix: but they do? Str is Cool, so both Str and Str(Cool) match 'x'
08:10 Zoffix nine: they aren't ambiguous. Str is narrower.
08:10 Zoffix m: class Foo { multi method new (Str $x) {}; multi method new (Cool $x) {} }.new: 'x'
08:10 camelia rakudo-moar 55abc6: ( no output )
08:30 RabidGravy this is odd,  the .invert is returning the exception expected, *in a Seq*
08:34 * RabidGravy takes the change out to see if this was otherwise broken
08:37 RabidGravy Oh it was pre-broken
08:42 RabidGravy so am I right in saying that (1,2,3).invert *doesn't throw* in head?
08:42 RabidGravy HEAD
08:43 RabidGravy ah yes 7ea0f66189c03b27c9815966b274638dcaa4989e
08:44 RabidGravy as you were
08:49 Zoffix SDFA sdfa bv
08:49 Zoffix v afsd
08:49 Zoffix v asdf
08:49 Zoffix va sdf
08:49 Zoffix b asfdg
08:49 Zoffix b asfd
08:55 nine That's a strange dialect
08:56 moritz cat-on-they-keyboard-ish
08:57 nine It's been a while since I've had a cat. Maybe I'm just a bit rusty.
08:57 nine s/had/served/ # you see?
08:57 Zoffix It's "spend 1.5hours trying to squeeze 7% out of a method and failing compilations for stupid reasons..."
08:59 nine Your cat is optimizing rakudo? :)
09:00 Zoffix heh
09:03 Geth ¦ rakudo/nom: ae5e510fd0 | (Zoffix Znet)++ | src/core/IO/Path.pm
09:03 Geth ¦ rakudo/nom: Make IO::Path.new 7% faster when creating from Str
09:03 Geth ¦ rakudo/nom:
09:03 Geth ¦ rakudo/nom: Since a lot of IO::Paths are created from strings, avoiding the
09:03 Geth ¦ rakudo/nom: hitting the coercer gives a minor boost.
09:03 Geth ¦ rakudo/nom:
09:03 Geth ¦ rakudo/nom: Also fixes failure to detect empty path when
09:03 Geth ¦ rakudo/nom: using .new: :basename… form.
09:03 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ae5e510fd0
09:10 timotimo Woodi: do you know that chopping an array into N pieces, putting them into M threads, burning CPU, then joining is what hyper and race do?
09:11 timotimo well, the numbers work differently; it's "into pieces of size N"
09:40 Geth ¦ rakudo/nom: 4eef6dbf37 | (Zoffix Znet)++ | src/core/IO/Spec/Unix.pm
09:40 Geth ¦ rakudo/nom: Make IO::Spec::Unix.is-absolute about 4.4x faster
09:40 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4eef6dbf37
09:48 geekosaur joined #perl6-dev
10:01 RabidGravy Wondering if it is better to make Associative a multi rather than having the two parameters with a default
10:27 Geth ¦ rakudo/nom: dcf1bb200e | (Zoffix Znet)++ | src/core/IO/Spec/Unix.pm
10:27 Geth ¦ rakudo/nom: [io grant] Make IO::Spec::Unix.rel2abs 35% faster
10:27 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/dcf1bb200e
10:27 Geth ¦ rakudo/nom: d90c6bfb6c | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm
10:27 Geth ¦ rakudo/nom: Fix error message
10:27 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d90c6bfb6c
10:28 lizmat Files=1181, Tests=55992, 196 wallclock secs (11.67 usr  4.42 sys + 1162.56 cusr 109.48 csys = 1288.13 CPU)
10:28 yoleaux2 00:32Z <Zoffix> lizmat: so we blow up $*SPEC? I'm in. Can we easily treat Windows same as *nix though? On Linux, C:/foo is a relative path, but on Windows it's absolute (can't create a dir with `:` in its name).
10:29 lizmat .tell Zoffix I would welcome blowing up $*SPEC
10:29 yoleaux2 lizmat: I'll pass your message to Zoffix.
10:29 lizmat in the newio branch, a path basically consisted of 3 parts: volume (always '' on *nix), directory and basename
10:30 RabidGravy In order to pass the tests it needs to be "my role Associative[::TValue = Mu, ::TKey = Str(Any)]" which doesn't feel right, but I'll PR anyway
10:30 lizmat Zoffix: the combination of volumen and directory determined whether something was relative or absolute
10:31 lizmat to my recollection, even on Win, one must have a root slash to make something absolute:   C:foo is a relative dir
10:32 lizmat ah, so really starts-with('/') is what makes a path absolute
10:32 timotimo unless it starts with D:/?
10:32 Zoffix How is C:/foo not an absolute path on Windows?
10:32 yoleaux2 10:29Z <lizmat> Zoffix: I would welcome blowing up $*SPEC
10:32 lizmat C:/foo is absolute, C:foo isn't
10:33 Zoffix Ah, I see what you mean
10:33 timotimo that doesn't starts-with('/') though :P
10:33 lizmat if you always split up a path in volume, dir and basename
10:33 Zoffix lizmat: you said IO is over-engineered. Is that just the $*SPEC stuff or is there more?
10:33 timotimo OK
10:33 lizmat then volume takes the drive letter
10:33 lizmat or the network designation
10:33 timotimo but but but
10:34 timotimo you said "starts-with('/') is what makes a path absolute"
10:34 timotimo but then you said you have to split it up into volume, dir, and basename
10:34 lizmat sorry, "/" on the directory part of a path  :-)
10:34 timotimo :D
10:35 timotimo i had fun yesterday when the json standard (the one that i looked at, out of the many there are) used "codepoint" and "character" interchangably
10:35 lizmat .oO( that's not quite out of character )
10:40 geekosaur joined #perl6-dev
10:42 lizmat m: say { LEAVE say "bye"; 42 }()
10:42 camelia rakudo-moar d90c6b: OUTPUT: «bye␤42␤»
10:43 lizmat m: say { 42; LEAVE say "bye" }()   # position of LEAVE in block *does* matter wrt to return value
10:43 camelia rakudo-moar d90c6b: OUTPUT: «WARNINGS for <tmp>:␤Useless use of constant integer 42 in sink context (line 1)␤bye␤Nil␤»
10:43 lizmat I think this is a bug, but I also vaguely recall there's a ticket for it already
10:43 Geth ¦ rakudo: jonathanstowe++ created pull request #1048: Fix the introspection of attributes with explicitly typed keys
10:43 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1048
10:48 timotimo ooooh
10:48 timotimo good catch
10:48 lizmat yeah, running / testing that now  :-)
10:50 * Zoffix always assumed that was by design...
10:50 Zoffix Same with any phaser and CATCH block too
10:51 Zoffix m: say { 42; CATCH {} }()
10:51 camelia rakudo-moar d90c6b: OUTPUT: «WARNINGS for <tmp>:␤Useless use of constant integer 42 in sink context (line 1)␤Nil␤»
10:55 lizmat Zoffix: what would be the usability idea behind that behaviour?
10:55 lizmat I mean, if it doesn't matter where you put a phaser in a block, why does it matter if you put them at the end ?
10:56 lizmat arguably, it's easy to work around, once you know it.  But it still is a bit of a WAT
10:58 Geth ¦ rakudo/nom: a6ba994d39 | (Jonathan Stowe)++ | src/core/Associative.pm
10:58 Geth ¦ rakudo/nom: Fix the introspection of attributes with explicitly typed keys
10:58 Geth ¦ rakudo/nom:
10:58 Geth ¦ rakudo/nom: This was reported as https://github.com/jonathanstowe/JSON-Class/issues/3
10:58 Geth ¦ rakudo/nom:
10:58 Geth ¦ rakudo/nom: It appears that when the "BOOTSTRAP" Associative is made for the
10:58 Geth ¦ rakudo/nom: attributes type it has two parameters but when it is materialised
10:58 Geth ¦ rakudo/nom: to call 'of' on it, it fails because the Associative only has one
10:58 Geth ¦ rakudo/nom: <…commit message has 22 more lines…>
10:58 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a6ba994d39
10:58 Zoffix Don'
10:58 Geth ¦ rakudo/nom: dd271e18c1 | lizmat++ | src/core/Associative.pm
10:58 Geth ¦ rakudo/nom: Merge pull request #1048 from jonathanstowe/fully-shaped-associative
10:58 Geth ¦ rakudo/nom:
10:58 Geth ¦ rakudo/nom: Fix the introspection of attributes with explicitly typed keys
10:58 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/dd271e18c1
10:58 Zoffix Don't know about usability, but it fits with the "returns the last stament" thing...
10:59 lizmat even so, one might expect it to return the thunk / block then ?
11:00 lizmat I would prefer the view that phasers are invisible until you fire them  :-)
11:00 lizmat until they get fired
11:00 lizmat sneaky, I know, but in a Klingon world  :-)
11:00 Zoffix :)
11:05 lizmat m: class A { method a(--> True) { } }; my $now = now; for ^1000000 { A.a }; say now - $now
11:05 camelia rakudo-moar d90c6b: OUTPUT: «0.774548␤»
11:05 lizmat m: class A { method a() { True } }; my $now = now; for ^1000000 { A.a }; say now - $now
11:05 camelia rakudo-moar d90c6b: OUTPUT: «0.799003␤»
11:05 lizmat m: class A { method a(--> True) { } }; my $now = now; for ^1000000 { A.a }; say now - $now
11:05 camelia rakudo-moar d90c6b: OUTPUT: «0.77053339␤»
11:05 lizmat m: class A { method a() { True } }; my $now = now; for ^1000000 { A.a }; say now - $now
11:05 camelia rakudo-moar d90c6b: OUTPUT: «0.78772686␤»
11:06 nine I wonder if I shouldn't just get it over with and include CompUnit::Repository::Staging in the setting.
11:06 lizmat nine: what does it do ?   :-)
11:09 nine It's meant for packaging modules. You use e.g. /tmp/vendor as staging area to install the module that you want to package into. You can then just package the files generated there. On installation, all you have to do is to unpack those files into /usr/share/perl6/vendor
11:10 lizmat I would be +1 on that
11:11 nine Right now we treat the Staging repo as a custom repo, i.e. it gets loaded when resolving RAKUDOLIB. We specifically exclude such repos from a precomp file's dependency chain. But that fails if the generated precomp file references the repo in any way. Say through the CompUnit's .repo property.
11:13 nine The process already works when installing the CORE dist, but failed on the first module I've tried to package :/
11:18 geekosaur joined #perl6-dev
11:32 ZzZombo joined #perl6-dev
11:38 geekosaur joined #perl6-dev
11:39 geekosaur joined #perl6-dev
11:51 geekosaur joined #perl6-dev
11:53 nine Looks like the issue is connected to %?RESOURCES
11:55 geekosaur joined #perl6-dev
11:58 Geth ¦ nqp/master: 4 commits pushed by (Pawel Murias)++
11:58 Geth ¦ nqp/master: ad45110c69 | [js] Refactor to avoid cloning an array
11:58 Geth ¦ nqp/master: 9497ebd669 | [js] Fix style violation found by 'make js-lint'
11:58 Geth ¦ nqp/master: bb30a4df09 | [js] Remove unused part of a hack
11:58 Geth ¦ nqp/master: 91070a8a60 | [js] Add missing file
11:58 Geth ¦ nqp/master: review: https://github.com/perl6/nqp/compare/c247728b13...91070a8a60
11:59 geekosaur joined #perl6-dev
12:04 geekosaur joined #perl6-dev
12:07 Geth ¦ rakudo/nom: 4fdebc9702 | (Zoffix Znet)++ | src/core/IO/Spec/Unix.pm
12:07 Geth ¦ rakudo/nom: [io grant] Make IO::Spec::Unix.split 36x Faster
12:07 Geth ¦ rakudo/nom:
12:07 Geth ¦ rakudo/nom: - Affects IO::Path's .parent, .parts, .volume, .dirname, and .basename
12:07 Geth ¦ rakudo/nom: - Measurement of first call to .basename shows it's now 6x-10x faster
12:07 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4fdebc9702
12:07 Zoffix 8am... time to go to bed.
12:07 * Zoffix &
12:09 nine Or not :/ A minimal distribution still works just fine. Even if it's using NativeCall with its own helper library. But Inline::Perl5 will not even though that's just more of the same.
12:13 geekosaur joined #perl6-dev
12:21 geekosaur joined #perl6-dev
12:27 nine Ah, my test was just faulty! Due to timestap issues with the installed file it ended up re-compiling the minimal test module and thus not trigger the error.
12:27 nine Looks like using NativeCall in the module triggers the error while using Test does not.
12:28 geekosaur joined #perl6-dev
12:31 nine Dpendency chains! Using NativeCall::Compiler::GNU fails while using NativeCall::Types and then NativeCall::Compiler::GNU (which depends on Types) succeeds.
12:38 MasterDuke joined #perl6-dev
12:49 geekosaur joined #perl6-dev
12:57 geekosaur joined #perl6-dev
13:01 geekosaur joined #perl6-dev
13:04 geekosaur joined #perl6-dev
13:06 geekosaur joined #perl6-dev
13:29 geekosaur joined #perl6-dev
13:33 geekosaur joined #perl6-dev
13:37 geekosaur joined #perl6-dev
13:38 geekosaur joined #perl6-dev
13:41 lizmat Zoffix++  # slurp vs bare nqp now only 15x slower, as opposed to 19x before
13:42 lizmat m: use nqp; for ^10000 { my $PIO := nqp::open("ten","r"); my $slurped = nqp::readallfh($PIO); nqp::closefh($PIO) }; say now - INIT now
13:42 camelia rakudo-moar 4fdebc: OUTPUT: «Failed to open file ten: no such file or directory␤  in block <unit> at <tmp> line 1␤␤»
13:42 lizmat hmmm
13:43 lizmat $ 6 'use nqp; for ^10000 { my $PIO := nqp::open("ten","r"); my $slurped = nqp::readallfh($PIO); nqp::closefh($PIO) }; say now - INIT now'
13:43 lizmat 0.0995450
13:43 lizmat $ 6 'for ^10000 { my $slurped = "ten".IO.slurp }; say now - INIT now'
13:43 lizmat 1.3552516
13:43 lizmat afk again&
14:06 Ven joined #perl6-dev
14:07 geekosaur joined #perl6-dev
14:14 geekosaur joined #perl6-dev
14:31 Ven_ joined #perl6-dev
15:13 AlexDaniel joined #perl6-dev
15:20 Ven joined #perl6-dev
17:13 geekosaur joined #perl6-dev
17:53 Zoffix vis-a-vis "Interp / Spesh / JIT"; judging by colour in the profile, the red is bad, but what makes it red? What usually interferes with it being speshed/jitted?
17:57 lizmat code not being specific enough, I think
17:57 lizmat e.g. =:=
17:59 MasterDuke number of times it's called i believe, i.e., even a function that could be jitted might not be if it's only called a couple times
18:01 Zoffix It's called enough number of times.
18:06 samcv good *
18:06 Zoffix \o
18:06 MasterDuke have you tried offering brrt a small sacrifice?
18:06 samcv MasterDuke, how small?
18:08 MasterDuke couldn't say, don't know his tastes. maybe a box of thin mints per function to be jitted?
18:08 MasterDuke Zoffix: what function is it?
18:09 Zoffix secret
18:10 samcv :O
18:10 MasterDuke are you testing it in isolation? i ran into a problem when testing getting nqp::radix jitted where things in the mainline don't get jitted when run in nqp
18:11 MasterDuke e.g., `nqp-m -e 'nqp::op() for ^1000000` wasn't getting jitted, but `nqp-m -e 'sub a() {nqp::op() for ^1000000}; a()` was
18:16 Geth ¦ rakudo/nom: 0111f10933 | (Zoffix Znet)++ | src/core/IO/Spec/Unix.pm
18:16 Geth ¦ rakudo/nom: [io grant] Make IO::Spec::Unix.catdir 3.9x Faster
18:16 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0111f10933
18:19 Geth ¦ rakudo/nom: b4d80c06d7 | (Elizabeth Mattijsen)++ | src/core/IO/Path.pm
18:19 Geth ¦ rakudo/nom: Make .IO.slurp about 2x as fast
18:19 Geth ¦ rakudo/nom:
18:19 Geth ¦ rakudo/nom: If you don't specify any named parameters.  Would be 5x as fast if
18:19 Geth ¦ rakudo/nom: we didn't have to do self.abspath.
18:19 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b4d80c06d7
18:22 lizmat Zoffix: sorry
18:22 lizmat couldn't resist  :-)
18:22 Zoffix heh :) lizmat++
18:24 Zoffix .ask jnthn what are your thoughts on removing $*SPEC and all the IO::Spec* in v6.d? We'd treat all the OSes as mostly-same rather than mostly-differn. e.g. we'd use "/" as path separator on all OS's
18:24 yoleaux2 Zoffix: I'll pass your message to jnthn.
18:24 Zoffix .ask TimToady what are your thoughts on removing $*SPEC and all the IO::Spec* in v6.d? We'd treat all the OSes as mostly-same rather than mostly-differn. e.g. we'd use "/" as path separator on all OS's
18:24 yoleaux2 Zoffix: I'll pass your message to TimToady.
18:24 * lizmat is looking forward to those answers  :-)
18:29 lizmat Zoffix: fwiw, I think we need a PIO class: this would be used for all situations where we need a handle, but do not need to expose it
18:30 lizmat so it would not carry any attributes for line ending, encoding and what not: these would be set at creation on the PIO, but would not be HLL introspectable
18:38 chansen_ Im aware of the existence of nqp; But replacing large parts of Perl6 Core with nqp equivalent code only shows the lack of a performant VM
18:39 lizmat chansen_: agree
18:45 chansen_ Why is a majority part of Perl6 Core being rewritten in NQP?
18:47 AlexDaniel chansen_: because it gives Nx speedups today
18:48 Zoffix chansen_: lack of a sufficient number of humans capable of making the VM more performant.
18:52 chansen_ ok, thanks for the honest answers
18:58 mst and nqp is way more accessible than C
18:59 chansen_ mst: accessible?
18:59 cognominal joined #perl6-dev
18:59 mst chansen_: fast, safe C is *hard* for most of us
19:02 chansen_ The comparison is somewhat flawed, but yeah
19:03 lizmat m: role A[::T = Int] { method a(--> T) {} }; class B does A { }; dd B.a   # feels like a bug
19:03 camelia rakudo-moar b4d80c: OUTPUT: «Nil␤»
19:04 lizmat m: role A[::T = Int] { method a() { T } }; class B does A { }; dd B.a   # needs to be in method body
19:04 camelia rakudo-moar b4d80c: OUTPUT: «Int␤»
19:04 Zoffix m: role A[::T = Int] { method a(--> Int) {} }; class B does A { }; dd B.a   # feels like a bug
19:04 camelia rakudo-moar b4d80c: OUTPUT: «Nil␤»
19:04 Zoffix Seems isn't?
19:04 Zoffix 'cause it's a type and not a constant.
19:05 lizmat ??
19:05 Zoffix Is it?
19:05 Zoffix heh, OK nevermind then
19:05 lizmat m: role A[::T = Int] { method a(--> T) {} }; class B does A[Str] { }; dd B.a
19:05 camelia rakudo-moar b4d80c: OUTPUT: «Nil␤»
19:07 lizmat somehow it loses the value, or is codegenned at the wrong time
19:09 Zoffix But how come you say it's a value, instead of a type? Like a type-constraint on the method
19:10 Zoffix m: role A[::T = Int] { method a(--> T) {'X'} }; class B does A[Str] { }; dd B.a
19:10 camelia rakudo-moar b4d80c: OUTPUT: «X::TypeCheck::Return exception produced no message␤  in method a at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
19:10 Zoffix m: role A[::T = Int] { method a(--> T) {42} }; class B does A[Str] { }; dd B.a
19:10 camelia rakudo-moar b4d80c: OUTPUT: «X::TypeCheck::Return exception produced no message␤  in method a at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
19:10 * Zoffix shrugs
19:12 lizmat "loses the type value" is what I meant
19:27 mst chansen_: certainly, even though I don't know nqp yet, I'd be much more confident I could patch nqp code without breaking everything
19:30 MasterDuke joined #perl6-dev
19:50 Geth ¦ rakudo/nom: c3c849ed95 | (Elizabeth Mattijsen)++ | 16 files
19:50 Geth ¦ rakudo/nom: Use a(--> Foo) {} instead of a() { Foo } where possible
19:50 Geth ¦ rakudo/nom:
19:50 Geth ¦ rakudo/nom: Because it is about 20% faster.  No sure whether this will cause
19:50 Geth ¦ rakudo/nom: any noticeable speedups, but every little bit helps.  And I think
19:50 Geth ¦ rakudo/nom: it actually reads better.  And should provide some better optimization
19:50 Geth ¦ rakudo/nom: options.
19:50 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c3c849ed95
19:50 lizmat afk again&]
19:52 chansen_ mst: How would the intermediate representation, NQP protect you from stupidity?
19:53 chansen_ mst: the analogy for NQP in Perl5 is XS/C
19:57 timotimo nqp has simpler semantics, and far, far fewer builtins - be it functions or classes
19:57 mst chansen_: if you're going to insist on that analogy then you've completely missed the point.
19:59 timotimo i've heard jnthn muse a few times that some things that are currently nqp:: ops implemented in C inside moarvm should at some point be moved closer towards nqp
20:02 chansen_ mst: please educate me!
20:03 mst chansen_: nah, we're just going to go round in circles like we always do because you're too good at C to be able to imagine people who aren't
20:03 samcv gonna ask her so may get more varied answers
20:03 samcv m: 99999999.chr.say
20:03 camelia rakudo-moar b4d80c: OUTPUT: «Error encoding UTF-8 string: could not encode codepoint 99999999␤  in block <unit> at <tmp> line 1␤␤»
20:04 samcv draft new error message is: "Error encoding UTF-8 string: could not encode codepoint 199999999, codepoint out of bounds. Cannot encode higher than 1114111"
20:04 samcv should i say "Highest unicode codpoint is XXX" or just simply say cannot encode higher than that number?
20:04 AlexDaniel 1114111 :S
20:04 AlexDaniel I wonder if it should say 0x10FFFF
20:04 samcv that's 0x10FFFF in decimal
20:05 samcv well the current error gives the codepoint they *tried* to encode using demical
20:05 AlexDaniel yea, that would be weird if one was in hex… meh
20:05 samcv which is why i'm bringing it up here what it should say. maybe show both forms for optimum info?
20:06 AlexDaniel I'm just thinking that I've seen 0x10FFFF so many times, but 1114111 does not tell me anything… Unless I convert it to hex to figure out what it is.
20:07 samcv k
20:07 AlexDaniel m: (-55).chr.say
20:07 camelia rakudo-moar b4d80c: OUTPUT: «chr codepoint cannot be negative␤  in block <unit> at <tmp> line 1␤␤»
20:08 samcv Error encoding UTF-8 string: could not encode codepoint 199999999 (0xBEBC1FF), codepoint out of bounds. Cannot encode higher than 1114111 (0x10FFFF)
20:08 samcv how about this?
20:10 AlexDaniel I think it is awesome
20:11 AlexDaniel I wonder if it should be somewhat similar to this:
20:11 AlexDaniel m: say ‘hello’.substr(40)
20:11 camelia rakudo-moar c3c849: OUTPUT: «Start argument to substr out of range. Is: 40, should be in 0..5; use *-40 if you want to index relative to the end␤  in block <unit> at <tmp> line 1␤␤Actually thrown at:␤  in block <unit> at <tmp> line 1␤␤»
20:11 AlexDaniel probably not
20:24 nine chansen_: I've found nqp to actually be quite close to Perl 5 in terms of functionality. It feels like Perl 5 with the arcane cruft removed but without the magical features of Perl 6 added.
20:25 nine chansen_: that makes it quite accessible to me. You can hardly do anything subtly wrong in nqp. It either works or doesn't.
20:31 timotimo you can always forget to decont
20:31 nine But then it will probably break quite well
20:32 nine Also there must be the exception to the rule :)
20:32 timotimo i forget where that usually happens, but forgetting to decont stuff can cause subtler bugs than "does not work at all"
20:32 timotimo *shrug* of course :)
20:33 nine Practically nothing to what you have to remember when writing XS. Like forgetting SPAGAIN; and it will work always, except when the callback into Perl 5 runs a database query that returns more than 4000 rows.
20:33 nine Funny things like that.
20:33 nine Took me two full days to catch that one. Will never forget this experience.
20:34 timotimo ouch?
20:45 Geth ¦ rakudo: AlexDaniel++ created pull request #1049: Remove $.pid from Proc
20:45 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1049
20:46 timotimo joined #perl6-dev
21:07 Geth ¦ rakudo/nom: 5b8d4c2f42 | (Aleks-Daniel Jakimenko-Aleksejev)++ | src/core/Proc.pm
21:07 Geth ¦ rakudo/nom: Remove $.pid from Proc
21:07 Geth ¦ rakudo/nom:
21:07 Geth ¦ rakudo/nom: Not that we should not have it, but as of today it does nothing at
21:07 Geth ¦ rakudo/nom: all (making users assume that there is something wrong with their
21:07 Geth ¦ rakudo/nom: code).
21:07 Geth ¦ rakudo/nom:
21:07 Geth ¦ rakudo/nom: See https://irclog.perlgeek.de/perl6/2017-03-25#i_14323473
21:07 Geth ¦ rakudo/nom:
21:07 Geth ¦ rakudo/nom: Spectest clean.
21:07 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5b8d4c2f42
21:07 Geth ¦ rakudo/nom: ca2a77eee3 | (Zoffix Znet)++ | src/core/Proc.pm
21:07 Geth ¦ rakudo/nom: Merge pull request #1049 from AlexDaniel/there-is-no-pid
21:07 Geth ¦ rakudo/nom:
21:07 Geth ¦ rakudo/nom: Remove $.pid from Proc
21:07 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ca2a77eee3
21:54 Geth ¦ rakudo/nom: fa9aa47652 | (Zoffix Znet)++ | src/core/Rakudo/Internals.pm
21:54 Geth ¦ rakudo/nom: [io grant] Make R::I::SET_LINE_ENDING_ON_HANDLE 4.1x Faster
21:54 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fa9aa47652
23:29 agentzh joined #perl6-dev
23:29 agentzh joined #perl6-dev

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