Zoffix | Actually t/spec/S09-typed-arrays/hashes.t | 00:02 | |
stupid copy-paste.... | |||
Actually t/spec/S09-typed-arrays/hashes.t doesn't have a contradictory test. It was just passing for the wrong reason. All of the failing tests reuse %h, checking the failures don't create `a` key.... but that key already exists in %h prior to tests and the reason they were passing is because trying to do a failed assignment nulled the hash | 00:03 | ||
So lizmat++ actually fixed an issue that wasn't being caught by bad tests. | |||
Geth | rakudo/nom: 61a65cee3d | (Zoffix Znet)++ | 2 files Fix REPL printing a thrown-and-caught Exception Fixes rt.perl.org/Ticket/Display.html?id...xn-1451692 |
00:05 | |
lizmat | and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2017/02/28/...a-changin/ | 00:50 | |
cog_ | lizmat++ | 01:04 | |
[Tux] | This is Rakudo version 2017.02-120-g61a65cee3 built on MoarVM version 2017.02-9-gc5379702 | 07:14 | |
csv-ip5xs 2.845 | |||
test 12.718 | |||
test-t 4.953 - 4.980 | |||
csv-parser 13.286 | |||
Geth | roast: 1c24625e0a | (Jonathan Worthington)++ | S17-supply/supplier-preserving.t Fix a race condition in S::P test. The @closings array could end up pushed to from multiple threads, so very occasionally something would go rotten. |
10:12 | |
jnthn | dogbert17: ^^ fixes one of the things you reported yesterday, hopefully :) | ||
lizmat | stackoverflow.com/questions/4250513...-processes | 10:19 | |
jnthn | No | ||
:) | |||
Replacing $*OUT isn't changing STDOUT at the handle level either, it's just changing the object that we use | 10:21 | ||
Could we fudge that somehow in the shell implementation? I guess, yes. | 10:22 | ||
A bit like we do with %*ENV and $*CWD - we never call setenv/chdir, we just use it in the appropriate places. | 10:24 | ||
But no, we haven't gone down the path of making $*OUT and $*ERR affect process spawning | |||
lizmat | nor do I think we can, because one could replace $*OUT with something that doesn't do anything with handles at the OS level | 10:25 | |
and how would you pass that on to a child process ? | |||
jnthn | Oh, you wouldn't | ||
You'd have to pretend :err and :out were supplied | 10:26 | ||
And write stuff to $*OUT and $*ERR as it comes in | |||
I'm still not sure whether we should, however ;) | 10:27 | ||
Geth | nqp: 44a3fed66b | (Jonathan Worthington)++ | tools/build/MOAR_REVISION Bump MOAR_REVISION. |
11:16 | |
Ā¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...7-gec99d41 | |||
roast: 7996c41781 | (Elizabeth Mattijsen)++ | S09-typed-arrays/hashes.t Adapt tests so we test something sensible If a STORE on a Hash fails, it should leave the Has unchanged, not empty (basically what ae7bcf1b8e1fa612413d changed). |
11:17 | ||
rakudo/nom: 26e6993bd8 | (Jonathan Worthington)++ | tools/build/NQP_REVISION Bump to get latest MoarVM. * Fix CArray so that setting a type object in an element (for struct, pointer, and array members) will pass NULL, not some junk value (jnthn++) * Fix a very occasional deadlock when GC occurred exactly at the same time as the event loop worker thread was being spawned (jnthn++) * Fixes to :i by using foldcase semantics, not lowercase (MasterDuke17++) * Fix reporting of thread spawning errors when out of or low on memory or handles (timotimo++) |
11:29 | ||
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....8-g44a3fed 2ad93cfa3d | (Jonathan Worthington)++ | 4 files |
|||
lizmat pulls, builds and tests | 11:37 | ||
Geth | roast: f42a931504 | (Elizabeth Mattijsen)++ | S05-modifier/ignorecase.t Unfudge now passing tests |
11:52 | |
jnthn | Figured you'd beat me to that :) | 11:53 | |
masak eats, shoots, and leaves :P | 11:58 | ||
lizmat | bamboo-shoots and leaves? | 12:03 | |
.oO( the food of pandas ) |
12:04 | ||
jnthn | :) | 12:08 | |
lunch & | |||
Zoffix | lucasb: 6.d is not scheduled; the list of proposed changes is at github.com/perl6/specs/blob/master/v6d.pod | 13:07 | |
lucasb | thanks Zoffix. I could add my ideas to specs/v6d.pod; but I'm sure they are controversial; so I prefer to say them here. If anybody likes them, then they can be added to v6d.pod | 13:08 | |
Proposed change #1: make native num defaults to 0.0 instead of NaN | 13:09 | ||
m: say my num $ | |||
camelia | NaN | ||
lucasb | Proposed change #2: make $() really mean the empty itemized list instead of the $/ thing | 13:10 | |
Zoffix | I'll raise you: all of our "uninitialized numeric is zero" concept needs to be fixed; or tossed entirely, as I propsoe it. | ||
m: say Num + 0 | 13:11 | ||
camelia | Invocant requires an instance of type Num, but a type object was passed. Did you forget a .new? in block <unit> at <tmp> line 1 |
||
Zoffix | ^ broken | ||
lucasb: what's the reasoning for the $() thing? Never once used it in my code to mean an itemized list. And I imagine its current meaning is much more useful, and would be even more useful if it checked definedness instead of truthiness | 13:12 | ||
lucasb | sorry, I didn't understand. Do you want Int+0, Num+0 to return 0 instead of failing? | 13:13 | |
Zoffix | lucasb: Perl 5 has a thing where an `undef` is zero in numeric context and it issues a warning. We copied that. | 13:15 | |
m: say quietly +Num | |||
camelia | 0 | ||
Zoffix | But not only do we have many numeric types, we also have an infinite number of `undef`s, so the concept doesn't really work. One of the issues is the Num + 0 example that should result in 0e0 + a warning | 13:16 | |
Zoffix greps logs | |||
lucasb | idk if it's relevant, but I was talking specifically about the *native* num, not Num. | ||
native int already is initialized with 0 | 13:17 | ||
native types are never undefined | |||
Zoffix | Well, don't see the logs, but there many more examples of this brokeness, and I came to the conclusion that we should abandon this idea of treating an undefined numeric as a zero entirely. | 13:18 | |
lucasb: it's not so much initialized that it can't be anything else (other than some other valid int number). Whereas with `num` we can give it a non-numeric value, a NaN | |||
There's no "uninitialized int" | |||
lucasb: but why 0.0? | 13:19 | ||
or rather 0e0 | |||
lizmat | could this be related to TimToady's slang work? www.nntp.perl.org/group/perl.perl6....g3320.html | ||
lucasb | I can only think of 0e0 or NaN as the default value for native num. between these 2, I personaly prefer 0e0 | 13:21 | |
Zoffix | lucasb: but why? | ||
lucasb | I can't put into words, it just feels the right thing, sorry :) | 13:22 | |
Zoffix | heh | 13:23 | |
lucasb | Proposed change #3: get rid of the undefine() function and add .clear methods to Array and Hash | 13:24 | |
Zoffix | NaN just feels right to me: no number was assigned to the num, so it doesn't have a number, or reworded, it has not-a-number | ||
lucasb | undefine() doesn't undefine array and hashes, it just clears them | ||
Zoffix | we have an undefine function? :o | ||
lucasb | m: my @a; undefine(@a); say @a.defined | ||
camelia | True | ||
lucasb | I wish there was @a.clear and %h.clear for this purpose | ||
Zoffix is happy with = () | 13:25 | ||
timotimo | what, we have undefine()? | ||
Zoffix | Yeah, I'm surprised too | ||
There's a whole bunch of tests for it too, although it's not documented. | 13:26 | ||
lucasb | I guess nobody uses it :) | ||
an indicantion that it is a candidate to go away? | |||
Zoffix | lucasb: heh, well, the "nobody uses it" is based on two people, at least one of which doesn't use Perl 6... | 13:27 | |
lucasb: there are tests for it in the Perl 6 Specification, so it's not going away without a fight :) | |||
lizmat | it's actually in the speculation: S32-setting-library/Basics, line 60 | ||
lucasb | I was half joking. undefine() for scalars makes sense. I just pointed its behavior with Array and Hash | 13:28 | |
lizmat | actual implementation is just assiging Nil to whatever is being passed | ||
timotimo | right | 13:29 | |
lizmat | actually, assign Empty to arrays and hashes | ||
lucasb | yes, assinging Nil/Empty/() to arrays and hahes *makes* sense. just the name "undefine" is a little off for arrays and hashes, because it can be confused with the definedness of the object, which concrete arrays and hashes are always defined | 13:31 | |
these 3 are the only changes that come to my mind, now. thanks everybody for listening :) | 13:33 | ||
timotimo | that's a good number | 13:34 | |
perl6 started with how many hundred changes that were suggested? ;) | 13:35 | ||
lucasb | 331, 311 rfcs or something :) | ||
Zoffix | lucasb: well, write them down | ||
huggable: v6.d | |||
huggable | Zoffix, Proposed changes for Perl 6 v6.d: github.com/perl6/specs/blob/master/v6d.pod | ||
Zoffix | "Please only submit planned changes if you are willing to provide a patch to implement them." | 13:36 | |
lucasb | oops, 361 rfcs to be exact | ||
Zoffix | lucasb: I can make the patches for you if you don't wish to do them yourself, but it'll be your job to argue for the change. (mention that fact in stakehodler part) | 13:37 | |
lucasb | Zoffix: thanks! | ||
jnthn back | 13:38 | ||
lucasb | I feel the ideas need to achieve a little consensus before adding them to v6d.pod, so let the ideas stay a little in the air in the following weeks, for people to talk about... | ||
Zoffix will likely forget about this conversation by tomorrow :} | 13:39 | ||
lucasb | no problem, I always repeat N times my ideas, before I get a definite yes or no. so I'll bring this up other time :) | 13:40 | |
Zoffix | lizmat: fwiw, perl6-debug-m doesn't even start for me. I get "Illegal option --nqp-lib" | 13:41 | |
But the error in the message does suggest the brain changes, indeed. | 13:42 | ||
timotimo | jnthn: i'm inclined to write up a response along "DIHWIDT" to bgill's RT #130886 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130886 | ||
timotimo | though it surprises me a little that we don't get "inconsistent bind result" there | ||
jnthn | Ah, is that the side-effects in where clauses? | 13:43 | |
Zoffix doesn't get where the inconsistent bind is | |||
jnthn | But yeah, if you do side effects in your where clauses and something breaks, you get to keep all the pieces so far as I'm concerned. | 13:44 | |
Zoffix | As I see it, the where clause can give different result for same input; there are no sideeffects | ||
timotimo | yup, the where clause pulls one value out of an iterator each time | 13:45 | |
there are side-effects, though | |||
the iterator gets advanced | |||
jnthn | pull-one is a side-effect | ||
timotimo | i'll write something up | ||
jnthn | timotimo++ | ||
Zoffix | m: multi foo($ where {$++ %% 5 ?? 1 !! 0}) { say "here" }; multi foo($) { say "ā„ | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Unable to parse expression in double quotes; couldn't find final '"' at <tmp>:1 ------> 3}) { say "here" }; multi foo($) { say "ā„7ā5<EOL> expecting any of: argument list ā¦ |
||
Zoffix | m: multi foo($ where {$++ %% 5 ?? 1 !! 0}) { say "here" }; multi foo($) { say "ā„" }; foo(42) xx 20 | ||
camelia | here here here here here here here here here here here here here here here here here here here here |
||
Zoffix | m: multi foo($ where {$++ %% 2 ?? 1 !! 0}) { say "here" }; multi foo($) { say "ā„" }; foo(42) xx 20 | 13:46 | |
camelia | here here here here here here here here here here here here here here here here here here here here |
||
Zoffix | m: multi foo($ where {$++ %% 2 ?? 1 !! 0}) { say "here" }; multi foo($) { say "ā„" }; foo(42) for ^20 | 13:47 | |
camelia | here here here here here here here here here here here here here here here here here here here here |
||
timotimo | m: my $val; multi foo($ where {$val++ %% 2 ?? 1 !! 0}) { say "here" }; multi foo($) { say "ā„" }; foo(42) for ^20 | 13:49 | |
camelia | Internal error: inconsistent bind result in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
timotimo | replied to that bug | 13:56 | |
Geth | rakudo/nom: 05add43243 | (Jonathan Worthington)++ | 2 files Default to translating newlines in Proc::Async. At least, for stdout and stderr. Still need to look into stdin. |
||
[Coke] | (irclog.perlgeek.de/perl6-dev/2017-..._14178991) - I think this is too strongly worded. Someone with a good idea may not end up implementing the idea; Certainly you can't complain if no one volunteers to do it on your behalf... | ||
perlpilot agrees with [Coke] FWIW | |||
(good morning btw :) | |||
timotimo | ohai perlpilot | 13:57 | |
Zoffix | man, our default REPL is terrible, can't even move cursor around | 14:05 | |
timotimo | if you don't have anything readline-like ... yeah | 14:06 | |
i'm glad we don't have a readline implementation in core, though | |||
DrForr | so am I :) :/ | 14:08 | |
timotimo | you know how linenoise started, and how linenoise ended up being? :P | ||
"bah, readline is like five million lines of code. it can't be that difficult to write a readline-like in a few hundred lines" | 14:09 | ||
"oh, this doesn't work on all systems. oh, there's some edge cases here. ah, we have to support these kinds of system properties. oh, not all terminals behave the same way" | |||
"how the fuck did we end up with six million lines of code?!?" | |||
DrForr | Those who do not understand terminals are doomed to reimplement them, and even worse. | 14:10 | |
Zoffix | It has 6 million lines of code? :o | ||
timotimo | no it doesn't, that was pure hyperbole | ||
it probably has less LoC than gnu readline | 14:11 | ||
but still | |||
people always be like "it can't be hard to make the cursor move around and have a bit of history" | 14:12 | ||
and then they either end up with a broken/buggy/incomplete implementation, or they figure out that it can actually be hard | |||
in short: fuck. this. shit. | |||
jnthn | Maybe the default repl should just start a web server and open your browser :P | 14:13 | |
perlpilot | timotimo: remember that progress is made by the unreasonable man ;) | ||
Zoffix | m: sub foo { return ($^a, False) }; my ($a, $b) = foo Slip; dd [$a, $b] | ||
camelia | [Slip, Bool::False] | ||
Zoffix | wc | ||
timotimo | jnthn: actually, that sounds kinda nice | ||
brrt | anybody recall the antirez guy writing a text editor in 1kb | 14:21 | |
timotimo | cool | ||
brrt | the good thing about that 1kb was that it was really easy to find bugs in :-) | ||
Geth | rakudo/nom: 0a2eef8fb0 | (Jonathan Worthington)++ | src/core/Str.pm Add a :translate-nl option to Str.encode. If we're on Windows, this will replace \n with \r\n. At some point it would be nice to get VM-backed decoders to do this in a single pass, but that can wait until the larger upcoming encoding refactors. |
14:28 | |
lizmat | jnthn: maybe make :$translate-nl = False default to Rakudo::Internals.IS-WIN ? | 14:34 | |
Geth | rakudo/nom: 2973ccd5c7 | (Jonathan Worthington)++ | src/core/Proc/Async.pm Make Proc::Async do newline translation on stdin. So that print/put/say on Windows will transform \n to \r\n. |
14:36 | |
jnthn | lizmat: No because of the patch I just pushed :) | 14:37 | |
Which uses it as the default for stdout/stderr too | |||
d'oh, my :$enc = $!enc dupes something though | 14:38 | ||
I was sure that was already the way it iwas | |||
*was | |||
Geth | rakudo/nom: 779ef286f9 | (Jonathan Worthington)++ | src/core/Proc/Async.pm Tweak object-level enc/translate-nl defaulting. We don't need to do it twice for `enc`, and the previous appraoch to `translate-nl` being different from how we did it for `enc` was a bit inconsistent, even if functionally equivalent. |
14:53 | |
nqp: 2780ed774a | (Jonathan Worthington)++ | tools/build/MOAR_REVISION Bump MOAR_REVISION. |
|||
Ā¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...8-g5f9d698 | |||
rakudo/nom: b4118a7375 | (Jonathan Worthington)++ | tools/build/NQP_REVISION Get latest MoarVM. Exposes the newline translation functionality of VM-backed decoder, which Rakudo is now using. |
14:55 | ||
Ā¦ rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....9-g2780ed7 | |||
roast: 875cc112ea | (Jonathan Worthington)++ | S17-procasync/basic.t Test to cover RT #130788. |
14:56 | ||
roast: a5b0209812 | (Jonathan Worthington)++ | S17-procasync/basic.t Remove .subst("\r\n", "\n"). Not required after latest fixes. |
|||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130788 | ||
Zoffix | Wonder if github.com/perl6/roast/blob/master...l/stress.t really needs the randomness in it | 15:01 | |
I like running full stresstests, but that test's variance in runtimes is really annoying. Sometimes takes just 15 seconds, others 3-5 minutes :/ | |||
m: say 244/60 | 15:02 | ||
camelia | 4.066667 | ||
Zoffix | Well, 1-2 minutes. | ||
Geth | rakudo/nom: 7f9235c79d | (Zoffix Znet)++ | 2 files Fix REPL thinking returned stuff is a thrown exception With the current versionb, it's possible to trick REPL into thinking an exception was thrown when it really wasn't with code like: say "hi"; use nqp; my $x = REPL.new(nqp::getcomp("perl6"), %).repl-eval(q|die "meow"|); ... (5 more lines) |
15:10 | |
roast: 5b965eb8ed | (Jonathan Worthington)++ | S17-channel/stress.t Make a stress test a little less stressful. The 2 minutes sometimes needed was a rather long time to wait, and this smaller example will either fail or flap on the bug. |
|||
jnthn | git st | 15:11 | |
Zoffix | Wooo \o/ jnthn++ | ||
jnthn | oops | ||
:) | |||
masak .oO( git st was too much for me to type, so I'm using a ligature instead: git ļ¬ ) | 15:35 | ||
perlpilot | masak: why not "gst"? or ligature that too :) | 15:37 | |
Zoffix | why not g | ||
perlpilot | not enough variation to get all of the git commands out of that one character. | 15:38 | |
Zoffix | sure there is | 15:39 | |
perlpilot | unless there are many unicode variations of g that I'm not aware of ... | ||
Zoffix | g | ||
gg | |||
gggg | |||
etc | |||
timotimo | good game bro | ||
Zoffix | There are a few | ||
perlpilot | oh, but that messes with brevity | ||
Zoffix | āš ļ½š ššš°šššš“ššØā¢š¬š¶š ¶Ēµgļ»ļ»ļ»®Šįš¤Ä”É¢Ē„gįµĘĘgg | 15:40 | |
timotimo | %) | 15:41 | |
Zoffix | m: "ā ļ½š ššš°šššš“ššØā¢ Ēµgļ»ļ»ļ»®Šįš¤Ä”É¢Ē„gįµĘĘgg".comb.unique.elems | ||
camelia | ( no output ) | ||
Zoffix | m: "ā ļ½š ššš°šššš“ššØā¢ Ēµgļ»ļ»ļ»®Šįš¤Ä”É¢Ē„gįµĘĘgg".comb.unique.elems.say | ||
camelia | 26 | ||
Zoffix | 26 commands! | ||
lucasb | "my $var does SomeRole" works. should "my $var does role {...}" work too? | 15:54 | |
jnthn | No | ||
The does trait expects a typename after it | 15:55 | ||
lucasb | well, 'my $x; $x does role {...}' works | ||
jnthn | Right, that's the does infix operator | ||
lucasb | ah, got it! thanks jnthn | ||
difference between infix operator and an declaration | 15:56 | ||
jnthn | Note that my $x does Role is mixing into the container too | ||
Whreas the does operator is talking about the value | |||
Which makes a difference when it's a Scalar | |||
IOninja | ZOFVM: Files=1226, Tests=132924, 133 wallclock secs (22.01 usr 3.32 sys + 2402.17 cusr 312.99 csys = 2740.49 CPU) | 16:36 | |
Geth | rakudo/nom: 76f71878da | (Zoffix Znet)++ | src/core/IO/Path.pm [io grant] Do not cache IO::Path.e results Fixes RT#130889: rt.perl.org/Ticket/Display.html?id=130889 The problem in the ticket is due to IO::Path not setting $!e when write happens on a write-mode opened non-existent file. However, even if that were fixed, we're still open to issues where the file's existence changes on the filesystem, so we can't really cache that. |
16:43 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130889 | ||
roast: 908348eef1 | (Zoffix Znet)++ | S32-io/io-path.t Test IO::Path.e detects changes on filesystem RT#130889: rt.perl.org/Ticket/Display.html?id=130889 Rakudo fix: github.com/rakudo/rakudo/commit/76f71878da |
16:44 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130889 | ||
IOninja | RT#130887 "method is public, so .perl.EVAL ought to be round-tripping the data that it exposes, however that's stored" | 17:01 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130887 | ||
IOninja | Doubt we can do that without setting the private attributes, which aren't preserved in .perl.EVAL roundtrip | ||
ugexe | I'm surprised to see IO::Path.e caching go away (but glad). Seemed important last time I was getting stung by it | 17:45 | |
IOninja | ugexe: why surprised? | ||
ugexe | I got the impression it was important for performance reasons from when I would comment on how I didn't like it | 17:46 | |
IOninja | Ah. | ||
IOninja braces for lizmat's wrath then | 17:47 | ||
ugexe | ~1 year ago though | ||
IOninja | I removed it 'cause it's so obviously wrong to me; and I figured there'd be deoptimization, but I didn't even measure it | ||
ugexe | however if you do get rid of it that means you can get rid of instances of `"$!some_IO_Path".IO` (cache busting technique) | 17:48 | |
IOninja waits for [Tux] to drop the news of new perf mark | |||
star: with "/tmp/foo".IO { .e.say; .spurt("foo"); .e.say; .unlink; .e.say } | 17:57 | ||
camelia | True '/tmp/foo' is a directory, cannot do '.open' on a directory in block <unit> at <tmp> line 1 Actually thrown at: in any at gen/moar/m-Metamodel.nqp line 3096 in block <unit> at <tmp> line 1 |
||
IOninja | star: with "/tmp/foozzz".IO { .e.say; .spurt("foo"); .e.say; .unlink; .e.say } | ||
camelia | False True True |
||
ugexe | maybe `method e(--> Bool) { $!e = %*ENV<RAKUDO_IO_PATH_CACHE> && defined $!e ?? $!e !! Rakudo::Internals.FILETEST-E($.abspath) }` | 17:58 | |
IOninja | ^ another bug due to (now removed) .e caching. That's two just involving Perl 6; but IMO it should consider filesystem operations too, so caching it seems like a very bad idea. | ||
ewww env vars | |||
|Tux| | This is Rakudo version 2017.02-129-g76f71878d built on MoarVM version 2017.02-20-g773711e1 | 18:00 | |
csv-ip5xs 2.828 | |||
test 12.534 | |||
test-t 4.996 - 5.138 | |||
csv-parser 12.890 | |||
IOninja | m: say $*PERL.compiler.version | ||
camelia | v2017.02.129.g.76.f.7187 | ||
IOninja | buggable: speed | 18:01 | |
buggable | IOninja, āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā data for 2017-01-29ā2017-02-28; range: 4.788sā999.999s | ||
IOninja | lulzwat | ||
m: say (4.996 - 5.138)/2 - (4.800 - 4.827)/2 | 18:02 | ||
camelia | -0.0575 | ||
IOninja | So it's now... faster? | ||
Too much variance to tell for sure, but I don't see anything groundbreakingly slow due to .e cache removal :) | 18:03 | ||
And I'll tweak it more once the IO plan gets ratified. | |||
ugexe | i would look at build times, or things that have to do a large number of file accesses | ||
IOninja | mhm | ||
star: my $p = "/tmp/foo".IO; for ^1000_000 { $ = $p.e }; say now - INIT now | 18:04 | ||
camelia | 1.78135584 | ||
IOninja | m: my $p = "/tmp/foo".IO; for ^1000_000 { $ = $p.e }; say now - INIT now | ||
camelia | 3.29775591 | ||
IOninja | m: say 3.3/1.78 | 18:05 | |
camelia | 1.853933 | ||
lizmat | IOninja: no worries :-) | ||
IOninja | *phew* :) | ||
ugexe | star: my $p = "/tmp/foo".IO; for ^1000_000 { $ = $p.mkdir }; say now - INIT now | 18:07 | |
camelia | 6.554999 | 18:08 | |
ugexe | m: my $p = "/tmp/foo".IO; for ^1000_000 { $ = $p.mkdir }; say now - INIT now | ||
camelia | 5.7469882 | ||
ugexe | faster for that | ||
IOninja | cool | ||
buggable: speed | 18:14 | ||
buggable | IOninja, āā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā āāāā data for 2017-01-29ā2017-02-28; range: 4.788sā5.607s | ||
japhb | IOninja: FWIW, the general problem is that the stat(2) system call is both very common and very slow. The perl 5 solution to this was that every filesystem test defaulted to doing a fresh stat() for correctness, but it would also keep a copy of the most recently gathered stat buffer around, and you could explicitly indicate you wanted a filesystem test to operate on the cached stat buffer rather than do a fresh stat(). | 18:25 | |
This made a huge difference when doing multiple tests on the same directory entry -- the difference for tree walkers was rather extreme. | 18:26 | ||
It also allowed you to explicitly take a stat() at a given point in time and make use of that data, without worrying that someone would change the filesystem out from under you while you were working on it. | 18:27 | ||
*working with that point-in-time stat() snapshot | |||
IOninja | note | 18:29 | |
*noted | |||
Will address it in IO Action Plan | 18:30 | ||
lizmat | IOninja: in Perl 6 something like _ would be rather racy :-) | 18:37 | |
timotimo | _? | 18:39 | |
IOninja | the last stated filehandle in Perl 5 | ||
timotimo | oh | ||
IOninja | when you do stat tests on it it uses cached results | 18:40 | |
geekosaur | yeh. neat but not at all concurrent | ||
(which means I avoided it in p5 even without threads; with experience, some things just smell like a disaster waiting to happen) | 18:41 | ||
lizmat | yeah, that really was from a single process single CPU world :-) | 18:50 | |
geekosaur | even that has concurrency if you yield a green thread at each I/O action | 18:52 | |
(concurrent != parallel) | |||
not that p5 ever supported that, of course | 18:53 | ||
IOninja | Need more eyes on github.com/rakudo/rakudo/pull/1020 | 19:13 | |
(that's the one to remove the error for my @a = @a, @a stuff) | 19:18 | ||
perlpilot | IOninja: I don't know how much brain you want connected to the eyes, but it looked good to me. :) | 19:19 | |
lizmat wonders how hard it would be to make nqp::backtrace return an IterationBuffer instead of an nqp::list | 19:20 | ||
IOninja | perlpilot: so you're OK with removing 6.c-errata tests that PR breaks? | ||
perlpilot | that or fixing them if they're trying to test something useful and it's just the X::Whatever name that's problematic | 19:22 | |
(I don't know if the X::Syntax::Variable::Initializer was invented for the thing this reverts or not) | |||
If it was, then yes, remove them. | |||
IOninja | It was. | 19:23 | |
OK | |||
lizmat | reality check: Array.STORE is supposed to be eager, no ? | ||
if so, we could probably do the same trick I did with %h = %a, %h | |||
timotimo | "mostly eager", no? | ||
i.e. eager until it encounters a lazy? | |||
IOninja | m: my @a = lazy 1...Inf; say @a[^10] | ||
camelia | (1 2 3 4 5 6 7 8 9 10) | ||
lizmat | ah, yeah that :-( | ||
IOninja | Dunno if that calls it... | ||
lizmat | yeah, it does | 19:24 | |
hmmmm | |||
IOninja | m: my @a = 1ā¦Inf; say @a[^10] | ||
camelia | (1 2 3 4 5 6 7 8 9 10) | ||
TimToady | lizmat: yes, that nntp you linked indicates a new rakudo with an old nqp that doesn't provide setlang | 19:26 | |
so not really a slang problem, but a missing dep problem | 19:28 | ||
Geth | rakudo/nom: 6c873b9c93 | (Zoffix Znet)++ | t/02-rakudo/repl.t Add ticket number to a set of tests |
||
IOninja | ZOFVM: Files=1226, Tests=132926, 137 wallclock secs (22.71 usr 3.58 sys + 2511.66 cusr 333.40 csys = 2871.35 CPU) | 19:29 | |
stresstest is really fast now after jnthn++'s change to that test file :D | |||
TimToady finds it a bit odd to be on the opposite side of the world from europe, timing wise... | 19:30 | ||
there aren't many p6 people in the middle of the pacific ocean... | |||
lizmat | good top of the morn, TimToady :-) | 19:31 | |
TimToady | jnthn: to change stdout in place, presumably we'd do a reopen on PROCESS::OUT, not $*OUT, since it belongs to the whole process | 19:33 | |
Geth | rakudo/nom: cd47e2a806 | (Zoffix Znet)++ | src/core/REPL.pm Remove needless type constraint Variables are already Mus |
19:36 | |
rakudo/nom: 0f37dd38e0 | (Zoffix Znet)++ | t/02-rakudo/repl.t Test Nil line return in REPL ends up as Nil in output RT#130874: rt.perl.org/Ticket/Display.html?id=130874 Rakudo fix: github.com/rakudo/rakudo/commit/a274bdd122 |
|||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130874 | ||
rakudo/nom: 7966dad5e9 | (Elizabeth Mattijsen)++ | src/core/CallFrame.pm Make callframe() about 20% faster - lose the "level" attribute, it is only needed to initialize - make annotations an nqp::hash - adapt accessors accordingly |
19:37 | ||
[Coke] | .ask zoffix aren't variables Any, not Mu by default? | 19:40 | |
IOninja: oh, you re-renamed. | |||
m: my $output; say $output.WHAT; | 19:41 | ||
camelia | (Any) | ||
IOninja | [Coke]: parameters are. Variables and attributes are Mu type contraints. | 19:42 | |
[Coke]: the (Any) above is the default `is default` value | |||
m: my $x = Mu; | |||
camelia | ( no output ) | ||
IOninja | m: my Any $x = Mu | 19:43 | |
camelia | Type check failed in assignment to $x; expected Any but got Mu (Mu) in block <unit> at <tmp> line 1 |
||
IOninja | m: my $x is default(Mu); say $x.WHAT | ||
camelia | (Mu) | ||
IOninja | m: my $x; $x.VAR.of.say | ||
camelia | (Mu) | ||
Geth | roast: c7bf3a0aa4 | (Zoffix Znet)++ | S32-list/sort.t Test .sort on reified empty array does not crash RT#130866: rt.perl.org/Ticket/Display.html?id=130866 Rakudo fix: github.com/rakudo/rakudo/commit/75e070fdea |
19:46 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130866 | ||
Geth | roast/6.c-errata: 2c76bfa77e | (Zoffix Znet)++ | S09-typed-arrays/hashes.t Fix broken test in S09-typed-arrays/hashes.t The test mistakenly tests `a` key that already exists in %h prior to type-check tests being run. The key that is being auto-vivified in is `z`, not `a`, so change test to test for `z`'s auto-vivification. The only reason this test was passing in the past is because failed ... (9 more lines) |
20:00 | |
IOninja | s/array/hash/ | ||
lizmat | oops, I should have done that :-( | 20:05 | |
Geth | roast: 3cd5126000 | (Zoffix Znet)++ | S09-typed-arrays/hashes.t Test self-referential (in top-level) hash asignment RT#130870: rt.perl.org/Ticket/Display.html?id=130870 Rakudo fix: github.com/rakudo/rakudo/commit/ae7bcf1b8e1fa6 |
20:11 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130870 | ||
Geth | roast: af2d786d40 | (Zoffix Znet)++ | S17-supply/syntax.t Test `next` in `whenever` Rakudo implementation: github.com/rakudo/rakudo/commit/f9...7bfce12794 RT#130601: rt.perl.org/Ticket/Display.html?id=130601 |
20:43 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130601 | ||
lizmat | shouldn't List.reverse return a Seq rather than a List ? | 21:12 | |
moritz | lizmat: there's not much point in making that lazy, since you have to reify the original list anyway to be able to reverse | 21:37 | |
lizmat | no, not true, if we have an iterator that takes the reified list but traverses it in the opposite direction, we wouldn't need to copy it | 21:38 | |
currently, .reverse creates a reversed reified list and returns that | |||
if it were to return a Seq, that wouldn't be needed | 21:39 | ||
and it would then only create the reversed reified when really needed | |||
and not in a case such as for @a.reverse { } | |||
moritz | you have to be careful with lazy Array.reverse, so that changes to the array aren't reflected in a lazy .reverse | 21:40 | |
lizmat | the Array.iterator.push-all creates new containers afaik | 21:41 | |
so that would be covered | |||
IOninja | Would it be possible for me to get a commit bit to rakudo/star? Gonna give #78 a go when I get home. | 21:47 | |
lizmat | jnthn TimToady opinions about having List.reverse return a Seq rather than a List ? speculation mentions returning an Iterable, which maps to Seq post-GLR if I remember correctly | 22:00 | |
jnthn TimToady it would prevent unnecessary copying of a reified list in many cases | |||
jnthn TimToady like for @a.reverse { } | |||
jnthn | lizmat: Umm...I'm too tired to think straight any more, but it would be a breaking change potentially; my @a := @b.reverse; for example | 22:02 | |
But it's arguably better as Seq | |||
jnthn goes to rest :) | 22:03 | ||
lizmat | there are a few spectests that break, but they check for Listiness specifically | ||
good night, jnthn | |||
jnthn | 'night | ||
[Coke] | IOninja: I don't appear to have access to grant you access to star. | 22:11 | |
IOninja: tag jnthn, masak, moritz, perlpilot, pmichaud | 22:12 | ||
IOninja | *tag* | 22:15 | |
lizmat | good night, #perl6-dev! | 22:29 | |
IOninja | night | ||
MasterDuke | timotimo: aside from the not-written-yet spesh bisect tool, what would you suggest as the next step to troubleshoot that spesh/EVAL/div bug that i/Zoffix found? | 23:16 |