»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:00
am0c joined,
whiteknight left
00:01
jevin left
|
|||
sorear | TimToady: should $*::("dynvar") be legal? | 00:03 | |
TimToady: STD.pm6 won't parse it (because twigils need to be followd by <identifier>) | |||
00:05
donri left,
jevin joined
|
|||
dalek | ecs: c92cded | diakopter++ | S12-objects.pod: more headings in S12 (Multisubs/multimethods and Enumerations) |
00:13 | |
00:17
jimmy1980 left
|
|||
dalek | ecza: a73f026 | sorear++ | / (2 files): Fix parsing $::(), ignore "is dynamic" on variables |
00:20 | |
diakopter | phenny: ask TimToady any other walls of text you'd like divvied? | ||
phenny | diakopter: I'll pass that on when TimToady is around. | ||
dalek | kudo/nom: c26878d | tadzik++ | src/core/Parameter.pm: Fill in some Parameter accessors |
00:21 | |
kudo/nom: 124bec3 | tadzik++ | src/core/Parameter.pm: Fix Parameter.named, add Parameter.slurpy |
|||
tadzik | phenny: ask jnthn does gist.github.com/1119304 appear correct to you? It's taken straight from master, but seems to be broken (always false), and is blocking me on MAIN | ||
phenny | tadzik: I'll pass that on when jnthn is around. | ||
tadzik sleeps | 00:22 | ||
sorear | diakopter++ shaving documentation yaks | 00:23 | |
diakopter hands the shears to sorear; it rhymes | 00:24 | ||
TimToady | well, there's always ::('$*dynvar') | 00:25 | |
phenny | TimToady: 00:20Z <diakopter> ask TimToady any other walls of text you'd like divvied? | 00:26 | |
sorear | TimToady: ok | ||
TimToady | well, as I mentioned, S02 also needs work, but probably a large amount of reorg at the same time | ||
some of the spec links from features are to very general sections | 00:27 | ||
diakopter | I can't find the features page linked from perl6.org | 00:28 | |
is it hidden intentionally still | |||
oh there it is | |||
TimToady | should maybe be in a box of its own color | 00:29 | |
dalek | atures: 060d531 | larry++ | features.json: more specs |
00:30 | |
diakopter | I enjoyed =head2/3ifying those parts of S12. | 00:31 | |
maybe I have a future as an editor | |||
00:33
noganex_ left
|
|||
TimToady | 'course, we're probably breaking a bunch of smart links... | 00:33 | |
diakopter | TimToady: will the Synopses ever be printed do you think? | 00:35 | |
published, I mean | |||
TimToady | not without a major rewrite | ||
diakopter | allow me to snidely interject that the bottom half of S05 might need redacted | 00:36 | |
TimToady | yes, well, TheDamian++ tends to be rather completist | ||
diakopter | heh, completionist | 00:37 | |
I've imagined someone writing the book Designing Implementing Perl 6 - the [hi]story of the implementations and the specifications and how they diverge[d] and converge[d] | 00:45 | ||
Designing and Implementing Perl 6, I mean | |||
TimToady: how went the Soto | 00:47 | ||
dalek | ecza: be423d4 | sorear++ | / (2 files): Patch up several missing cases, add S02-names/symbolic-deref.t |
00:48 | |
ast: 19e9310 | sorear++ | S02-names/symbolic-deref.t: [S02-names/symbolic-deref.t] Silenced warnings, rearranged code using obsolete syntax, removed CORE/GLOBAL conflation. |
|||
00:52
Alias left
|
|||
TimToady | it seemed to go over pretty well | 00:52 | |
00:53
noganex joined
|
|||
diakopter | I wish video was made available | 00:54 | |
for those of us who can't visit Oscon [every year] | |||
sorear | TimToady: what was the soto? Another demo? | 00:55 | |
00:55
rdesfo left
01:04
noganex left
|
|||
[Coke] | jnthn: your blog post dies in nom with: "load_bytecode" couldn't find file 'LoggedDispatch.pbc' | 01:06 | |
01:06
noganex joined
01:15
tokuhir__ left
01:16
tokuhir__ joined
|
|||
TimToady | Act 1, scroll all 361 RFC titles past and just point out the poignant bits | 01:17 | |
Act 2, show off the features matrix | 01:18 | ||
Act 3, show a fight between the two sisters, P5 and P6, and what P6 really thinks of P5 | |||
Act 4, how P5 could get a type system | |||
Act 5, how P5 could borrow various other features from P6 | 01:19 | ||
Act 6, scroll the RFC titles in reverse, and take questions | |||
all packaged as 6 lightning talks | |||
01:20
tokuhir__ left
01:32
woosley joined
|
|||
dalek | href="https://perl6.org:">perl6.org: 46799e5 | larry++ | source/ (2 files): give the features their own box in Compilers |
02:03 | |
djanatyn | Hey, anybody want to help me install a library? | 02:04 | |
I spent a couple hours trying last night. ._. | |||
It's the Web library for Perl 6. I'm trying to get Ratel, so I can write my website in Perl 6 :D | 02:05 | ||
dalek | href="https://perl6.org:">perl6.org: 3eb9869 | larry++ | source/style.css: swap colors |
02:11 | |
diakopter | why remove the | 02:15 | |
diakopter begins attacking S02 | |||
TimToady | supposed to use U+00A0 instead | 02:16 | |
hmm, it did something strange :) | |||
diakopter | looks okay on winchrome | 02:17 | |
also IE | |||
TimToady | the right column is yellow around the two boxes for some reason in ff | ||
diakopter | oh, yes, that | ||
thought you meant to do that | 02:18 | ||
TimToady | er no | ||
diakopter | Chrome does indeed handle U+00A0 correctly | 02:20 | |
TimToady++ | |||
dalek | href="https://perl6.org:">perl6.org: e03b7d9 | larry++ | source/style.css: make features box red |
||
diakopter | how often does perl6.org rebuild | ||
TimToady | 15m | 02:23 | |
you have about 5 minutes to fix it :) | |||
or 20 minutes, or 35... | 02:24 | ||
TimToady should learn to read css someday | |||
diakopter | does a =head1 and =head3 need a =head2 between | 02:25 | |
TimToady | don't think so | 02:26 | |
TimToady thinks it's all done with the divs | |||
diakopter | no I mean for S02 | ||
TimToady | generally one would not skip levels | 02:27 | |
diakopter | k | ||
02:32
daniel-s joined
|
|||
diakopter | hm, I guess those smartlinks did break | 02:33 | |
sadface | |||
too bad the smartlinker isn't smarter enough to DTRT | |||
02:37
daniel-s left,
daniel-s_ joined
|
|||
diakopter | (where sections can live in multiple logical headings | 02:38 | |
) | |||
dalek | href="https://perl6.org:">perl6.org: cc806d3 | larry++ | source/ (2 files): try a three column approach |
02:39 | |
02:42
daniel-s_ left
02:43
daniel-s_ joined
|
|||
TimToady | oopser :) | 02:45 | |
02:46
Helios joined
02:47
daniel-s__ joined,
daniel-s_ left
|
|||
dalek | ecza: 48d6cd3 | sorear++ | lib/ (3 files): Implement object reification of pseudopackages and pseudostashes |
02:48 | |
02:51
daniel-s__ left
02:52
_daniel-s__ joined
|
|||
dalek | href="https://perl6.org:">perl6.org: 7bc4720 | larry++ | source/compilers/index.html: try a more barebones approach |
02:53 | |
02:56
_daniel-s__ left,
_daniel-s__ joined
03:00
_daniel-s__ left,
_daniel-s__ joined
|
|||
TimToady | \o/ the barebones approach worked, at least in firefox | 03:01 | |
03:05
daniel-s joined,
_daniel-s__ left
|
|||
sili | hulk smash | 03:06 | |
djanatyn | hey, when using regex, how do I use a different seperator than the forward slash, again? | 03:08 | |
TimToady | m or rx, depending | 03:09 | |
and don't use parens for delims | |||
03:09
daniel-s left,
daniel-s_ joined
|
|||
sili | $foo ~~ m{hehe} | 03:10 | |
djanatyn | Ah. Cool! :) | 03:11 | |
:\ | 03:13 | ||
sili | :D | ||
03:14
daniel-s__ joined,
daniel-s_ left
|
|||
djanatyn | gist.github.com/1119532 <-- hmm. is this a bug with rakudo, or a bug with me? | 03:15 | |
"Method 'title' not found for invocant of class 'Cursor'" | 03:16 | ||
What's the cursor class, and why would it search there? Shouldn't it be looking for the Entry class, under which this method is defined? | 03:17 | ||
Ah. Looks like Cursor is a parser engine. | 03:18 | ||
sorear | djanatyn: bug in you | ||
03:18
daniel-s__ left,
_daniel-s__ joined
|
|||
sorear | djanatyn: < and > need to be quoted | 03:18 | |
djanatyn | sorear: Good, much easier to fix :D | ||
...yeah, I kinda thought that really wasn't a good idea to use for a template | |||
sorear | djanatyn: in fact ALL characters other than a..z 0..9 _ need to be quoted in regex | ||
s/ '<title>' /...// | 03:19 | ||
djanatyn | sorear: thanks for the advice - I don't use regex that much ;) | ||
sorear | <title> is interpreted as a call to the .title method in the current grammar | ||
sili | rules are different | 03:20 | |
djanatyn | I see a couple bugs in here that I hadn't noticed before | 03:22 | |
forgot to use interpolating quotes for at least one variable | |||
03:22
_daniel-s__ left,
_daniel-s__ joined
03:23
Su-Shee_ joined
|
|||
djanatyn | woot! It runs! :) | 03:26 | |
03:26
Su-Shee left,
rdesfo joined
|
|||
djanatyn | ...except it outputs the file with quotes around '<h1>' and '<h2>'. | 03:27 | |
03:27
daniel-s joined
03:28
_daniel-s__ left
|
|||
sorear | djanatyn: you're only supposed to quote the regex, not the replacement string | 03:31 | |
03:31
daniel-s_ joined
03:32
daniel-s left
|
|||
sorear | TimToady: ping | 03:35 | |
03:36
daniel-s__ joined
|
|||
sorear | TimToady: the spectests test sub foo { $*x } ; sub bar { my $x is dynamic; foo } | 03:36 | |
03:36
daniel-s_ left
|
|||
sorear | TimToady: is this legit? All current non-pugs implementations treat the star as part of the name | 03:36 | |
03:40
jedai left,
_daniel-s__ joined
03:41
daniel-s__ left,
pothos left,
pothos_ joined,
jedai joined,
pothos_ is now known as pothos
03:43
sili left,
sili joined
03:45
daniel-s joined,
_daniel-s__ left
03:46
afiskon joined
03:49
daniel-s_ joined
03:50
daniel-s left
|
|||
dalek | ast: 10846df | sorear++ | S02-names/ (2 files): S02-names/{caller,our}.t: update and fudge for niecza |
03:52 | |
ecza: f2fccf7 | sorear++ | / (2 files): Fix CALLER/inlining interaction and two new test files |
|||
03:53
daniel-s__ joined,
daniel-s_ left
03:58
_daniel-s__ joined,
daniel-s__ left
04:02
_daniel-s__ left,
daniel-s joined
04:07
daniel-s_ joined,
daniel-s left
04:08
birdwindupbird joined
|
|||
TimToady | the * is part of the name; is dynamic would make the $x dynamic but you can't get at it with $*x | 04:09 | |
04:10
envi joined,
satyavvd joined
04:11
daniel-s__ joined,
daniel-s_ left
04:14
jaldhar left,
colorspace left,
jaldhar joined
04:15
daniel-s__ left
04:16
daniel-s__ joined
04:20
daniel-s__ left,
_daniel-s__ joined,
satyavvd left
04:24
_daniel-s__ left,
_daniel-s__ joined
|
|||
sorear | TimToady: ok, that's what I thought | 04:27 | |
04:29
_daniel-s__ left,
_daniel-s__ joined,
satyavvd joined,
shinobicl joined,
shinobicl left
|
|||
dalek | ast: a2e0a5a | sorear++ | S02-names/caller.t: [S02-names/caller.t] in $*foo, the twigil is an integral part of the name |
04:31 | |
sorear | What test file should I put pseudo package tests? | ||
roast doesn't currently have ANY tests for the correct functioning of MY:: | |||
04:33
daniel-s joined,
_daniel-s__ left,
birdwindupbird left
04:37
daniel-s left
04:38
daniel-s joined
04:42
daniel-s left,
daniel-s joined
04:46
daniel-s left,
daniel-s_ joined
04:48
molaf joined
04:51
daniel-s__ joined,
daniel-s_ left
04:55
daniel-s__ left,
_daniel-s__ joined
04:57
molaf left
05:00
_daniel-s__ left,
daniel-s joined
05:09
shinobicl joined
|
|||
shinobicl | hi.... i have this problem.. i have an operator with this signature: our multi infix:<eqv> (WorkdayCalendar $wc1, WorkdayCalendar $wc2) { ... }. Then i call this operator with the same variable for $wc1 and $wc2. (testing the identity) | 05:13 | |
the thing is, $wc2 always appears inside the operator's body as a "new" variable... with the default attributes. I've also tried putting "is copy" in the 2 parameters signatures, with no luck | 05:14 | ||
even if $wc1 and $wc2 have the same data, $wc2 seems to be "lost". | 05:15 | ||
sorear | what do you mean 'new'? | 05:33 | |
shinobicl | wc2 and wc1 are objects. They have default values. I changed the values from the default to something else on $wc1 and $wc2 to see them inside the operator. For $wc1, the changes are there, but $wc2 contains the default values. | 05:42 | |
tthat happens even if i pass the same variable as $wc1 and as $wc2. | 05:44 | ||
it is as if $wc2 was created inside the operator, and not passed as a parameter for the infix:>eqv | 05:46 | ||
PerlJam | shinobicl: show the code on a gist or something | ||
shinobicl | ok give me some minutes | ||
the test program: github.com/shinobi/TaskScheduler/b...Calendar.t | 05:56 | ||
jlaire | perl6: say NaN == NaN; say NaN ~~ NaN | ||
p6eval | niecza v8-18-gf2fccf7: OUTPUT«Bool::FalseBool::False» | ||
..rakudo 922500: OUTPUT«Bool::FalseBool::True» | |||
..pugs: OUTPUT«1» | |||
shinobicl | the module: github.com/shinobi/TaskScheduler/b...alendar.pm | ||
06:05
Mowah joined
06:19
wtw joined
06:20
koban joined,
koban left
06:22
Su-Shee_ is now known as Su-Shee
06:37
envi left
|
|||
moritz | phenny: tell diakopter about github.com/moritz/perl6-Sudoku | 06:39 | |
phenny | moritz: I'll pass that on when diakopter is around. | ||
sorear | o/ moritz | 06:40 | |
moritz | \o sorear | ||
sorear | I am now working on comprehensive tests for pseudo packages | 06:41 | |
moritz | that's great | ||
06:44
envi joined
06:49
Trashlord joined
|
|||
moritz | sorear: btw several spectests abort on niecza because it doesn't implement .gist on type objects | 07:08 | |
07:10
daniel-s left,
daniel-s joined,
mj41 joined
|
|||
sorear | hah, niecza parses ::<$x> as a parametric role instantiation | 07:14 | |
07:14
daniel-s_ joined
07:15
daniel-s left
|
|||
moritz doesn't parse it at all :-) | 07:15 | ||
dalek | ast: 4c9c1b7 | sorear++ | S02-names/pseudo.t: First draft of first section of pseudopackage tests |
07:18 | |
sorear | I hope I'm doing this more or less right | ||
it only covers MY so far | |||
07:19
daniel-s__ joined,
daniel-s_ left
07:23
_daniel-s__ joined,
daniel-s__ left
07:24
mattp_ left
07:26
DonGene joined
07:28
daniel-s joined,
_daniel-s__ left
07:32
daniel-s left,
daniel-s_ joined
07:34
im2ee joined
07:37
daniel-s__ joined,
daniel-s_ left
07:41
wamba joined,
daniel-s__ left,
_daniel-s__ joined
07:43
im2ee left
|
|||
jnthn | morning, #perl6 | 07:44 | |
phenny | jnthn: 00:21Z <tadzik> ask jnthn does gist.github.com/1119304 appear correct to you? It's taken straight from master, but seems to be broken (always false), and is blocking me on MAIN | ||
sorear | o/ jnthn | 07:45 | |
jnthn | [Coke]: Note that nom still needs you to pre-compile modules by hand. | ||
07:45
lumi_ joined,
_daniel-s__ left,
daniel-s joined
07:50
daniel-s_ joined,
daniel-s left
|
|||
jnthn | tadzik: That's both NYI and non-trivial. | 07:52 | |
07:52
im2ee joined,
im2ee left
07:54
daniel-s_ left,
daniel-s_ joined
07:57
rdesfo left
07:58
cosimo left
07:59
daniel-s_ left,
daniel-s_ joined
|
|||
tadzik | ouch | 08:00 | |
jnthn | (long story short, there's no BIND method implemented in nom yet | 08:02 | |
) | |||
(so that try always fails) | |||
tadzik | that explains why I couldn't find it in the source code | 08:03 | |
08:03
daniel-s_ left,
daniel-s_ joined
|
|||
tadzik | .u 🐪 | 08:05 | |
phenny | U+1F42A (No name found) | 08:06 | |
08:08
daniel-s__ joined,
daniel-s_ left
08:11
_daniel-s__ joined,
daniel-s__ left
08:15
daniel-s joined
08:16
_daniel-s__ left
08:18
shinobicl left
|
|||
dalek | ecza: c1c841b | sorear++ | / (2 files): Fix parsing of ::<$a>, implement Foo:: = Foo.WHO syntax |
08:19 | |
08:20
daniel-s left
|
|||
moritz | I thought we were about to deprecate trailing :: ? | 08:23 | |
08:24
daniel-s joined
|
|||
moritz | somehow perl6.org/compilers/ is very broken atm | 08:27 | |
08:29
daniel-s left,
daniel-s_ joined
|
|||
sorear | moritz: I didn't get that impression | 08:30 | |
08:31
im2ee_ joined
|
|||
sorear | I asked about $Foo:: (the sigil case only) and got contradictory answers, which seems to be TimToadyese for "for now, forbid" | 08:31 | |
08:33
daniel-s_ left
|
|||
moritz | dl.dropbox.com/u/25194185/perl6-org...pilers.png is my screenshot of perl6.org/compilers/ | 08:33 | |
08:33
im2ee_ left,
daniel-s_ joined
|
|||
moritz | firefox 3.6 | 08:34 | |
sorear | "it renders fine in links" | ||
not terribly useful | |||
moritz | I guess it shouldn't use the .box class, which has a height of 9em | 08:35 | |
tadzik | moritz: refresh? It helped for me | ||
moritz | indeed it does | 08:36 | |
why? | |||
nm | |||
anyway, I'd prefer a two-column layout, with two boxes on the right | |||
jlaire | looks like changed html + old css from cache = big mess | 08:37 | |
moritz | first feature matrix, then supplementals | ||
but I can't preview it on the machine I'm on right now | |||
08:37
daniel-s__ joined,
daniel-s_ left
|
|||
jlaire | and it's two columns with a huge right margin in my smallish browser window | 08:38 | |
moritz feels flattered that TimToady++ showed off the feature matrix in his SOTO speech | 08:39 | ||
08:42
daniel-s__ left,
daniel-s__ joined
|
|||
sorear | the feature matrix is very, very awesome | 08:43 | |
I might call it more important than nom. it will certainly have more of a lasting utility, after the next round of rewrites | 08:44 | ||
08:46
daniel-s__ left,
_daniel-s__ joined
08:51
daniel-s joined,
_daniel-s__ left
|
|||
jnthn | .oO( There'll be a round of re-writes after nom?! :-) ) |
08:54 | |
08:55
daniel-s left,
daniel-s_ joined
|
|||
moritz | sure! | 08:55 | |
history teaches us that there's always a next rewrite | 08:56 | ||
it's just a question of the scope of the rewrite | |||
jnthn | Oh, there'll be serious refactors in some areas. | ||
moritz | for example module loading will get one | 08:57 | |
jlaire | but that doesn't mean the previous rewrites were not useful | ||
jnthn | But I don't anticipate another nom-level or ng-level rewrite this side of some kind of 6.0.0. | ||
(e.g., a re-do near enough everything rewrite...) | |||
sorear | jnthn: I have my post-6.0.0 hat on when I say there will be a rewrite | ||
moritz | jkagreed | ||
jnthn | sorear: ah, ok :) | ||
moritz | sorry | ||
jlaire: agreed | 08:58 | ||
jnthn | jlaire: We couldn't have done nom without alpha and ng to learn from. | 08:59 | |
So yes, certainly useful :) | |||
08:59
daniel-s__ joined
|
|||
arnsholt | The previous rewrite is usually a necessary condition for the next one IME =) | 09:00 | |
09:00
daniel-s_ left
09:01
daxim joined
09:04
daniel-s__ left,
daniel-s__ joined,
Kivutarrr joined
09:08
_daniel-s__ joined
09:09
daniel-s__ left
|
|||
moritz | hurm, it seems that nom doesn't honor the #icu markers | 09:11 | |
I have a machine without icu, and it tries to run all the tests | 09:12 | ||
dalek | ecza: 6988dc9 | sorear++ | src/niecza: Improve detection of acceptable names, parse atomic pseudo-package names properly |
||
sorear -> sleep | |||
09:13
daniel-s joined
|
|||
sorear | you can now, for instance, MY.WHO.<$x> | 09:13 | |
09:13
_daniel-s__ left
|
|||
moritz | woah | 09:13 | |
jnthn | moritz: Oh, it's not just me that it's doing that for then. | ||
moritz | it runs | 09:16 | |
/home/moritz/perl5/perlbrew/perls/perl-5.12.3/bin/perl t/harness --fudge --keep-exit-code --icu= --tests-from-file=t/spectest.data | |||
09:16
awoodland joined
|
|||
moritz | the --icu= looks correct-ish | 09:16 | |
09:17
daniel-s_ joined
09:18
daniel-s left
09:21
mattp_ joined
09:22
daniel-s__ joined,
daniel-s_ left
|
|||
moritz | ew, no | 09:23 | |
Getopt::Long seems to treat that as missing | |||
how did that work in master? | 09:26 | ||
09:26
_daniel-s__ joined
09:27
daniel-s__ left
|
|||
jnthn | moritz: Maybe it didn't... :) | 09:27 | |
09:30
_daniel-s__ left,
_daniel-s__ joined
|
|||
tadzik | heh, they mentioned me in Perl Weekly :) | 09:33 | |
moritz | what is "Perl Weekly"? | 09:34 | |
tadzik | a new weekly newsletter | ||
perlweekly.com/ | |||
09:35
_daniel-s__ left,
_daniel-s__ joined
|
|||
moritz | nice | 09:37 | |
oh, btw | |||
autounfudge found a pod-related test that now passes in nom | 09:38 | ||
sadly it's on a machine which I can't access right now | |||
tadzik | which one? | ||
moritz | one in quoting.t or so | ||
09:39
daniel-s joined
09:40
_daniel-s__ left
|
|||
tadzik | oh, that's probably the one that passed in master too | 09:40 | |
I mean, on a master-based podparser | |||
moritz | ok, on master HAS_ICU = 0 in the Makefile | 09:41 | |
jnthn | aha | 09:42 | |
moritz digs deeper | |||
moritz suspects an undef-vs-0 issue in Makefile generation | |||
yep | 09:43 | ||
$text =~ s/@([:\w]+)@/$config{$1} || $config{"parrot::$1"} || ''/ge; | |||
tadzik | I like how Perl 5 doesn't need local::lib these days | ||
everything Just Works | |||
09:43
daniel-s left
09:44
daniel-s joined
|
|||
jnthn | We really need to get module search/loading/caching sorted out in nom soon. | 09:44 | |
Rakudo itself needs to start maintaining the pre-compilation cache, rather than relying on the module installer to pre-compile, also. | 09:45 | ||
09:45
awoodland_ joined,
awoodland left
09:46
mls_ joined
|
|||
mls_ | Hi perl6! | 09:46 | |
tadzik | hello mls_ | 09:47 | |
moritz | jnthn: agreed | ||
\o mls_ | |||
mls_ | are there any non-control exception that are resumable? | ||
exceptions | |||
09:48
daniel-s left,
daniel-s joined
|
|||
tadzik | what does autounfudge produce? | 09:48 | |
it Processed File, and? | |||
moritz | tadzik: a patch | ||
in autounfudge.patch | |||
tadzik | oh, there it is | ||
...empty :) | |||
mls_ | (Btw, the README file says perl Configure --gen-parrot, but it's Configure.pl) | 09:51 | |
tadzik | not ok 9 - '\xa0' does not split in a whitespace quoted list | ||
# got: 'a b c d' | |||
# expected: 'a b c d' | |||
eh | |||
moritz | one of them might be a non-breaking space | ||
better to .join('|') | 09:52 | ||
tadzik | spectests shouldn't generally say(), should then | ||
moritz | no | ||
tadzik | s/then/they\?/ | ||
tadzik fixes | |||
09:52
daniel-s_ joined
|
|||
moritz | there's diag() for debug output | 09:53 | |
09:53
daniel-s left
|
|||
moritz | mls_: thanks, patched locally | 09:53 | |
will push when the previous commit is spectested :-) | |||
dalek | ast: 8338765 | tadzik++ | S02-literals/listquote-whitespace.t: Remove leftaround say()s |
09:54 | |
09:56
birdwindupbird joined
|
|||
dalek | kudo/nom: 2dd618f | moritz++ | tools/lib/NQP/Configure.pm: [build] fix lookup of defined-but-false configure options while generating the Makefile |
09:57 | |
kudo/nom: 293215f | moritz++ | README: fix thinko on README, mls++ |
|||
09:57
daniel-s__ joined,
daniel-s_ left
10:01
frettled left,
_daniel-s__ joined
10:02
daniel-s__ left
10:03
Tedd1 left,
phenny left,
yahooooo left,
Tedd1 joined
10:04
daxim left,
simcop2387 left,
daxim joined
10:05
_daniel-s__ left
10:06
daniel-s joined,
simcop2387 joined
10:07
yahooooo joined
10:10
daniel-s left,
daniel-s joined
10:14
daniel-s_ joined
10:15
am0c left,
daniel-s left
10:19
daniel-s__ joined,
daniel-s_ left
10:23
_daniel-s__ joined
10:24
daniel-s__ left
10:28
daniel-s joined,
_daniel-s__ left
10:32
daniel-s left,
daniel-s_ joined
|
|||
mls_ | jnthn: with your patch from yesterday, $! and $_ are not set in the CATCH block | 10:35 | |
There seems to be a "capture_lex" on the handler sub missing | |||
10:36
afiskon left,
daniel-s__ joined
10:37
daniel-s_ left,
MayDaniel joined
10:41
daniel-s__ left,
_daniel-s__ joined
10:45
_daniel-s__ left
10:49
wamba left
10:52
daniel-s joined
|
|||
jnthn | mls_: Hm. Oddness. | 10:53 | |
mls_: It passed the various tests. | |||
10:56
daniel-s_ joined
10:57
daniel-s left
11:01
daniel-s_ left,
daniel-s_ joined
|
|||
jnthn | nom: die 42; CATCH { .say } | 11:01 | |
p6eval | nom: OUTPUT«Any()» | ||
jnthn | nom: die 42; CATCH { say $! } | ||
p6eval | nom: OUTPUT«Any()» | ||
jnthn | :/ | ||
oh, I wonder if it's...grrrr. | |||
Yeah, push_block_handler may well want to be tossed and re-done. | 11:02 | ||
11:05
daniel-s__ joined
11:06
daniel-s_ left
11:09
daniel-s__ left
11:10
daniel-s__ joined
11:14
daniel-s__ left,
pernatiy left,
daniel-s__ joined
11:18
daniel-s__ left,
_daniel-s__ joined
11:22
donri joined
11:23
_daniel-s__ left,
_daniel-s__ joined,
odoacre left,
odoacre joined
11:27
daniel-s joined
11:28
_daniel-s__ left,
frettled joined
|
|||
moritz | jnthn: I think we never really tested for $_ in CATCH, just for $! | 11:29 | |
11:31
MayDaniel left,
daniel-s left
11:32
daniel-s_ joined
11:35
wamba joined,
satyavvd left,
phenny joined
11:36
daniel-s_ left,
daniel-s_ joined
11:38
gokulnath joined
11:40
daniel-s__ joined,
daniel-s_ left
|
|||
jnthn | moritz: OK, clearly not in tests we're running though...or I'd have regressed something. | 11:42 | |
takadonet | morning all | 11:43 | |
11:45
daniel-s__ left,
_daniel-s__ joined
|
|||
mls_ | back from lunch... | 11:46 | |
gokulnath | is there a step by step installation guide for installing cpan modules | ||
moritz | gokulnath: are you talking about perl 5 or perl 6? | 11:47 | |
gokulnath | 6 | ||
moritz | I think github.com/tadzik/panda/#readme is the best we have | ||
mls_ | $! in the CATCH block also doesn't work | 11:48 | |
moritz | nom: try { die "foo"; CATCH { say $! } } | ||
p6eval | nom: OUTPUT«Any()» | ||
moritz | oh. | ||
mls_ | some tests in catch.t fail because of this | 11:49 | |
11:49
daniel-s joined
11:50
_daniel-s__ left
|
|||
jnthn | mls_: fudged ones? | 11:50 | |
mls_ | Yes. But wait, thay would also fail if this is fixed. | ||
Because die() doesn't transport the class. mortiz++ is working on that | 11:51 | ||
s/class/object | 11:52 | ||
11:54
daniel-s left,
daniel-s_ joined
|
|||
jnthn | mls_: Yeah. The whole exceptions thing needs a good bit of attention. | 11:54 | |
mls_ | I think we need a new test case that does "my $ret; { die("foo"); CATCH {$ret = $_} }" and checks $ret | ||
jnthn | +1 | ||
moritz | we currently don't have such a test because it's totally underspecced what die() puts in $! | 11:55 | |
mls_ | What's the current mindset for warn()? Should CATCH catch it? | ||
jnthn | No | ||
CONTROL probably should though. | |||
mls_ | ok, good. | 11:56 | |
jnthn | More deeply though, I'm not sure we do things right in a deeper sense. | ||
mls_ | SO are there any resumable not-CONTROL exceptions? | ||
s/SO/so/ | |||
jnthn | We're meant to locate the exception handler, then run it, THEN unwind. | ||
And resume means "don't bother unwinding" | 11:57 | ||
iirc, resume involves a continuation today | |||
Which suggests we unwind first. | 11:58 | ||
I *think* .resume is a property that can be set on $! (but check S04) | |||
11:58
daniel-s__ joined
|
|||
jnthn | In which case any exception is potentially resumable. | 11:58 | |
11:58
daniel-s_ left
|
|||
mls_ | Some are clearly not resumable, like the ones throws from parrot C Code | 11:58 | |
jnthn | I got this working on the .Net impl of NQP. | ||
True. | 11:59 | ||
Well | |||
mls_ | Basically they can only be resumed if they are created by a throw opcode | ||
jnthn | I guess the issue is mostly that the C code doesn't expect to be returned to. | ||
mls_ | I think the C code also does a longjmp, will check... | 12:00 | |
jnthn | If you're running your handler before unwinding in theory they *could* resume. It's just that every piece of code that throws from C today would be invalidated. | ||
Yeah, I'm more talking about how I think exceptions shoulda been done in Parrot, not how they are. | |||
If I'd designed it, it'd be much bett^W^Wquite different. :) | |||
mls_ | ;) | ||
jnthn | The way to handle resume in the design I'm suggestion would be that we longjmp after the handler in the C case, and if the user tried to mark a C exception as resumable we'd just say "no can do". | 12:02 | |
12:02
pernatiy joined,
daniel-s__ left
|
|||
jnthn | *suggesting | 12:02 | |
12:02
jedai left,
daniel-s__ joined
|
|||
mls_ | I should check the parrot code if the exceptions thrown from C have a continuation attached to them | 12:03 | |
jnthn | *nod* | ||
12:03
jedai joined
12:07
woosley left,
daniel-s__ left,
_daniel-s__ joined
|
|||
moritz | does &EXCEPTION get the parrot exception as first argument? | 12:07 | |
mls_ | Yes | ||
Parrot_ex_throw_from_c always does a longjmp()... | 12:09 | ||
12:11
_daniel-s__ left,
_daniel-s__ joined
|
|||
jnthn | mls_: That kinda makes sense. | 12:12 | |
mls_ | Hmm, Parrot_ex_throw_from_c_args has a second argument "ret_addr", which seems to be ignored currently | 12:14 | |
It's supposed to hold the address from which to resume | 12:15 | ||
12:16
daniel-s joined,
_daniel-s__ left
|
|||
mls_ | Seems like the "resume" attribute is only set in the throw opcode | 12:17 | |
jnthn | aha | 12:18 | |
To a Continuation? | |||
mls_ | "resume" holds the continuation | ||
It's also set in the dir opcode | |||
and exit opcode | |||
that's all I could find | |||
jnthn | dir? | ||
mls_ | what dir? | 12:19 | |
12:20
daniel-s left,
daniel-s joined
|
|||
jnthn | < mls_> It's also set in the dir opcode | 12:20 | |
I was asking what the opcode is | 12:21 | ||
mls_ | Ah sorry, typo. Meant die | ||
jnthn | Oh, did you mean die? | ||
ah | |||
:) | |||
Was gonna say, what does directory listing and exceptions have to do with each other :) | |||
mls_ | Yeah, that would have been quite surprising ;) | 12:22 | |
gokulnath | mortiz: is there a step by step installation guide for installing cpan modules in case of perl 5 | 12:23 | |
moritz must eventually hilight that mortiz guy | 12:24 | ||
[Coke] | jnthn++ # compiling LD to pir worked, thanks. | ||
moritz | gokulnath: there are lots and lots. Google knows most of them | ||
gokulnath: it also helps if you add the name of your perl distribution in the google search | |||
12:24
daniel-s_ joined,
daniel-s left
12:27
lichtkind joined,
awoodland_ left
|
|||
mls_ | (Btw, is there an easy way to run generated pir code? I always do './perl6 -e "use foo.pir"', which is a bit cumbersome | 12:28 | |
12:29
daniel-s_ left,
daniel-s_ joined
|
|||
moritz | ./install/bin/parrot foo.pir | 12:29 | |
mls_ | Contextual $*ST not found | 12:30 | |
moritz | ouch | ||
that needs to be fixed too | |||
[Coke] | mls_: having come here from parrot, that is cumbersome, but I love that it works. | 12:31 | |
mls_ | Yes, I'm glad that I found a way to run it, too | 12:32 | |
jnthn: the old code implemented die() with throwing a CONTROL_ERROR exception | 12:33 | ||
12:33
daniel-s_ left
|
|||
mls_ | thus CATCH doesn't catch CONTROL exceptions but CONTROL_ERROR | 12:33 | |
12:33
daniel-s_ joined
|
|||
mls_ | What exception type should warn() use? | 12:34 | |
the old code used the severity to differentiate between die/warn | |||
but that means CATCH will catch warn() exceptions | |||
(We could check the severity and rethrow, though) | 12:35 | ||
12:37
cosimo joined,
daniel-s_ left
12:38
daniel-s_ joined
|
|||
jnthn | moritz: (pre-comp bug) I worked out how to fix that one in the shower the other day...but didn't get around to it yet. | 12:38 | |
moritz | nom: Exception.new().throw | 12:40 | |
p6eval | nom: OUTPUT«Not a throwable objectcurrent instr.: 'throw' pc 682342 (src/gen/CORE.setting.pir:185946) (src/gen/CORE.setting:4569)» | ||
jnthn | nom: class Boomerang { }; Boomerang.throw | ||
p6eval | nom: OUTPUT«Method 'throw' not found for invocant of class 'Boomerang'current instr.: '_block1002' pc 99 ((file unknown):60304829) (/tmp/MpGSG1oRuE:1)» | ||
12:41
Holy_Cow joined
12:42
daniel-s_ left,
daniel-s__ joined
|
|||
mls_ | nom: class Boomerang { }; THROW(Boomerang, pir::const::CONTROL_ERROR) | 12:43 | |
p6eval | nom: OUTPUT«Warning» | 12:44 | |
mls_ | Hmm, I'm thinking about adding a pop_eh to the CATCH code | 12:46 | |
12:46
daniel-s__ left,
_daniel-s__ joined
|
|||
mls_ | That would fix the "catches our own exception" problem in try.t for now | 12:47 | |
moritz | we've had such a patch in master, and had it reverted | 12:48 | |
I don't recall what the issue was, but it might be worth checking the commit logs | |||
12:48
Holy_Cow left
|
|||
mls_ | S04 seems to indicate that we need to install a different exception handler anyway when processing exceptions (the SIMPLECATCH handler) | 12:48 | |
will check the logs | 12:49 | ||
12:51
daniel-s joined,
_daniel-s__ left
|
|||
mls_ | I found some change to try{} that got reverted later on. But nothing about pop_eh in CATCH | 12:53 | |
moritz | hm, maybe I was wrong | 12:55 | |
or maybe it was a change in nqp-rx or PCT | |||
12:55
daniel-s_ joined,
daniel-s left
|
|||
jnthn | Hm, it rings a bell for sure. | 12:56 | |
rakudo: die "foo"; CATCH { say "ok" } | 12:57 | ||
p6eval | rakudo 922500: OUTPUT«ok» | ||
jnthn | rakudo: die "foo"; CATCH { die "bar" } | ||
p6eval | rakudo 922500: OUTPUT«Segmentation fault» | ||
jnthn | ah, so it's wrong in master too | ||
moritz | it is indeed | ||
13:00
daniel-s__ joined,
daniel-s_ left
|
|||
mls_ | Hmm, pop_eh goes into an endless loop. strange... | 13:01 | |
13:02
gokulnath left
|
|||
jnthn | What does it try to pop? | 13:03 | |
jnthn isn't sure about the scope of those ops | 13:04 | ||
13:04
daniel-s__ left,
daniel-s__ joined
|
|||
mls_ | You're right, it works if I put it in the sub where the push_eh is | 13:04 | |
moving the PAST::Op.new(:inline(" pop_eh")) ... | 13:05 | ||
Ah, nice, try.t passes with no errors... spectesting... | 13:06 | ||
arnsholt | Does the code you're modifying use the PAST "catch" thing? | 13:07 | |
13:08
daniel-s__ left,
daniel-s__ joined
|
|||
mls_ | I'm modifying push_block_handler in Actions.pm | 13:09 | |
arnsholt has a look | |||
I've used PAST's exception handling a bit, and it requires a bit of care | 13:10 | ||
moritz | that reads like an understatement :-) | ||
mls_ | Do you mean PAST's try node? | ||
arnsholt | That's what it's called! My memory has holes =) | 13:11 | |
mls_ | CATCH blocks don't use that, they use a different mechanism called block handlers | ||
13:12
shinobicl joined
|
|||
arnsholt | 'k | 13:12 | |
13:13
_daniel-s__ joined,
daniel-s__ left
13:14
tcunha joined
|
|||
mls_ | You can set exception handlers to a PAST Block node | 13:14 | |
arnsholt | Probably a good idea =) | 13:15 | |
But yeah, where you put the pop_eh is a bit fiddly IME. I had a tendency to end up with popping twice, which is wrong =) | 13:16 | ||
dalek | odel: 2795df3 | (Martin Berends)++ | c/t (4 files): odel/c] test availability of posix or win32 threads |
||
jnthn | Apart from the lexical scope of CATCH with the current factoring is expected to be that PAST::Block, not the one the user wrote it in. | ||
arnsholt | Of course, my problems are compounded by continuations | 13:17 | |
mls_ | The strange thing is that parrot started to loop on the pop_eh opcode | ||
I put a "trace 1" opcode right before the pop_eh and it did the pop_eh over and over again. Seems to be a parrot bug. | |||
13:17
_daniel-s__ left,
daniel-s joined,
awoodland joined
|
|||
arnsholt | Yeah, that definitely sounds like a Parrot issue | 13:18 | |
[Coke] | is this the "finalize" issue? | ||
mls_ | No, it's pop_eh not incrementing the pc | ||
jnthn | That's really weird. | 13:19 | |
[Coke] | mls_: do have a small PIR program that demonstrates the issue? | ||
*you | |||
mls_ | Not yet, I'll try to generate one... | ||
13:20
cosimo left
|
|||
[Coke] | trac.parrot.org/parrot/ticket/1151#comment:3 for "the finalize issue", btw. | 13:20 | |
does at least sound related. | 13:21 | ||
mls_ | yes, rakudo (at least nom) now uses finalize for try and CATCH | 13:22 | |
13:22
daniel-s_ joined,
cosimo joined,
daniel-s left
13:26
daniel-s__ joined,
daniel-s_ left
13:31
_daniel-s__ joined,
daniel-s__ left
13:35
_daniel-s__ left
13:36
_daniel-s__ joined,
tokuhirom joined
13:37
MayDaniel joined
|
|||
mls_ | coke: I think it's a false alert, seems like Parrot's "No handler to delete." get's recaught, thus the loop | 13:39 | |
13:40
_daniel-s__ left,
_daniel-s__ joined
|
|||
moritz | is that a runtime error? | 13:40 | |
mls_ | Yes, it's a parrot exception | 13:41 | |
13:42
espadrine joined
|
|||
mls_ | spectest finished, looks good. Patch: gist.github.com/1120201 | 13:43 | |
13:44
_daniel-s__ left,
_daniel-s__ joined
|
|||
mls_ | Hmm, maybe put a space before the :inline, so that it looks like the rest of the code... | 13:44 | |
[Coke] | should we .gitignore generated test files? | 13:48 | |
13:49
_daniel-s__ left
|
|||
moritz | [Coke]: what kind of generated test files? | 13:49 | |
13:49
_daniel-s__ joined
|
|||
[Coke] | jnthn: did you already "put back" |$c (from NOMMAP) ? | 13:49 | |
moritz | if you mean temp files generated from test files... those should be cleaned up by the tests themselves | 13:50 | |
if not, the tests should be fixed | |||
[Coke] | tempfile_filehandles*, tempfile_io*, unlink-test-fileunlink-* | ||
moritz | yes, the test files should delete them | 13:51 | |
[Coke] | moritz: ok. (I run a lot of tests that don't finish normally, so they're more noticable for me.) | ||
moritz | [Coke]: me too :-) | ||
btw t/spec/S32-array/unshift.t aborts for me... also for anybody else? | 13:52 | ||
jnthn | nom: sub foo(|$c) { say $c.list; say $c.hash }; foo(1,2,3,:c<4>,:d<5>) | ||
p6eval | nom: OUTPUT«1 2 3Segmentation fault» | ||
jnthn | [Coke]: Not yet, it seems :) | ||
mls_ | I get 'unshift_pmc() not implemented in class 'Mu'' | ||
[Coke] | so close. ;) | ||
moritz | same here | 13:53 | |
tadzik: I think you last touched shift... see above | |||
jnthn | [Coke]: Think I got half way through that and nested signatures, then got distracted hacking on meta-circularity stuff. | ||
[Coke] | hurm. t/spec/S12-introspection/methods.t changed its failure mode. | ||
13:53
daniel-s joined,
_daniel-s__ left
|
|||
jnthn | [Coke]: If it's now about :tree, just fudge it :) | 13:53 | |
(if it's only the :tree tests that fail) | |||
[Coke] | too many named arguments | 13:54 | |
jnthn | I bet that's the :tree tests. | ||
[Coke] checks. | |||
mls_ | nom: my @a; unshift @a, 1 | 13:55 | |
p6eval | nom: OUTPUT«unshift_pmc() not implemented in class 'Mu'current instr.: '_block17034' pc 661650 (src/gen/CORE.setting.pir:176588) (src/gen/CORE.setting:3161)» | ||
dalek | kudo/nom: d9323d4 | moritz++ | t/spectest.data: comb.t needs ICU |
13:57 | |
13:57
daniel-s_ joined
|
|||
[Coke] | jnthn: it doesn't really get anywhere, lots of unit strings, then barf. | 13:57 | |
*uninit | 13:58 | ||
13:58
daniel-s left
|
|||
jnthn | ah | 13:58 | |
13:58
buubot_backup left
13:59
buubot_backup joined
|
|||
jnthn | It can't be that busted, lots of bits of the metamodel use .^methods... | 13:59 | |
nom: say Int.^methods | |||
p6eval | nom: OUTPUT«Int Num Rat abs Bridge chr succ pred sqrt base Bool Str abs sign sqrt sin cos tan sinh cosh tanh atan2 floor ceiling unpolar cis Complex truncate base log exp Numeric log log10 exp roots ACCEPTS Bool gist rand truncate bytes chars fmt substr uc lc ucfirst lcfirst chomp chop … | ||
jnthn | nom: say Int.^methods(:local) | ||
p6eval | nom: OUTPUT«Int Num Rat abs Bridge chr succ pred sqrt base Bool Str» | ||
14:00
buubot_backup left
14:01
daniel-s__ joined
|
|||
dalek | ast: d9d8264 | moritz++ | S (2 files): fudge/simplify tests that made rakudo die in absence of bigint libs |
14:01 | |
14:01
daniel-s_ left
|
|||
tadzik | moritz: it works here | 14:02 | |
[Coke] | nom: __END__ | 14:03 | |
p6eval | nom: OUTPUT«Could not find sub &__END__current instr.: '_block1002' pc 74 ((file unknown):28012180) (/tmp/_6qe5OMVnN:1)» | ||
tadzik | oh, the sub variant is broken indeed | ||
moritz | tadzik: are both your rakudo and t/spec/ repos clean? | ||
tadzik | nom: my @a; @a.unshift(5) | ||
p6eval | nom: OUTPUT«unshift_pmc() not implemented in class 'Mu'current instr.: '_block17034' pc 661650 (src/gen/CORE.setting.pir:176588) (src/gen/CORE.setting:3161)» | ||
moritz | ie in synch with github | ||
tadzik | what | 14:04 | |
hmm | |||
moritz | seems like unshift need needs to initialize $!storage if necessary | ||
tadzik | oh, I know what that is | ||
we were supposed to consult pmichaud about this, yes | |||
we've come to conclusion with jnthn that it's not the best idea to initialize it in unshift, I think it should be done way before that | 14:05 | ||
moritz | you could simply return Nil unless pir::defined($!storage); | ||
14:05
daniel-s__ left,
Casan joined
|
|||
tadzik | that wouldn't help. @a.unshift(5) will make @a Nil | 14:05 | |
14:05
daniel-s__ joined
|
|||
tadzik | I can temporarily fix it in unshift itself, yes | 14:06 | |
moritz | ah, I was thinking of shift, not unshift | ||
[Coke] | jnthn: bah. bitten by hidden TAP output... it does actually get further tan I though. | ||
*than I thought | |||
dalek | kudo/nom: ffe522a | Coke++ | t/spectest.data: track failure modes |
||
Casan | hey, is it possible that we make a link to the compiler features on the rakudo.org page? (the old one used to have a rakudo status page which I enjoyed). | 14:07 | |
tadzik | any good way to create an RPA in Rakudo? | ||
shinobicl | hi all... i'm having a weird problem with parameters for a infix operator i made.... | ||
14:09
drbean_ left
14:10
daniel-s__ left,
daniel-s__ joined,
jimmy1980 joined
14:14
shinobicl left,
daniel-s__ left,
daniel-s__ joined
14:15
woosley joined
|
|||
dalek | ast: e154be7 | Coke++ | S12-introspection/methods.t: nom fudging |
14:15 | |
[Coke] | jnthn: fudged. | 14:16 | |
tadzik: pir::new ? | |||
jnthn | [Coke]: Thanks | ||
[Coke]: oh, that's not bad :) | |||
[Coke] | shinobicl: you have sample code? | ||
dalek | kudo/nom: b3869b4 | Coke++ | t/spectest.data: run another fudged test |
14:17 | |
jnthn | Especially as the .multi one looks out of date | ||
[Coke] | Yah, I'm just fudging, I'm not examining tests for specworthiness. | ||
jnthn | [Coke]: That's fine, was just commenting. :) | 14:18 | |
[Coke] | metoo.; ) | ||
14:18
daniel-s__ left
14:19
wtw left,
daniel-s__ joined
14:23
daniel-s__ left
|
|||
[Coke] | nom's spectests are generate a huge # of "uninitialized string" warnings. was this happening in master, OOC? | 14:28 | |
14:28
ggoebel left
|
|||
tadzik | oh, mebbe | 14:28 | |
moritz | there were occasionaly warnings, but not too many | 14:29 | |
14:30
Kivutarrr left
14:33
ggoebel joined
|
|||
jnthn | .win 17 | 14:33 | |
oop | |||
s | |||
...keyboard usage fail. | 14:34 | ||
[Coke] | esc-u is shorter. :) | ||
moritz tries to stay below a magic number of 15 irssi windows | |||
though I often fail | |||
jnthn blames having drunk too much coffee today | 14:35 | ||
[Coke] | Unknown error condition | 14:39 | |
git-svn++ | |||
14:41
molaf joined
|
|||
[Coke] | "total", 8773, 12, 386, 955, 10126, 36184 | 14:41 | |
"Synopsis", "pass","fail","todo","skip","plan","spec" | |||
jnthn | What's the line for master? | 14:42 | |
[Coke] | Iunno, that one took me a long time to run. :) | ||
lemme check. | |||
14:45
birdwindupbird left,
shinobicl joined,
djh joined
14:46
djh left
|
|||
dalek | ast: 7788a35 | moritz++ | S32- (2 files): remove outdated tests, add a missing .gist |
14:47 | |
jnthn | decommute & | 14:55 | |
14:56
shinobicl left
14:59
buubot_backup joined
15:01
kaare_ joined
15:02
rdesfo joined
15:05
JimmyZ_ joined
|
|||
Woodi | hi ppls | 15:18 | |
anyone is doing P6 in C++ maybe ? | |||
TimToady | mberends++ was working on a 6model in C, iirc | 15:19 | |
moritz | or is the question more about embedding? | 15:20 | |
Woodi | i asking about new compiler | 15:21 | |
should be little easier then plain C, IMO | |||
moritz | the lesson learned from previous compiler projects is to write the runtime is a fast, low-level language, and most of the compiler in Perl 6 | 15:22 | |
Woodi: yes, only a little easier | |||
which is why nobody has really bothered | |||
TimToady | and smop was in C, if anyone decides to pick it up again | 15:23 | |
moritz would like to see a comparison of smop and 6model, but is too lazy to make one | |||
TimToady suspects they are largely complementary | 15:24 | ||
smop was mostly about binding captures to signatures | 15:25 | ||
15:25
jedai_ joined
|
|||
Woodi | i got idea today: write P6 compiler in C++, start with embading P5 :) few goals will be met on start: P5, exceptions easier, classes... | 15:25 | |
PerlJam | And then we'd come full circle back to Topaz! :) | ||
moritz | iirc smop also did p5 interop pretty early on | ||
which wouldn't be all too ba | 15:26 | ||
d | |||
15:26
jedai left
|
|||
moritz | Woodi: so, start coding :-) | 15:26 | |
TimToady | we can add you a column on the features matrix :) | ||
moritz | ... as soon as at least 5 + appear | 15:27 | |
Woodi | i am extraordinary uncarefull programmer | ||
but start seems :)) | 15:28 | ||
TimToady | maybe you should do it in Haskell then :) | ||
Woodi | no way :) | ||
TimToady | since you're basically talking about a C++ backend, consider starting with one of the current platforms as a front-end to a C++ emitter | 15:30 | |
at the moment, niecza seems to have a better parser, and rakudo seems to have a better metamodel | 15:32 | ||
I don't know which one would be easier for writing a new emitter | 15:33 | ||
Woodi | i must read and think... and i feel i decided start coding README and TODO files :) | 15:34 | |
TimToady | but embedding a P5 to start is a nice idea | 15:35 | |
pugs kinda did that | 15:36 | ||
15:36
JodaZ_ is now known as JodaZ
|
|||
Woodi | www.linuxjournal.com/article/2901 do p5 embading in second paragraph of article :) | 15:37 | |
not quite but... | |||
JimmyZ_ | 1998 ... | 15:38 | |
that is very old | |||
TimToady | I doubt the embedding interface has changed much since then | 15:39 | |
moritz | there are a few options in newer perls that give more sanity, I have heard | ||
15:39
shinobicl joined
|
|||
shinobicl | [Coke]: the code is here github.com/shinobi/TaskScheduler/b...alendar.pm ... the test program here github.com/shinobi/TaskScheduler/b...Calendar.t | 15:40 | |
[Coke]: is like the 2nd parameter of the operator gets "lost" on its way. The values that the 2nd object contains are the defaults for a new object, not the values of the object it should be taking. | 15:41 | ||
pmichaud | good morning, #perl6 | 15:44 | |
mls_ | Hi pm! | ||
espadrine | o/ | ||
jnthn home | |||
o/ pmichaud | |||
TimToady | shinobicl: I wonder if it could have to do with the chaining semantics of eqv's precedence level | ||
15:45
DonGene left
|
|||
TimToady | you might try a different operator name that doesn't do chaining by default | 15:45 | |
also, I probably wouldn't do the internal eqv tests with ~~, but with more eqvs on the subparts | 15:46 | ||
[Coke] | arrrrgh. ran the test summary in master, but the results scrolled off my screen buffer. | 15:48 | |
TimToady | to absolutely rule out precedence issues, you might put parens around the eqv test too | ||
you have them around the !eqv, but not the eqv | |||
jnthn | moritz: (smop vs 6model) Both start with a prototype-ish primitive then build things up from there. 6model takes a fairly different approach to representations, and also has quite a big focus on gradual typing, which I'm not sure smop really did. | ||
mls_ | pmichaud: any insights on whether warn() should use CONTROL_ERROR as exception type or some other to-be-defined value? | 15:49 | |
15:49
im2ee joined
|
|||
TimToady | warn is defined to be a control exception, so you're in the right ballpark anyway | 15:49 | |
mls_ | CONTROL_ERROR gets caught by CATCH, but warn() exceptions should not be caught by CATCH | 15:50 | |
pmichaud | mls_: what does master use? | ||
mls_ | master uses CONTROL_ERROR, i.e. CATCH catches warn() | ||
TimToady | control exceptions should not be caught by CATCH | ||
15:50
woosley left
|
|||
mls_ | well, currently die() also throws CONTROL_ERROR | 15:50 | |
TimToady | eek | ||
15:51
im2ee left
|
|||
mls_ | (at least in master) | 15:51 | |
TimToady | it's a misuse of the word CONTROL, at minimum, then | ||
control exceptions are "unexceptional" exceptions, and die is not unexceptional | 15:52 | ||
jnthn | That's possibly a Parrot choice of name, not a Rakudo one :) | ||
mls_ | that's why handle_types_except('CONTROL') doesn't include CONTROL_ERROR ;) | ||
jnthn | But yes, it's...not good. | ||
pmichaud | mls_: looking | 15:53 | |
[Coke] | CONTROL_ERROR may be a leftover from tcl's [error] | 15:54 | |
shinobicl | Timtoady: changing from "eqv" to "¬" works, thanks :) | ||
15:55
cosimo left
|
|||
mls_ | so do we need a new CONTROL_X for warn()? | 15:55 | |
tadzik | hi pmichaud | ||
TimToady | so some bug in chaining, probably | ||
maybe in the copy semantics that keep a temp for the next comparison | |||
in case you say $a eqv $b eqv $c | 15:56 | ||
pmichaud | copy? | ||
if it chains, it's not really a copy | |||
TimToady | shinobicl++ has a bug in overloading eqv | ||
tadzik | pmichaud: my yesterday's implementation of List.unshift, using nqp::unshift, has problems with uninitialized $!items, being Mu rather than an RPA. What do you think is a best place to initialize $!items? the unshift itself seems like not the best place to do it | ||
pmichaud | tadzik: your unshift also doesn't work for infinite lists :( | ||
TimToady | it goes away when a different operator is used | ||
moritz | what should unshift with an infinite list do? fail? loop? | 15:57 | |
TimToady | we discussed that yesterday | ||
pmichaud | it should put the infinite part into the generator portion of the list, I suspect. | ||
TimToady | unreify the reified bits of the array, was the upshot | ||
pmichaud | exactly. | ||
moritz | why not throw them away? | 15:58 | |
tadzik | pmichaud: well, it passes all spectests :/ | ||
TimToady | why throw them away? | ||
moritz | you can't access anything after an infinite chunk anyway | ||
pmichaud | moritz: we don't always know that something is infinite. | ||
TimToady | you can if we provide a surreal shift | ||
tadzik | bbs | ||
pmichaud | something can be "infinite" without being actually infinite. | ||
moritz | ok, I wasn't aware of that | 15:59 | |
pmichaud | tadzik: (spectests) yeah, the spectests aren't very complete when it comes to stuff like this | ||
15:59
shinobicl left
|
|||
pmichaud | anyway, List.unshift should not be putting things into $!items (the reified bits) | 15:59 | |
TimToady | say 1,2,3, -> $n { last if $n > 10; $n + 1 } ... *; # officially infinite | 16:00 | |
perl6: say 1,2,3, -> $n { last if $n > 10; $n + 1 } ... *; # officially infinite | |||
p6eval | rakudo 922500, niecza v8-20-g6988dc9: OUTPUT«1234567891011» | ||
..pugs: OUTPUT«***  Unexpected " #" at /tmp/0ulErPJtZT line 1, column 52» | |||
jnthn | nom: say 1,2,3, -> $n { last if $n > 10; $n + 1 } ... *; | ||
p6eval | nom: OUTPUT«...» | ||
pmichaud | I still have a fix for that coming :-) | ||
jnthn | oh, cool :) | ||
TimToady | biab & | 16:01 | |
16:01
pernatiy left
|
|||
[Coke] | pmichaud: any big things landing in nom soon? | 16:02 | |
pmichaud | qregex, hopefully. I'm not sure about "soon" though -- lots of household distractions lately. :( | ||
plus just a general lack of properly shaped tuits | |||
[Coke] | hokay. | 16:03 | |
16:03
wamba left
|
|||
[Coke] | no pressure. ;) | 16:03 | |
I am very jealous of my 14 year old, btw. home playing PS3. :P | |||
pmichaud | ....why is CATCH catching die/warn exceptions? I don't understand. | 16:05 | |
oh, it's supposed to do that, yes? | |||
oh, CATCH catches die, but not warn. | |||
(is supposed to) | |||
jnthn | pmichaud: It also catches die inside the CATCH itself. | ||
pmichaud | jnthn: that's a separate issue. | 16:06 | |
mls_ | I patched that | ||
jnthn | ah, ok | ||
mls_: Did it get applied? | |||
pmichaud | mls_: can I see the patch for that? | ||
jnthn | (sorry, I was quite distracted by $dayjob earlier :)) | ||
mls_ | I just added a pop_eh, patch: gist.github.com/1120201 | 16:07 | |
pmichaud | mls_: that's wrong. | ||
mls_ | why? | ||
pmichaud | it removes the handler in the case of a resumed exception. | ||
mls_ | It does? Doesn't a resume reinstall the handlers? | ||
pmichaud | it's also possible that the top handler on the stack isn't the handler being popped. | ||
sorry | 16:08 | ||
it's also possible that the top handler on the stack isn't the current handler. | |||
a resume doesn't reinstall the handler for the current callframe, or for any functions it calls after the resume. | 16:09 | ||
16:10
spinclad left
|
|||
mls_ | Hmm, how can we rethrow an exception if we mustn't pop the handlers? | 16:10 | |
pmichaud | we have to have some way to tell the handler not to catch things | 16:11 | |
I don't have a good answer to the problem (given Parrot's current exception model) | |||
but I suspect that pop_eh won't play well with gather/take, or with while loops. | |||
jnthn | Parrot's current exception model is only a good answer to "How do I implement exceptions badly?" :/ | ||
mls_ | no spectest failures with the patch, btw | 16:12 | |
pmichaud | I don't think the spectests currently test resumable exceptions, or the combination of CATCH/gather | ||
[Coke] | I am sure that parrot could use a someone to drive an ng exception model if anyone here has those tuits. | 16:13 | |
pmichaud | anyway, CATCH catching die is a long-standing known bug (getting ticket #'s) | ||
16:14
jevin left
|
|||
pmichaud | RT #64262 | 16:14 | |
16:14
mj41 left,
jevin joined
|
|||
pmichaud | RT #96028 | 16:15 | |
mls_ | still, I think resuming the continuation reinstalls the exception handler | 16:19 | |
16:20
colorspace joined
|
|||
pmichaud | let's try it then. | 16:20 | |
pmichaud writes a PIR example. | |||
mls_ | nom: for 1..3 -> $i { say $i; next; say "hello"; } | ||
p6eval | nom: OUTPUT«123» | ||
mls_ | also works with my patch | ||
pmichaud | that doesn't really prove anything. | 16:21 | |
mls_ | I feared that ;) | ||
pmichaud | there's no pop_eh there | ||
mls_ | why not? The setting is compiled with my patch | ||
[Coke] | here's master's run: | 16:22 | |
"total", 17716, 1365, 619, 1722, 21396, 36197 | |||
pmichaud | statement for doesn't use CATCH/CONTROL blocks | ||
[Coke] | and nom: | ||
pmichaud | so the fact that you've added a pop_eh to CATCH/CONTROL makes no difference. | ||
[Coke] | "total", 8773, 12, 386, 955, 10126, 36184 | ||
"Synopsis", "pass","fail","todo","skip","plan","spec" | |||
mls_ | ok, that could be the reason why it works ;) | 16:23 | |
[Coke] | nom is currently at 49.5% of master | ||
pmichaud | gist.github.com/1120575 # resuming after exception doesn't restore handler | 16:27 | |
a slightly more complete example: | 16:28 | ||
16:22 <pmichaud> statement for doesn't use CATCH/CONTROL blocks | |||
grrrr. | |||
gist.github.com/1120583 # a slightly more complete example | 16:29 | ||
mls_ | I'm wondering if parrot should be changed to restore the handlers | 16:31 | |
pmichaud | ...but we popped it. | ||
mls_ | Yes, but the continuations is a "snapshot" of a time when it wasn't popped | ||
pmichaud | in the first resumed 'a', I suspect the handler is still there. | 16:32 | |
I'm not sure it should be restoring the handler in 'main', though. | |||
although I bet that's another problem (more | 16:33 | ||
) | |||
16:34
daxim left
|
|||
pmichaud | gist.github.com/1120594 # another case | 16:34 | |
looks like the exception handler is gone for the called 'a' as well :-/ | |||
16:38
JimmyZ_ left
|
|||
mls_ | why does it loop if I comment out the pop_eh? | 16:39 | |
pmichaud | you mean why does the CATCH block result in an infinite loop? | ||
mls_ | In your second example, if you comment out pop_eh it starts to loop | 16:40 | |
pmichaud | hmmmm | 16:42 | |
mls_ | ah, it's the exit 0 | ||
there's a pop_eh missing right before the exit 0 | |||
pmichaud | yes, that's it. | ||
good catch :) | 16:43 | ||
16:43
espadrine left
|
|||
pmichaud | I forgot that exit also throws an exception :-) | 16:43 | |
I should've just put .return (0) | |||
mls_ | do you see any use case for the current behaviour, i.e. not reinstalling the handler? | 16:46 | |
s/handler/handler stack/ | 16:47 | ||
pmichaud | I don't understand how it's supposed to reinstall the handler. | ||
mls_ | well, store them in the contination PMC, I guess | 16:48 | |
[Coke] | argh. that number for master might be wrong, as I'm not sure it was running against the right version of t/spec | ||
mls_ | continuation | ||
pmichaud | and invoking a continuation causes the exception handlers to be restored for all callers? that feels very wrongish. | ||
16:49
awoodland left
|
|||
pmichaud | I'm more inclined to believe that pop_eh isn't the correct solution here. | 16:49 | |
16:49
icwiener joined
|
|||
pmichaud | Really, "pop_eh" means "remove the exception handler" and that's not what we're wanting to do here. | 16:49 | |
We're simply wanting the exception handler to not catch certain exceptions for a period of time. We're not wanting to remove it entirely. | |||
I have an another example coming... just a sec. | 16:50 | ||
[Coke] drinks tons of diet snapple, and is reminded of yapc in chicago. | 16:51 | ||
16:51
jevin left,
wamba joined
16:52
jevin joined
|
|||
pmichaud | gist.github.com/1120645 # another example of pop_eh failure | 16:54 | |
note how handler1 accidentally removes handler2 | 16:56 | ||
diakopter | moritz: u around? | 16:57 | |
phenny | diakopter: 06:39Z <moritz> tell diakopter about github.com/moritz/perl6-Sudoku | ||
pmichaud | (instead of removing itself) | ||
16:57
shinobicl joined
|
|||
mls_ | Ah yes, true, that's what you meant that pop_eh may remove the wrong handler | 16:58 | |
ok, pop_eh is completely wrong | 16:59 | ||
diakopter | is it bad that I vastly prefer github's rendering of the synopses' pod over the one at perlcabal.org/syn | ||
pmichaud | diakopter: it's devastating. | 17:00 | |
diakopter | heh | ||
17:00
Casan left
|
|||
mls_ | so we need to access the ExceptionHandler pmc in the exception somehow | 17:01 | |
pmichaud | actually, if we can find a way for an exception handler to determine that it's already in the caller stack, we could have it rethrow | 17:02 | |
or otherwise not catch exceptions | 17:03 | ||
17:03
mkramer joined
|
|||
mls_ | seems like most HLLs will run into this problem, so it would be nice if parrot provided some convenient solution | 17:03 | |
jnthn | pmichaud: Is there a reason you'd ever want a handler to catch its own exceptions? | 17:04 | |
pmichaud | jnthn: I can't think of one, no. | ||
(doesn't mean there isn't one.) | |||
anyway, for rakudo I see a couple of possibilities | 17:06 | ||
(1) we could subclass our own ExceptionHandler PMC that does what we need | |||
(2) we could have an opcode that does rethrow_if_handerl_active | |||
*handler_active | |||
I'm not exactly sure what the caller stack looks like when a handler is active | 17:08 | ||
pmichaud checks. | |||
jnthn | errand, bbs | 17:10 | |
[Coke] | -> (13:07) From GArrow, to coding: | 17:11 | |
- Saying Perl 6 has a great feature is like saying Harry Potter has better | |||
- spells than Gandalf. We need to stick to non-fictional languages here. | |||
pmichaud | heh. | ||
tadzik | well, it's Harry who survived | 17:12 | |
[Coke] | ( search.cpan.org/~garrow/ ) | ||
tadzik: ... that kind of misses the point there. ;) | |||
tadzik | shush! :) | ||
[Coke] | also, they both died. get with the program. ;) | ||
tadzik | new HPatMoR chapters? | 17:16 | |
(: | 17:17 | ||
pmichaud | hmmm | 17:19 | |
[Coke] | pmichaud: hummmmmm | ||
17:19
Doctor_Pi joined
|
|||
pmichaud | I'm not seeing any way to detect that we're currently in an exception handler based on the call trace. | 17:19 | |
[Coke] | exceptions handlers are not .subs, so that makes sense. | 17:20 | |
(at least, not necessarily subs) | |||
pmichaud | oh | 17:21 | |
we could twiddle the min/max severity to enable/disable the handler. :-) | 17:22 | ||
that feels appropriately evil. | |||
[Coke] | evil's a good word. | 17:23 | |
17:24
masak joined
|
|||
masak | yay! hi, #perl6! | 17:24 | |
phenny | masak: 01 Aug 22:21Z <diakopter> ask masak do you know of anyone writing sudoku-related code in Perl 6 | ||
tadzik | o | ||
masak: o/ | |||
Doctor_Pi | Perl6 uses ICU, so I thought I would install ICU on PowerBook G4 running 10.5.8. When I ran "perl Configure.pl --gen-parrot" I get "no icu-config". | ||
masak | diakopter: I'll be giving a talk about Sudoku in (Perl 5, C,) Perl 6 at YAPC::EU. | ||
diakopter: haven't gotten to the point where I port my Moose code to Perl 6, but I will have in a week or so. | 17:25 | ||
pmichaud | so, when we enter a handler, set its min_severity to REALLY_HIGH_SEVERITY. Resuming an exception then needs to set min_severity back to zero somehow. | ||
[Coke] | Doctor_Pi: how did you install icu? | ||
(you may need icu-devel or the equivalent) | 17:26 | ||
(powerbook) macports? | |||
pmichaud | because we don't do a lot with resumable exceptions at the moment, I'm absolutely fine with simply doing eh.'min_severity'(65535) inside of a CATCH block for now. | 17:27 | |
takadonet | masak: I was writing Sudoku solver for the rosetta code by doing a simple port of the java version then golfing it to Perl6ism ways. However I ran out of time to work on it | ||
pmichaud | (that will disable the handler without removing it) | ||
masak | takadonet: nice. hope you get time back. | ||
takadonet: I'm going the Knuth way and using the Dancing Links algorithm. | 17:28 | ||
mls_ | yes, I wonder if the Exception contains the ExceptionHandler somewhere. | ||
takadonet | masak: Was doing brute force way.... my second objective was to test performance as we improve the nom branch | ||
pmichaud | mls_: I'm looking at that now. | 17:29 | |
I see handler_iter there. | |||
mls_ | there's handler_iter and handler_ctx | ||
Doctor_Pi | [Coke]: Downloaded the tarball off the ICU site. And used these instructions here: javajosh.blogspot.com/2010/12/how-t...n-osx.html | ||
masak | takadonet: hm... so, tree search without propagation? :/ | ||
takadonet: have you seen Norvig's solution? | |||
takadonet | nope | ||
Doctor_Pi | [Coke]: I need to add one thing because there was a preexisting icu directory in the Downloads directory, the most recent tarball was extracted into icu-1 | 17:30 | |
pmichaud | oh, there's another answer. | 17:31 | |
Doctor_Pi | [Coke]: I then ran the instructions in the icu-1/source folder. | ||
pmichaud | since our CATCH always involves invoking a sub, we could look for the existence of that sub in the call stack | ||
(would need to check for the dynamic sub, not the static one) | 17:32 | ||
still, twiddling min_severity is easier for now. | |||
looking. | |||
17:32
mkramer left
|
|||
mls_ | but the sub on the callstack doesn't mean much, it can be multiple times on the call stack... | 17:33 | |
pmichaud | the CATCH sub cannot be. | 17:34 | |
[Coke] | Doctor_Pi: is "icu_config" in your path? | ||
er, icu-config | |||
masak | pmichaud: why not? | ||
pmichaud | a given CATCH closure can't be recursive, I suspect. | 17:35 | |
Doctor_Pi | [Coke]: I should check that. | ||
pmichaud | i.e., a CATCH closure shouldn't be catching its own exceptions. | ||
mls_ | why can't the code in CATCH do some fancy operation (on a different object) that also runs in the same code? | ||
masak | pmichaud: it can occur multiple times on the stack, can it not? | ||
pmichaud | masak: the same closure? | ||
masak | pmichaud: closure, or closure clone? | ||
17:36
wooden left
|
|||
mls_ | different ExceptionHandler object, though | 17:36 | |
pmichaud | closure clone, if you like. | ||
masak | then, no. | ||
pmichaud | S04:1076 | ||
" so we say that a C<CATCH> block | |||
never attempts to handle any exception thrown within its own dynamic scope. | |||
" | |||
masak | ok. | ||
[Coke] | Doctor_Pi: if it is, parrot should be finding it (and we can diagnose why not) if not, you can add it, or use the explict parrot config parameters that say "here is my icu" | 17:37 | |
Doctor_Pi | [Coke]: I have a icu-config in /sw/bin and this is in my path, but it's not the one I just installed. | ||
17:39
impious joined
|
|||
pmichaud | since I think any given block is limited to a single CATCH block, I would not be opposed to storing the handler lexically, like we do for RETURN. | 17:39 | |
or perhaps it's an attribute on the current block | 17:40 | ||
then we could easily twiddle its min_severity | |||
or just store the handler in a register somewhere. | 17:41 | ||
I guess PAST doesn't make it easy to do that, though. Hrm. | 17:42 | ||
mls_ | I think the the Exception's handler_iter[-1] contains the exception handler | 17:43 | |
at least the code for the finalize opcode looks like it | |||
pmichaud looks | 17:44 | ||
yes, it does. | 17:45 | ||
I'd be fine with that :-) | |||
Doctor_Pi | [Coke]: there is a icu-config in /usr/local/bin. this is in my path but after /sw/bin. what are explicit parameters for "here is my icu"? | 17:46 | |
mls_ | so we get the ExceptionHandler, store the severity in some loval var, raise it to some insane value, and run the CATCH block | ||
local | |||
pmichaud | at this stage, I don't even care if we store the severity in some local var | ||
mls_ | we just need to restore it when we resume the exception | ||
pmichaud | but actually, the more I think about it, the more I'm convinced that any given CATCH block can only exist once on the dynamic stack. | 17:47 | |
mls_ | I don't know. The code from the CATCH block can do many things, I don't see why it can't run the same sub again | ||
pmichaud | oh, I see. | 17:48 | |
mls_ | (setting up a new exception handler...) | ||
pmichaud | but if it runs the same sub again, it gets a new CATCH closure. | ||
[Coke] | Doctor_Pi: in parrot, you can run: perl Configure.pl --help | grep icu | ||
pmichaud | which isn't the same as the one that ran the same sub again. | ||
[Coke] | --icu-config=/path/to/icu-config | ||
that should do it. I don't know how to tell rakudo to use those args on parrot, though. | 17:49 | ||
pmichaud | for master, --gen-parrot-option=--icu-config=/path/to/icu-config | ||
for nom, --parrot-option=--icu-config=/path/to/icu-config (I think) | |||
Doctor_Pi | [Coke]: --gen-parrot-option='--option=value' | 17:50 | |
[Coke]: i was reading the the Configure.pl in the root of the tarball. | 17:51 | ||
pmichaud | mls_: I'm fine with either approach for now. Also note that you probably don't need to keep track of the severity, since we don't make use of the severity yet in any of our code (i.e., it's safe to restore min_severity to zero) | ||
where "either approach" is (a) twiddle min_severity, or (b) check the dynamic stack and rethrow if the current block is already on it | 17:52 | ||
mls_ | ah, nice. I'll provide a patch tomorrow, my perl6 hacking time for today is over ;) | ||
pmichaud | note that (b) will work even with resumable exceptions, while (a) needs some big-time help to detect when we do a resume. | ||
(so I don't think that (a) can be the long-term answer) | |||
mls_ | understood. Thanks! | ||
pmichaud | we still need to figure out what exception to use for warn. | 17:53 | |
mls_ | Ah, yes, that also ;) | ||
pmichaud | and die too, if we don't like using CONTROL_ERROR | ||
sorear | good * #perl6 | ||
mls_ | What's CONTROL_OK? | 17:54 | |
pmichaud | (I agree that CONTROL_ERROR is misnamed for this. OTOH, that's what Parrot's 'die' opcode throws.) | ||
I don't think CONTROL_OK is specifically defined in Parrot. | |||
(Yes, there's a CONTROL_OK type; no, I don't think it's been given any specific meaning.) | 17:55 | ||
mls_ | ;) | ||
pmichaud | I don't see any other predefined parrot exception types that really fit for die/warn | 17:56 | |
Doctor_Pi | Stupid question. perl Configure.pl --gen-parrot is quitting with an unable to locate parrot | 17:57 | |
_config error, | |||
sorry pressed return instead of another key. | |||
pmichaud | Doctor_Pi: perhaps remove parrot_install dir and try again | ||
diakopter | masak: you grok Dancing Links? | ||
masak | diakopter: I do. | ||
Tene | Haha, you can probably blame me for the bad names, iirc. | ||
17:57
mkramer joined
17:58
dorlamm joined
|
|||
Doctor_Pi | pmichaud: which one is the parrot_install dir? | 17:58 | |
masak | diakopter: I invite you to look at my implementation of it in github.com/masak/dlx-simple | 17:59 | |
Tene | pmichaud: severity was used for 'warn' at least once in the past; dunno if that's still the case or not. | ||
pmichaud | Tene: yes, that's still the case. | ||
mls_ | hmm we can use severity 2 for CATCH, so that warnings don't get caught | ||
Doctor_Pi | forgive me I'm a bit green at this. | ||
17:59
wolfman2000 left
|
|||
pmichaud | mls_: that might exclude other errors, though. | 17:59 | |
masak | Doctor_Pi++ # contributing | ||
mls_ | Other warnings ;) | ||
pmichaud | mls_: no, other exceptions that have severity set less than 2 | ||
CATCH catches everything that isn't CONTROL | 18:00 | ||
if you set min_severity to 2, you'll miss any exceptions that have min_severity less than 2. | |||
Tene | I'm really sad that I never managed to fix Parrot's exceptions system like I wanted. | 18:01 | |
iirc, though, whiteknight got my work on throwing instances of arbitrary subclasses of Exception reimplemented and merged into master a while back. | 18:02 | ||
mls_ | handle_types and handle_types_exclude should yse (type,severity) tupels ;) | ||
s/yse/use/ | |||
Tene | I don't recall whether you can push_eh an isntance of a subclass of ExceptionHandler, though. | ||
pmichaud | I believe so. | ||
Tene | If you can, you could just write your won subclass with a custom can_handle method that does what you want to ignore appropriate exceptions. | ||
pmichaud | Tene: yeah, I looked at that. | 18:03 | |
Tene | (I haven't really been following the dicsussion here very closely; just barely stopped by) | ||
pmichaud | I think the other solutions are simpler and more faithful to the P6 spec. | ||
mls_ | gotta run, till tomorrow... | 18:04 | |
pmichaud | and if we subclass the ExceptionHandler PMC, we'd need to update PAST::Control to allow custom ExceptionHandler types, or avoid it altogether. | ||
18:04
mls_ left
|
|||
diakopter | masak: I think the most interesting sudoku solvers are the ones that can be used to generate human-solvable sudoku boards | 18:04 | |
the ones that can solve any board are just too powerful to do that | 18:05 | ||
Tene | pmichaud: PAST::Control is pretty bad as it is. It doesn't actuall support many of the operations people want. Fixing that is also on my list of projects I wish I had done before I stopped working on Parrot. | ||
masak | diakopter: I have some ideas in that area. | ||
Tene | I really should have put more thought into that design before adding it. :( | ||
masak | diakopter: viz. generating a full board, and then selectively removing numbers until it no longers solves to a unique solution. | ||
diakopter | right | 18:06 | |
Tene | I don't think I ever wrote down the more-reasonable API for exception handling in PAST that I worked out before... I don't remember what I planned to do there. | ||
diakopter | masak: but if the solver is too powerful, it can solve boards that realy aren't human-solvable | ||
masak: i.e. ones that require "guessing" and backtracking to solve | 18:07 | ||
sorear | #phasers in 52? | ||
masak | diakopter: are you saying there's a finite set of human tricks for solving Sudoku? | 18:08 | |
diakopter | if you're asking whether I think there are boards that aren't realistically human-solvable, then yes | 18:09 | |
that still have unique solutions, of course | |||
masak | hadn't considered that. thanks for the input. | ||
I've never actually tried solving a Sudoku grid. :P | |||
it looks so boring. | |||
diakopter | lolz | ||
sorear | s/realistically/funly/ | ||
diakopter | sorear: a coworker generated a board that his solver can solve that requires 8-deep guessing | 18:10 | |
that's not just unfun, that's nigh impossible | 18:11 | ||
jlaire | there's a collection of boards with a minimum number of given numbers and a unique numbers somewhere in the internets | ||
they are waaay too hard for mere humans | |||
diakopter | yes | ||
jlaire | unique solution* | ||
jlaire finds sudoku boring too | |||
tadzik | sorear: ywis | 18:12 | |
sorear | ywis=? | ||
tadzik | yes | ||
18:15
Kivutarrr joined
|
|||
diakopter | masak: solving all computer-solvable sudoku boards is cool, but mimicking human solution techniques is better for generating human-solvable boards | 18:23 | |
masak | diakopter: my purpose is slightly different. I want to explore the translation of human-readable problems into DLX matrices (and back). | 18:24 | |
moritz | diakopter: my experience from running a sudoku website is that all sudokus are solvable by humans :-) | 18:25 | |
diakopter | moritz: but how are those boards generated | 18:26 | |
[Coke] | I prefer to solve them by avoiding trial and error. | ||
diakopter | of course | ||
moritz | diakopter: by brute force | ||
(in C++) | |||
diakopter | moritz: that's not what I and jlaire mean by human-solvable | 18:27 | |
oh you mean generated | |||
but how by brute force | |||
moritz | *you* asked how they were generated :-) | ||
jlaire | some puzzles require one of 1) computer assistance, 2) *lots* of guessing and back-tracking, 3) non-practical amounts of look-ahead | ||
masak | moritz: could you define "brute force" more narrowly. because I tried a slightly cleverer than brute force generator, and couldn't get it to spit out solutions. | ||
s/\./?/ | 18:28 | ||
diakopter | moritz: please clarify "brute force"; how do you know boards have only one solution | ||
18:28
Kivutarrr left
|
|||
moritz | diakopter, masak: moritz.faui2k3.org/en/yasss#generate | 18:28 | |
masak looks | 18:29 | ||
heh. nice :) | |||
moritz | what I do additionally (not mentioned on that page) is to check for each hint if you can take it away, and still have a unique solution | ||
masak | makes sense. | ||
that's what I wanted to do. | |||
jlaire | 26 is a lot | 18:30 | |
masak | jlaire: yes, but then you remove all hints you can remove... | ||
26 is for the computer, not for the human :) | |||
moritz | jlaire: yes, considering that 17 is the minimum... but those are really hard to find | ||
18:31
envi left
|
|||
jlaire | masak: oh I see | 18:31 | |
moritz | i guess you can use algorithms tailored for finding ones with only 17 hints | ||
masak | moritz++ # nice, pragmatic heuristic | ||
moritz | oh, and jnthn++ for 6guts.wordpress.com/2011/08/01/a-hi...ogramming/ | 18:32 | |
diakopter | moritz: how can you support your belief that all valid boards are human solvable | 18:33 | |
masak | yes, jnthn++ | 18:35 | |
great hopes for the future! | |||
18:35
icwiener left
|
|||
moritz | diakopter: I have a website where I offer one sudoku each day for online solving | 18:36 | |
shinobicl | hi... being that "==" means numerically equal, and ≅ means (mathematically) "structurally indentical", a perl6 operator for "functionally equivalent" should be ≅ or ≅≅ ? | ||
moritz | diakopter: I picked the hardest I could find/generate, by several different metrics | ||
[Coke] | ENOFONT | 18:37 | |
diakopter | moritz: that's not very convincing, unfortunately | ||
masak | shinobicl: how would you define "functionally equivalent"? | ||
moritz | diakopter: and all of them have been solved about 30 times | ||
[Coke] | .u ≅ | ||
phenny | U+2245 APPROXIMATELY EQUAL TO (≅) | ||
U+0020 SPACE ( ) | |||
[Coke] | .u ≅ | ||
phenny | U+2245 APPROXIMATELY EQUAL TO (≅) | ||
U+0020 SPACE ( ) | |||
[Coke] | .u ≅≅ | ||
phenny | U+2245 APPROXIMATELY EQUAL TO (≅) | ||
moritz | diakopter: and I have data to support estimates that <10% was cheating | ||
shinobicl | that both objects have the same functionality. | ||
diakopter | moritz: how many of these "genius" level boards do you have | 18:38 | |
masak | shinobicl: I mean, how would you define it computationally? | ||
diakopter | moritz: I'd be curious to try some of them | ||
masak | shinobicl: I can tell that sub foo { $^x * 2 } and sub bar { $^x + $^x } always give the same result (for Nums, at least), but most of my programming languages can't. | ||
moritz | diakopter: about 1.8k | 18:39 | |
shinobicl | in my particular case. One workdaycalendar would give you "2 workdays between august 3 and august 5" | ||
moritz | diakopter: sudokugarden.de/en/online/ | ||
diakopter | moritz: how do i ask for one of those 1.8k | ||
masak | shinobicl: I don't see the connection between that and "functionally equivalent". | 18:40 | |
moritz | diakopter: sudokugarden.de/en/online/dstats has stats about the easiest and hardest | ||
18:41
shinobicl_ joined
|
|||
shinobicl_ | even if other "secondary" properties of the objects are different | 18:42 | |
diakopter | moritz: I suggest that your generation technique possibly precludes the generation of the impractical-to-solve-by-humans boards, in which case it's a good generator. :) but I still maintain there are plenty of impractically solvable boards | 18:43 | |
18:43
shinobicl left
|
|||
moritz | diakopter: most of these sudokus aren't generated by me | 18:43 | |
diakopter: there's a list of minimal sudokus somewhere, collected by gordon royle or so | 18:44 | ||
diakopter: and I have a hard time believing the minimal sudokus are not among those that are hardest to solve | |||
diakopter | I don't understand your point | 18:45 | |
moritz | the selection of sudokus is not as narrow as you seemed to think it is | 18:46 | |
18:46
shinobicl_ left
|
|||
diakopter | I don't understand what you mean, but no matter | 18:47 | |
moritz | my experience about solving sudokus that are generated by computers is not limited to those generated with the algorithm linked to above | 18:48 | |
18:50
tokuhirom left,
tokuhirom joined
18:51
mkramer left,
shinobicl joined
|
|||
shinobicl | that is, the objects are functionally equivalent if they gave the same outputs with the same inputs | 18:51 | |
(sorry my internet connection sucks today) | 18:52 | ||
masak | shinobicl: and how will Perl 6 know that they do? | 18:53 | |
in general, I mean. | 18:54 | ||
shinobicl | not in general, depends on each case | 18:55 | |
18:55
tokuhirom left
|
|||
shinobicl | for my class, i know that when certains part of the object data are equal, then the compared objects are "functionally equivalent" | 18:56 | |
(i'm looking for a better term for that) | |||
masak | shinobicl: I guess what I'm saying is that while I see what you want to use it for, I fail to see how to build it. | ||
shinobicl | on, in my case i just compare 2 arrays on each object. I just need an appropiate operator for that | 18:57 | |
masak | shinobicl: are you simply talking about infix:<eqv> on objects, not functions? | ||
shinobicl | i've tried "eqv" but that didn't work | ||
yes masak | |||
masak | eqv should do that. | ||
shinobicl | i have problems overloading it | ||
masak | rakudo: say [1, 2, 3] eqv [1, 2, 3] | ||
p6eval | rakudo 922500: OUTPUT«Bool::True» | ||
masak | \o/ | ||
shinobicl | i just changed the word "eqv" by something else and then my overloaded operator worked | 18:58 | |
masak | shinobicl: sounds like an RT ticket, yes. | 18:59 | |
(an existing one, I mean) | |||
shinobicl | masak: irclog.perlgeek.de/perl6/2011-08-02#i_4209723 | ||
masak looks | 19:00 | ||
19:01
rgrau joined
|
|||
masak | shinobicl: I see. | 19:02 | |
19:04
alester joined,
rgrau left
|
|||
shinobicl | is that a bug? or maybe 'eqv' should be overloaded with something different from "infix" ? | 19:05 | |
19:09
Mowah left
|
|||
shinobicl | ...nevermind, i've just found Timtoady's comments about the issue | 19:11 | |
19:23
shinobicl left
19:26
dorlamm left
|
|||
jnthn | nom: my $x; $x ^^= 42, 43 | 19:30 | |
p6eval | nom: ( no output ) | ||
19:30
donri left,
donri joined,
p6eval left,
p6eval joined,
ChanServ sets mode: +v p6eval
|
|||
pmichaud | nom: say &infix:[^^] | 19:31 | |
p6eval | nom: OUTPUT«Confused at line 1, near "say &infix"current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)» | ||
pmichaud | nom: say &infix:<^^> | ||
p6eval | nom: OUTPUT«infix:<^^>» | ||
pmichaud | nom: my $x; $x ^^= 42; say $x; | ||
p6eval | nom: OUTPUT«42» | ||
sorear | nom: pir::branch__vI(-256) | ||
benabik | ^^ ? XOR? | ||
p6eval | nom: OUTPUT«Segmentation fault» | ||
moritz | nom: my $x; $x ^^= 42; ^^= 15 | 19:32 | |
p6eval | nom: OUTPUT«Confused at line 1, near "^^= 15"current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)» | ||
moritz | nom: my $x; $x ^^= 42; $x ^^= 15 | ||
p6eval | nom: OUTPUT«Segmentation fault» | ||
jnthn | sorear: Using pir:: is cheating :) | ||
moritz | there you go | ||
jnthn | moritz: And how is ^^ implemented? | ||
sorear | jnthn: I was testing the segfault reporting code in p6eval | ||
moritz | jnthn: dunno | ||
nom: say (0 ^^ 0) | |||
p6eval | nom: OUTPUT«0» | 19:33 | |
moritz | nom: say (0 ^^ 0).perl | ||
p6eval | nom: OUTPUT«0» | ||
moritz | nom: say (Any ^^ Any).perl | ||
p6eval | nom: OUTPUT«Any» | ||
[Coke] | if you can make parrot segfault, please open a ticket. | ||
sorear | nom: say (1 ^^ 1).perl | ||
p6eval | nom: OUTPUT«Method 'perl' not found for invocant of class 'Undef'current instr.: '_block1002' pc 110 ((file unknown):23355040) (/tmp/0dWdryZkUB:1)» | ||
moritz | Undef, that's the problem | 19:34 | |
jnthn | Right, same as usual...a Parrot type gets into an unfortunate place. | ||
pmichaud | jnthn: I'm happy with mapping Undef to Mu, fwiw. | ||
sorear | [Coke]: I think it's completely reasonable for branch_ic -256 to segfault | ||
moritz | same with xor= fwiw | 19:35 | |
pmichaud | We can also create a custom pasttype for the 'xor' we need if we want. I looked at it a couple of weeks ago and didn't like any of the answers. | 19:36 | |
19:36
Kivutarrr joined
|
|||
sorear | Aren't you responsible for all the pasttypes? | 19:36 | |
pmichaud | I don't understand the question, but the answer is "yes" | 19:37 | |
dalek | kudo/nom: 20edd76 | moritz++ | NOMMAP.markdown: update NOMMAP |
19:38 | |
jnthn | *lol* | ||
19:40
Vlavv_ left
19:49
MayDaniel left,
MayDaniel joined,
MayDaniel left,
MayDaniel joined
19:53
Vlavv_ joined
|
|||
dalek | ecza: 9c1607b | sorear++ | lib/Kernel.cs: Implement ::("OUR") reference |
19:58 | |
19:58
alester left
|
|||
dalek | ast: ee3ad6f | sorear++ | S02-names/pseudo.t: [S02-names/pseudo.t] Correct MY tests, add OUR tests |
19:59 | |
sorear | 2 down 10 left | ||
masak | \o/ | ||
20:07
molaf left
20:09
mkramer1 joined
20:15
Vlavv` joined
20:17
Vlavv_ left
20:22
Doctor_Pi left
20:23
Vlavv` left,
Vlavv_ joined
20:32
mkramer1 left
20:33
Fried_ joined
|
|||
pmichaud continues to have a strong dislike for xor. | 20:35 | ||
20:35
BooK joined
|
|||
pmichaud | xor was fun the first time. Now it's just a royal pain. | 20:35 | |
ultimately, it's another example of where we need a way to define short-circuiting semantics in Perl 6. | 20:36 | ||
TimToady | List of Thunk? | 20:37 | |
jnthn | pmichaud: Well, we could maybe implement macros ;-) | ||
pmichaud | jnthn: even if we say "do it as macros", I've yet to see a complete definition. | ||
same for List of Thunk. | |||
TimToady | LoT is the macro on which other can be defined | 20:38 | |
*others | |||
pmichaud | pmichaud@kiwi:~/specs$ ack Thunk | ||
pmichaud@kiwi:~/specs$ | |||
:-( | |||
benabik | Short-circuiting xor? | 20:40 | |
pmichaud | benabik: short-circuit anything, tbh | ||
TimToady | benabik: with one() semantics, not with parity semantics | 20:41 | |
pmichaud | how does a Perl 6 programmer define a short-circuiting operator | ||
? | |||
20:44
sshc_ joined
20:46
sshc left
|
|||
[Coke] | I can write up some javascript to allow you to collapse sections on the summary, if that's desirable. | 20:48 | |
(from phasers) | |||
20:51
mkramer joined,
mkramer left
|
|||
sorear | is xor actually useful? | 20:59 | |
short-circuiting | 21:00 | ||
pmichaud | Yes. | ||
I don't have the use case in mind right now, but I have run into times where I wanted to short-circuit upon proving that more than one thing was true. | 21:01 | ||
masak | oh, sure it's useful. | 21:07 | |
say you're wanting to know whether a sudoku solution is unique. | |||
hm, maybe not a perfect example. | 21:08 | ||
but it involves halting at two because that indicates failure. | |||
21:14
ggoebel left
|
|||
sorear chooses &CORE::none as a sacrifice for CORE binding tests | 21:15 | ||
masak | 'night, #perl6 | 21:16 | |
21:16
masak left
21:20
ggoebel joined,
Vlavv_ left
|
|||
[Coke] | (how to write short circuit) can functions take code refs as args? | 21:21 | |
dalek | ast: 878cf06 | sorear++ | S02-names/pseudo.t: [S02-names/pseudo.t] Tests for CORE |
21:22 | |
sorear | [Coke]: yes | 21:24 | |
[Coke]: but you don't get the nice syntax that way | |||
{...} ^^ {...} ^^ {...} vs. ... ^^ ... ^^ ... | |||
21:25
sshc_ is now known as sshc
21:33
Vlavv_ joined
|
|||
[Coke] | sorear: yup. one thing at a time. | 21:34 | |
21:34
kaare_ left
21:44
Psyche^ joined
21:46
Patterner left,
Psyche^ is now known as Patterner
|
|||
diakopter | moritz: you still around | 21:49 | |
21:51
MayDaniel left
22:02
colorspace left
22:12
felipe left
22:14
impious left,
impious joined
22:17
drbean joined
22:23
am0c joined
22:31
Kivutarrr left
22:35
felipe joined
|
|||
felher | jnthn++ for a-hint-of-meta-programming. | 22:40 | |
sorear | diakopter: ping | 22:49 | |
diakopter: now that I'm writing original test files, I think I need to know how the smartlinker works | |||
22:59
Reaganomicon left
23:00
Reaganomicon joined
23:01
Vlavv_ left
23:02
Vlavv joined
|
|||
jnthn | night, #perl6 | 23:04 | |
TimToady | o/ | ||
23:06
Reaganomicon left
23:07
Reaganomicon joined
23:09
wamba left
23:15
colorspace joined
23:21
bitpart joined
23:26
Su-Shee left,
nbrown left,
nbrown joined
|
|||
donri | so, who will implement perl6 on pypy | 23:29 | |
get to work people | |||
TimToady | got a mirror? | ||
donri | complete the original parrot joke \o/ | ||
TimToady: sorry? | 23:30 | ||
TimToady | I thought you were talking to yourself. :) | ||
the first stage of enlightenment is when you discover that "someone" is "me" | 23:31 | ||
donri | :) i was joking around | ||
dalek | ast: cdbf121 | sorear++ | S02-names/pseudo.t: [S02-names/pseudo.t] add GLOBAL, PROCESS, DYNAMIC |
||
donri | hey are you subtly sneaking in references to an MJ song? | 23:32 | |
sorear | me? | ||
donri | no, TimToady :) | 23:33 | |
"man in the mirror" | |||
23:34
jedai joined,
jedai_ left
23:36
jaldhar left,
jaldhar joined
23:41
bitpart left
23:50
ranott joined
|
|||
sorear | welcome, ranott | 23:56 |