Zoffix | .tell wander roast files should have the `use v6.*` of whatever language version they cover. So in 6.c-errata branch, all of them have `use v6.c`. In master, those are proposals for `v6.d`, but since that's currently unavaiable, they have `use v6.c` or `use v6.d.PREVIEW` and will be changed to 6.d on 6.d release. If you say you saw `use v6`, it should be changed to proper version (or can be just left until | 00:20 | |||||||||||||||||||||||||||||||||||||
yoleaux | Zoffix: I'll pass your message to wander. | ||||||||||||||||||||||||||||||||||||||
Zoffix | 6.d release when all of them get changed) | ||||||||||||||||||||||||||||||||||||||
.tell wander 6.d release when all of them get changed) | |||||||||||||||||||||||||||||||||||||||
yoleaux | Zoffix: I'll pass your message to wander. | ||||||||||||||||||||||||||||||||||||||
ugexe | it also tells github its a perl6 file | 00:33 | |||||||||||||||||||||||||||||||||||||
hmmm but it does not identify `v6.c` as perl6 (only `use v6;`) | 00:36 | ||||||||||||||||||||||||||||||||||||||
github.com/perl6/roast/search?l=perl | 00:37 | ||||||||||||||||||||||||||||||||||||||
Zoffix | It does, it just has heuristics for `strict` and `package` keywords with higher precedence | 01:03 | |||||||||||||||||||||||||||||||||||||
Ah, it does for non-.t files | 01:04 | ||||||||||||||||||||||||||||||||||||||
But for .t it has semicolon right after `6`: github.com/github/linguist/blob/ma...cs.rb#L464 | |||||||||||||||||||||||||||||||||||||||
And .pm is similarly busted: github.com/github/linguist/blob/ma...#L369-L375 | 01:06 | ||||||||||||||||||||||||||||||||||||||
.pl would work: github.com/github/linguist/blob/ma...#L359-L366 | |||||||||||||||||||||||||||||||||||||||
Basically all three need to be collected and a single sane thing should be made and used for all three | 01:07 | ||||||||||||||||||||||||||||||||||||||
Filed as github.com/github/linguist/issues/3906 | 01:10 | ||||||||||||||||||||||||||||||||||||||
samcv | MasterDuke_++ reminded me of something i was thinking of doing during my grant but should shortly last in MoarVM master | 04:23 | |||||||||||||||||||||||||||||||||||||
using memcpy instead of iterating by grapheme when collapsing strings, which happens somewhat often. and also when nqp::optimized is called. the new method, when the strands of a rope are all the same type will make folding it 4x faster | 04:24 | ||||||||||||||||||||||||||||||||||||||
wander | do we ought to add `use v6;` in every .t file of roast? is it for historical reason or for explicit? | 04:55 | |||||||||||||||||||||||||||||||||||||
yoleaux | 00:20Z <Zoffix> wander: roast files should have the `use v6.*` of whatever language version they cover. So in 6.c-errata branch, all of them have `use v6.c`. In master, those are proposals for `v6.d`, but since that's currently unavaiable, they have `use v6.c` or `use v6.d.PREVIEW` and will be changed to 6.d on 6.d release. If you say you saw `use v6`, it should be changed to proper version (or can be just left until | ||||||||||||||||||||||||||||||||||||||
00:20Z <Zoffix> wander: 6.d release when all of them get changed) | |||||||||||||||||||||||||||||||||||||||
wander | sorry | ||||||||||||||||||||||||||||||||||||||
accidentally send early log | 04:56 | ||||||||||||||||||||||||||||||||||||||
really? if we `use v6.d` in roast files, then roast seems be neither a test suit of 'Perl 6', or a substitution of 'Perl 6' spec, but test suit of rakudo implement | 05:02 | ||||||||||||||||||||||||||||||||||||||
for usage, we can add `use` info when testing; but is it proper to hardcoding in test files? | 05:05 | ||||||||||||||||||||||||||||||||||||||
samcv | wander: 6.d is the next version of perl6 | 05:15 | |||||||||||||||||||||||||||||||||||||
there is 6.c-errata branch for the older 6.c tests. roast is basically the in development tests for the spec. and when ready we will declare 6.d and the current master possibly with some changes will become 6.d branch | 05:18 | ||||||||||||||||||||||||||||||||||||||
wander | a new branch, i got it. | 05:22 | |||||||||||||||||||||||||||||||||||||
[Tux] |
|
07:51 | |||||||||||||||||||||||||||||||||||||
lizmat | Files=1229, Tests=75833, 316 wallclock secs (14.79 usr 5.35 sys + 2187.35 cusr 215.48 csys = 2422.97 CPU) | 08:26 | |||||||||||||||||||||||||||||||||||||
Geth | nqp: 7ce25e23d1 | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION Bump Moar to get collaps_strands improvement |
08:53 | |||||||||||||||||||||||||||||||||||||
nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...1-g8744857 7d7e7a0701 | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION This reverts commit 7ce25e23d183126a913a4f54fa0d105309573e59. Alas, this breaks quite a lot :-( |
|||||||||||||||||||||||||||||||||||||||
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...0-gb379050 | |||||||||||||||||||||||||||||||||||||||
ufobat_ | Zoffix, done and updated the PR | 10:22 | |||||||||||||||||||||||||||||||||||||
wander | I've seen comments like | 10:28 | |||||||||||||||||||||||||||||||||||||
# L<S02/Double-underscore forms/"The double-underscore forms are going away:"> | |||||||||||||||||||||||||||||||||||||||
what's the use of L tag? I know how L tag works, but don't know why we put it here. | 10:29 | ||||||||||||||||||||||||||||||||||||||
what's the meaning of the link | 10:30 | ||||||||||||||||||||||||||||||||||||||
or say | 10:34 | ||||||||||||||||||||||||||||||||||||||
by which conventions can I write down such a link | 10:37 | ||||||||||||||||||||||||||||||||||||||
Geth | roast/finish-pod: 590b7dcaeb | (Alex Chen)++ | 3 files Merge redundant test of =finish pod |
10:58 | |||||||||||||||||||||||||||||||||||||
roast: W4anD0eR96++ created pull request #355: Merge redundant test of =finish pod |
|||||||||||||||||||||||||||||||||||||||
synopsebot | SPEC#355 [open]: github.com/perl6/roast/pull/355 Merge redundant test of =finish pod | ||||||||||||||||||||||||||||||||||||||
Zoffix | "Thanks for the report! We'd welcome a pull request with test cases.": github.com/github/linguist/issues/...-344213665 | 11:05 | |||||||||||||||||||||||||||||||||||||
If anyone wants to hack a bit of ruby | |||||||||||||||||||||||||||||||||||||||
wander: those are "smart links". Don't know how they work but they show up on desin.perl6.org design.perl6.org/S02.html#Lexical_Conventions (notice right-aligned S02-* links). I don't pay much attention to these since design.perl6.org is now a historical document that's no longer actively gets updated | 11:06 | ||||||||||||||||||||||||||||||||||||||
Geth | roast: 590b7dcaeb | (Alex Chen)++ | 3 files Merge redundant test of =finish pod |
11:08 | |||||||||||||||||||||||||||||||||||||
roast: f7f542e08e | (Zoffix Znet)++ (committed using GitHub Web editor) | 3 files Merge pull request #355 from perl6/finish-pod Merge redundant test of =finish pod |
|||||||||||||||||||||||||||||||||||||||
wander | ok i see it. | 11:10 | |||||||||||||||||||||||||||||||||||||
the architecture of roast is quite different from that of historical specs. | 11:11 | ||||||||||||||||||||||||||||||||||||||
I find it annoying that tests of pod are scattered everywhere | 11:13 | ||||||||||||||||||||||||||||||||||||||
Zoffix | :) | 11:15 | |||||||||||||||||||||||||||||||||||||
wander | some is in 'S02-lexical-conventions/comments.t', some is in 'S02-lexical-conventions/pod-in-multi-line-exprs.t', and most in 'S02-literials/pod.t' | ||||||||||||||||||||||||||||||||||||||
although some special pod cases are better to be in separated files, but the current situation is more messy. | 11:17 | ||||||||||||||||||||||||||||||||||||||
Zoffix | w00t an email on local mongers group proposing a new name idea for Perl 6... Happy a local group is talking about Perl 6. | 11:32 | |||||||||||||||||||||||||||||||||||||
The proposed name is the most bizarre one I've seen to date: "+-1" | |||||||||||||||||||||||||||||||||||||||
jnthn is surprised he hasn't seen Perly McPerlface yet | 11:34 | ||||||||||||||||||||||||||||||||||||||
samcv | +-1? | 11:36 | |||||||||||||||||||||||||||||||||||||
haha jnthn | |||||||||||||||||||||||||||||||||||||||
ufobat_ | +-1 is perl4 again? | ||||||||||||||||||||||||||||||||||||||
samcv | perl5 - (-1) | 11:37 | |||||||||||||||||||||||||||||||||||||
Zoffix | samcv: yeah: mail.pm.org/pipermail/toronto-pm/20...04024.html | 11:38 | |||||||||||||||||||||||||||||||||||||
lizmat | ±1 # unicode version | 11:43 | |||||||||||||||||||||||||||||||||||||
wander | psix, [sɪks] or [pɪ-] | 11:52 | |||||||||||||||||||||||||||||||||||||
Zoffix | Yeah, "psix where 'p' is silent" aka "P6" currently seems to be the leading candidate | 11:59 | |||||||||||||||||||||||||||||||||||||
jnthn | Missing test file: t/spec/S02-lexical-conventions/begin_end_pod.t | ||||||||||||||||||||||||||||||||||||||
Missing test file: t/spec/S02-lexical-conventions/end-pod.t | |||||||||||||||||||||||||||||||||||||||
Zoffix | jnthn: that's normal; work in progress | 12:00 | |||||||||||||||||||||||||||||||||||||
wander will fix it: github.com/perl6/roast/pull/355#is...-344225401 | 12:01 | ||||||||||||||||||||||||||||||||||||||
jnthn | OK, cool | ||||||||||||||||||||||||||||||||||||||
Just testing some MoarVM fixes that should elimiante a bit of flappiness | 12:02 | ||||||||||||||||||||||||||||||||||||||
Geth | nqp: 75323714e2 | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION Bump to jnthn's latest concurrency fixes |
12:08 | |||||||||||||||||||||||||||||||||||||
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...5-ge694386 | |||||||||||||||||||||||||||||||||||||||
dogbert11 | lizmat: the hang is still present :( | 12:12 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: W4anD0eR96++ created pull request #1250: Satisfy roast commit |
12:15 | |||||||||||||||||||||||||||||||||||||
synopsebot | RAKUDO#1250 [open]: github.com/rakudo/rakudo/pull/1250 Satisfy roast commit | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 417d7dc5fe | (Alex Chen)++ (committed using GitHub Web editor) | t/spectest.data Satisfy roast commit Relevant perl6/roast#355 Run S02-lexical-conventions/finish-pod.t Remove S02-lexical-conventions/begin_end_pod.t Remove S02-lexical-conventions/end-pod.t |
||||||||||||||||||||||||||||||||||||||
rakudo: 0e4b8cc086 | lizmat++ (committed using GitHub Web editor) | t/spectest.data Merge pull request #1250 from W4anD0eR96/patch-1 Satisfy roast commit |
|||||||||||||||||||||||||||||||||||||||
rakudo: 0378292e47 | (Elizabeth Mattijsen)++ | tools/build/NQP_REVISION Bump NQP to get latest MoarVM concurrency fixes |
12:28 | ||||||||||||||||||||||||||||||||||||||
dogbert11 | lizmat: did your SEGV disappear? | 12:58 | |||||||||||||||||||||||||||||||||||||
lizmat | haven't tried yet | 12:59 | |||||||||||||||||||||||||||||||||||||
ufobat_ | Zoffix, sorry I forgot about the CWD. PR has been updated :-) | 13:01 | |||||||||||||||||||||||||||||||||||||
Zoffix | ufobat_: how come "next if nqp::iseq_s($part, $empty)" was removed? | 13:17 | |||||||||||||||||||||||||||||||||||||
ufobat_ | wait a sec | 13:22 | |||||||||||||||||||||||||||||||||||||
i need to switch from daylight job to nighttime code mode | 13:26 | ||||||||||||||||||||||||||||||||||||||
it was actually required to keep it, because on 'C:\' with skipping all empty party you wound't get the \ bag on the string | 13:29 | ||||||||||||||||||||||||||||||||||||||
Zoffix | ufobat_: no rush. I'd like to build this on Windows and try out a few things and I won't have access to my windows box for ~10h | ||||||||||||||||||||||||||||||||||||||
ufobat_ | on the other side the empty $part is handled as well in ... | ||||||||||||||||||||||||||||||||||||||
the other/inner while loop | 13:30 | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: "///".IO.resolve.say | ||||||||||||||||||||||||||||||||||||||
camelia | "/".IO | ||||||||||||||||||||||||||||||||||||||
Zoffix | But that would now give "///".IO, wouldn't it? | ||||||||||||||||||||||||||||||||||||||
ufobat_ | github.com/ufobat/rakudo/blob/7990...th.pm#L305 | ||||||||||||||||||||||||||||||||||||||
> perl6 -e '$*SPEC= IO::Spec::Win32; IO::Path.new("C:\\\\\\").resolve.say' | 13:31 | ||||||||||||||||||||||||||||||||||||||
"\C:".IO | |||||||||||||||||||||||||||||||||||||||
Zoffix | That's just the non-resolving cleanup codepath. It only triggers when it can't find the path on disk and when `:completely` flag is off | ||||||||||||||||||||||||||||||||||||||
ufobat_: that's with your patch? | |||||||||||||||||||||||||||||||||||||||
ufobat_ | aye | ||||||||||||||||||||||||||||||||||||||
Zoffix | Also, you can just use `IO::Path::Win32.new("C:\\\\\\").resolve.say` | ||||||||||||||||||||||||||||||||||||||
ufobat_ | ah cool :-) | ||||||||||||||||||||||||||||||||||||||
now i'd say that i would probably add a skip on nqp::push_s | 13:32 | ||||||||||||||||||||||||||||||||||||||
in the else, if there is an empty $part | |||||||||||||||||||||||||||||||||||||||
Zoffix | m: my $*SPEC = IO::Spec::Win32; "//foo/bar/meow".IO.resolve.say | ||||||||||||||||||||||||||||||||||||||
camelia | "\foo\bar\meow".IO | ||||||||||||||||||||||||||||||||||||||
ufobat_ | github.com/ufobat/rakudo/blob/7990...th.pm#L327 | ||||||||||||||||||||||||||||||||||||||
Zoffix | That also is wrong. | 13:33 | |||||||||||||||||||||||||||||||||||||
Oh wait | |||||||||||||||||||||||||||||||||||||||
m: my $*SPEC = IO::Spec::Win32; 「\\foo\bar\meow」.IO.resolve.say | |||||||||||||||||||||||||||||||||||||||
camelia | "\foo\bar\meow".IO | ||||||||||||||||||||||||||||||||||||||
Zoffix | That is wrong. | ||||||||||||||||||||||||||||||||||||||
ufobat_ | > perl6 -e ' my $*SPEC = IO::Spec::Win32; "\\\\foo\\bar\\meow".IO.resolve.say ' | ||||||||||||||||||||||||||||||||||||||
"\foo\bar\meow".IO | |||||||||||||||||||||||||||||||||||||||
yeah :( thats wrong | 13:34 | ||||||||||||||||||||||||||||||||||||||
Zoffix | It's possible a hackishish fixes could be detecting IO::Spec::Win32 $!SPEC in resolve and then, for Windows, using one of the path splitting methods to extract the UNC/volume thing and then just handling that speparately. | 13:36 | |||||||||||||||||||||||||||||||||||||
m: IO::Spec::Win32.split(「\\foo\bar\meow」).perl.ay | 13:37 | ||||||||||||||||||||||||||||||||||||||
camelia | No such method 'ay' for invocant of type 'Str'. Did you mean any of these? any say in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
Zoffix | m: IO::Spec::Win32.split(「\\foo\bar\meow」).perl.say | ||||||||||||||||||||||||||||||||||||||
camelia | (:volume("\\\\foo\\bar"), :dirname("\\"), :basename("meow")) | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: IO::Spec::Win32.split("\\\\\x[308]foo\\bar\\meow").perl.say | 13:38 | |||||||||||||||||||||||||||||||||||||
camelia | (:volume(""), :dirname("\\\̈foo\\bar"), :basename("meow")) | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: IO::Spec::Win32.split("C:\x[308]foo\\bar\\meow").perl.say | ||||||||||||||||||||||||||||||||||||||
camelia | (:volume(""), :dirname("C:̈foo\\bar"), :basename("meow")) | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: IO::Spec::Win32.split("C:\\x[308]foo\\bar\\meow").perl.say | 13:39 | |||||||||||||||||||||||||||||||||||||
camelia | (:volume("C:"), :dirname("\\x[308]foo\\bar"), :basename("meow")) | ||||||||||||||||||||||||||||||||||||||
ufobat_ | i was actually missing an.. probably wrong wording now, an NQPish version of IO::Spec::* and both IO::Path and IO::Spec:* would depend on this implmentation | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: IO::Spec::Win32.split("C:\\foo\\bar\\\x[308]meow").perl.say | 13:41 | |||||||||||||||||||||||||||||||||||||
camelia | (:volume("C:"), :dirname("\\foo"), :basename("bar\̈meow")) | ||||||||||||||||||||||||||||||||||||||
ufobat_ | m: say IO::Spec::Win32.split("\\\\host\\bla\blubb"); | 13:45 | |||||||||||||||||||||||||||||||||||||
camelia | (volume => \\host\bla\blubb dirname => \ basename => \) | ||||||||||||||||||||||||||||||||||||||
ufobat_ | is that wrong? | ||||||||||||||||||||||||||||||||||||||
Zoffix | So basically, you'd do my $volume = %.parts<volume>; my $path = join $sep, %!parts<dirname basename>; (the first %. is intentionally a method call, to set %!parts) and then use $path instead of self.absolute here: github.com/ufobat/rakudo/blob/7990...#L248-L258 | 13:46 | |||||||||||||||||||||||||||||||||||||
And the rest of $volume concation might work out. We need the `next if nqp::iseq_s($part, $empty)` check back, I think | |||||||||||||||||||||||||||||||||||||||
ufobat_: write this out in just normal Perl 6 code. Don't worry about nqp. Let's get it working right first and we (or someone else) can optimize it later. | 13:47 | ||||||||||||||||||||||||||||||||||||||
m: say IO::Spec::Win32.split("\\\\host\\bla\blubb").perl | |||||||||||||||||||||||||||||||||||||||
camelia | (:volume("\\\\host\\bla\blubb"), :dirname("\\"), :basename("\\")) | ||||||||||||||||||||||||||||||||||||||
Zoffix | Looks weird by rightish to me. The \b is a backspace | ||||||||||||||||||||||||||||||||||||||
Zoffix & | 13:48 | ||||||||||||||||||||||||||||||||||||||
ufobat_ | sorry? didnt understand? | ||||||||||||||||||||||||||||||||||||||
Zoffix | ufobat_: which part? :) | 13:49 | |||||||||||||||||||||||||||||||||||||
ufobat_ | your last line :-) | ||||||||||||||||||||||||||||||||||||||
Zoffix | s/by/but/; | 13:50 | |||||||||||||||||||||||||||||||||||||
ufobat_ | ah | ||||||||||||||||||||||||||||||||||||||
but why is everyhing in the volume? | |||||||||||||||||||||||||||||||||||||||
Zoffix | ufobat_: it's a UNC path: en.wikipedia.org/wiki/Path_(comput...Convention | 13:51 | |||||||||||||||||||||||||||||||||||||
ufobat_ | going to read it, thanks. | 13:52 | |||||||||||||||||||||||||||||||||||||
ufobat_ must switch back to daylight job mode :) | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 3cba620404 | (Elizabeth Mattijsen)++ | 2 files Fix JSONizing exceptions, spotted by Garland_g[m]++ When running with RAKUDO_EXCEPTIONS_HANDLER=JSON, any Exception that contains another Exception as one of the attributes, would throw. And since we apparently don't have a CATCHer there, would give a very LTA error message. Fixed by moving the JSONizing of an Exception to Rakudo::Internals::JSON, so it can recursively handle itself. And adapt the exception handling in Exception accordingly. |
13:54 | |||||||||||||||||||||||||||||||||||||
lizmat | afaik, no RT ticket or GH issue for this one | 13:55 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: b366859817 | (Elizabeth Mattijsen)++ | src/core/Exception.pm Oops, this is dead code now |
13:58 | |||||||||||||||||||||||||||||||||||||
Zoffix | m: try +"x"; say $!.^attributes.grep(*.has_accessor) | 14:00 | |||||||||||||||||||||||||||||||||||||
camelia | (Mu $!source Mu $!pos Mu $!reason) | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: try +"x"; say $!.Capture | ||||||||||||||||||||||||||||||||||||||
camelia | \(:pos(0), :reason("base-10 number must begin with valid digits or '.'"), :source("x")) | ||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build failed. Elizabeth Mattijsen 'Bump NQP to get latest MoarVM concurrency fixes' | 15:43 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/301916572 github.com/rakudo/rakudo/compare/0...78292e4716 | |||||||||||||||||||||||||||||||||||||||
buggable | [travis build above] ✓ All failures are due to: GitHub connectivity (1 failure). | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | releasable6: status | 16:47 | |||||||||||||||||||||||||||||||||||||
releasable6 | AlexDaniel, Next release in 4 days and ≈2 hours. No blockers. 0 out of 191 commits logged | ||||||||||||||||||||||||||||||||||||||
AlexDaniel, Details: gist.github.com/904de87605d3c8d7a9...68dd8d1370 | |||||||||||||||||||||||||||||||||||||||
[Coke] | AlexDaniel: OOC, do you have a job setup to clean up old gists? | 16:58 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | [Coke]: nope. The plan was to set up my own system for gists, but I never got to it. So I'm simply abusing github at this point | 16:59 | |||||||||||||||||||||||||||||||||||||
also, I want old links to still work (e.g. if you stumble upon them in clog) | 17:01 | ||||||||||||||||||||||||||||||||||||||
Geth | nqp: 5aff9a2757 | (Jonathan Worthington)++ | 2 files Add support for a block no-inline flag And pass it down on the MoarVM backend. |
17:09 | |||||||||||||||||||||||||||||||||||||
nqp: 7578d32889 | (Jonathan Worthington)++ | tools/build/MOAR_REVISION Get latest MoarVM with no inline flag support |
|||||||||||||||||||||||||||||||||||||||
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...7-gb9a01f7 | |||||||||||||||||||||||||||||||||||||||
rakudo: c1df0b1ba3 | (Jonathan Worthington)++ | tools/build/NQP_REVISION Bump NQP_REVISION for QAST::Block.no_inline |
17:11 | ||||||||||||||||||||||||||||||||||||||
rakudo: 0ff32c7f8e | (Jonathan Worthington)++ | 2 files Set no_inline when the dispatcher is needed |
|||||||||||||||||||||||||||||||||||||||
lizmat | jnthn timotimo re RT #132225, it is not documented that $lock.protect: { } is supposed to return the result of the block | 17:37 | |||||||||||||||||||||||||||||||||||||
synopsebot | RT#132225 [open]: rt.perl.org/Ticket/Display.html?id=132225 segmentation fault while concurrently updating SetHash | ||||||||||||||||||||||||||||||||||||||
lizmat | so maybe we should make it return Nil always? method protect(Lock:D: &code --> Nil) { | 17:38 | |||||||||||||||||||||||||||||||||||||
this breaks some code in the setting, but that is overseeable and can be fixed | |||||||||||||||||||||||||||||||||||||||
jnthn | It'll break an *incredible* amount of code | ||||||||||||||||||||||||||||||||||||||
lizmat | this feels like a more sane solution that having all sorts of side-effects leaking out of the protected block through e.g. Proxy | ||||||||||||||||||||||||||||||||||||||
jnthn | Would be arguably could do is decont the result before releaseing the lock, though | 17:39 | |||||||||||||||||||||||||||||||||||||
lizmat | or any other value that has a dedicated .sink method that may do evil things | ||||||||||||||||||||||||||||||||||||||
lizmat tries | |||||||||||||||||||||||||||||||||||||||
jnthn | That'd strip the Proxy off, though I dunno if it's solve the issue | ||||||||||||||||||||||||||||||||||||||
lizmat | probably not, as that would basically not do the STORE then | 17:40 | |||||||||||||||||||||||||||||||||||||
if I understand correctly, it was the Proxy.sink being responsible for doing the STORE that causes all of these issues in the first place | |||||||||||||||||||||||||||||||||||||||
because it happens outside of the protected block | |||||||||||||||||||||||||||||||||||||||
hmmm... seems the decont is doing the trick, does that know about Proxy ? | 17:46 | ||||||||||||||||||||||||||||||||||||||
jnthn | Ys | ||||||||||||||||||||||||||||||||||||||
*yes | |||||||||||||||||||||||||||||||||||||||
lizmat | aha... | 17:47 | |||||||||||||||||||||||||||||||||||||
jnthn | Because Proxy is a kind of container | ||||||||||||||||||||||||||||||||||||||
lizmat runs a spectest | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo: be9e19efd9 | (Elizabeth Mattijsen)++ | src/core/Lock.pm Make sure Proxies are handles in Lock.protect - this fixes RT #132225 - adding the decont() apparently sinks the Proxy, jnthn++ - makes Lock.protect about 10% slower though :-( |
17:58 | |||||||||||||||||||||||||||||||||||||
synopsebot | RT#132225 [open]: rt.perl.org/Ticket/Display.html?id=132225 segmentation fault while concurrently updating SetHash | 17:59 | |||||||||||||||||||||||||||||||||||||
lizmat | *handled arghh | ||||||||||||||||||||||||||||||||||||||
jnthn | lizmat: It doesn't sink the proxy, it removes the value from the container, returning an read-only value | 20:58 | |||||||||||||||||||||||||||||||||||||
lizmat | jnthn: then I either don't understand the problem, or the fix :-( | 20:59 | |||||||||||||||||||||||||||||||||||||
I though the problem was that the Proxy was returned by the protect block | |||||||||||||||||||||||||||||||||||||||
*thought | |||||||||||||||||||||||||||||||||||||||
and that sinking the Proxy object *outside* of the block made sure the STORE was done, causing havoc | 21:00 | ||||||||||||||||||||||||||||||||||||||
jnthn | Hm, I don't know that's how it works? | ||||||||||||||||||||||||||||||||||||||
lizmat | because it was so done concurrently outside of the protected block | ||||||||||||||||||||||||||||||||||||||
jnthn | I thought the issue was that the Proxy is decont'd in order to sink it | ||||||||||||||||||||||||||||||||||||||
A Proxy isn't itself sunk, the value inside of it is | 21:01 | ||||||||||||||||||||||||||||||||||||||
Just like we don't sink a Scalar, but rather the value inside of it | |||||||||||||||||||||||||||||||||||||||
lizmat | what *is* the value inside the Proxy ? | ||||||||||||||||||||||||||||||||||||||
there's just two methods in there, no ? | |||||||||||||||||||||||||||||||||||||||
jnthn | Whatever FETCH returns | ||||||||||||||||||||||||||||||||||||||
So the problem, as I understood it, is that the FETCH was called not under look | 21:02 | ||||||||||||||||||||||||||||||||||||||
*lock | |||||||||||||||||||||||||||||||||||||||
lizmat | ah | ||||||||||||||||||||||||||||||||||||||
jnthn | And that could go badly wrong if other threads might mutate the underlying hash at the same time | ||||||||||||||||||||||||||||||||||||||
lizmat | hmmm... ok | ||||||||||||||||||||||||||||||||||||||
that improves my understanding, :-) | |||||||||||||||||||||||||||||||||||||||
jnthn | Since I guess FETCH reads from an nqp::hash? | ||||||||||||||||||||||||||||||||||||||
lizmat | yup | ||||||||||||||||||||||||||||||||||||||
jnthn | tbh, I didn't look at the code at all, I was debugging something else :) | 21:03 | |||||||||||||||||||||||||||||||||||||
Glad my guess was helpful :) | |||||||||||||||||||||||||||||||||||||||
lizmat | yup, nailed it :-) | ||||||||||||||||||||||||||||||||||||||
jnthn | I think we get 10% off array access/assignment (well, actually a bit more if the loop I was testing it in were accounted for) once the things blocking inlining postcircumfix:<[ ]> are resolved | 21:04 | |||||||||||||||||||||||||||||||||||||
I think it'll allow quite a few more inlines too | |||||||||||||||||||||||||||||||||||||||
lizmat | that would be cool, especially for test-t I think | ||||||||||||||||||||||||||||||||||||||
jnthn | Yeah, I suspect that might drop a bit | 21:05 | |||||||||||||||||||||||||||||||||||||
I guess it'll help hashes too | 21:06 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 142c1d657c | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals.pm A more HLL approach to handling exceptions in END The original code was sorta cargo-culted from NQP at the time. Having it in HLL code means we can also handle exceptions at this point in time in HLL code. Also it seemed like a good idea to not have one END block's exception blow it for all of the other ones. Finally, give a summary of execution errors that occurred when done. |
21:09 | |||||||||||||||||||||||||||||||||||||
rakudo: fff43fd709 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals.pm Oops, fix typo in message, MasterDuke17++ |
21:17 | ||||||||||||||||||||||||||||||||||||||
tbrowder | can someone answer an nqp question: when did nqp get kebab identifier names? for some reason i thought nqp identifiers basically had same rules as p5. | 23:31 | |||||||||||||||||||||||||||||||||||||
jnthn | I forget exactly, though I think "a little after Perl 6 got them" | 23:32 | |||||||||||||||||||||||||||||||||||||
It would have been a pretty trivial thing to port over | 23:33 | ||||||||||||||||||||||||||||||||||||||
tbrowder | hm, did yr nqp course talk about that, it’s about the only doc on nqp i’ve seen? | 23:34 | |||||||||||||||||||||||||||||||||||||
jnthn | I'm not sure, but it was fairly late on that Perl 6 standardized on - and ' in identifiers in CORE.setting | 23:35 | |||||||||||||||||||||||||||||||||||||
uh, actually I guess we don't use ' anywhere in there :) | |||||||||||||||||||||||||||||||||||||||
lizmat | tbrowder: there's also github.com/perl6/nqp/blob/master/d...s.markdown | ||||||||||||||||||||||||||||||||||||||
lizmat goes to bed& | |||||||||||||||||||||||||||||||||||||||
tbrowder | jnthn: did you see my email to yr edument address? | 23:36 | |||||||||||||||||||||||||||||||||||||
lizmat: yes, you are right about the ops doc” | 23:37 | ||||||||||||||||||||||||||||||||||||||
jnthn | tbrowder: I did, I even ran a callgrind run today to try and figure out what to answer :) | ||||||||||||||||||||||||||||||||||||||
tbrowder | if p6 can get good (better) ascii performance, i will push it hard for brl-cad use (brlcad.org) | 23:40 | |||||||||||||||||||||||||||||||||||||
jnthn | The summary is that a bunch of the cycles are spend in the decoder, and I get I can make that go faster | 23:41 | |||||||||||||||||||||||||||||||||||||
*spent | |||||||||||||||||||||||||||||||||||||||
*bet | |||||||||||||||||||||||||||||||||||||||
heh, this is why I'm not replying to it at this time of evening :) | |||||||||||||||||||||||||||||||||||||||
tbrowder | time for bed, jnthn... | ||||||||||||||||||||||||||||||||||||||
jnthn | Indeed, it almost is :) | 23:42 | |||||||||||||||||||||||||||||||||||||
Anyway, will do a little more analysis and get back to your soon. | 23:44 | ||||||||||||||||||||||||||||||||||||||
tbrowder | btw, brl-cad was started by Mike Muus, the author of ping. | ||||||||||||||||||||||||||||||||||||||
jnthn | Of...ping? Wow. :) | ||||||||||||||||||||||||||||||||||||||
tbrowder | *Muuss | ||||||||||||||||||||||||||||||||||||||
yep, died tragically young in a car accident | 23:45 | ||||||||||||||||||||||||||||||||||||||
MasterDuke_ | huh, didn't realize he did cad stuff also | ||||||||||||||||||||||||||||||||||||||
yeah, around this time a couple years ago, i think it was right after thanksgiving | |||||||||||||||||||||||||||||||||||||||
tbrowder | oh, yeah, big time. brl-cad was open-sourced by US Army early this century. great cad pkg used by military and others for all kinds of analyses. | 23:47 | |||||||||||||||||||||||||||||||||||||
post-processing brl-cad runs was how i got started with p5 | 23:49 | ||||||||||||||||||||||||||||||||||||||
and p6 will be even better with it! | 23:50 |