pugscode.org/ | nopaste: sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, smop: etc.) || We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by TimToady on 25 January 2008.
meppl good night 00:36
s1n pugs: 1..^5 02:21
p6eval pugs: RESULT[(1, 2, 3, 4)]
s1n pugs: 5..1 02:30
p6eval pugs: RESULT[()]
s1n Auzon: what do i do with tests that should work but are currently failing? 02:31
mark them as rakudo skip tests? 02:32
SamB s1n: why would you want to do that? 02:33
s1n SamB: do what, mark them rakudo skip? the test is currently in spectest_regression.dat, so i assumed we didn't want anything in those tests failing 02:34
SamB oh, sure, I guess it doesn't qualify as a regression if it never worked in rakudo... 02:38
s1n SamB: are you suggesting it should be skipped then? 02:39
SamB dunno 02:41
s1n pugs: 'd'..'a' 02:48
p6eval pugs: RESULT[()]
s1n pugs 'a'..'d'
pugs: 'a'..'d'
p6eval pugs: RESULT[("a", "b", "c", "d")]
s1n pugs: 1..1 02:51
p6eval pugs: RESULT[(1,)]
s1n if a spectest is failing but shouldn't be, and it's in the spectest_regression.dat, should it be marked as SKIP? 02:59
bacek pugs: say 5..1; 03:22
p6eval pugs: OUTPUT[␤]
s1n see
pugs: 'a'..'d'
p6eval pugs: RESULT[("a", "b", "c", "d")]
s1n pugs: 'd'..'a'
p6eval pugs: RESULT[()]
s1n it's a fail, but probably shouldn't be
bacek rakudo: 'a'..'d' 03:23
p6eval rakudo 29575: RESULT["a".."d"]
bacek rakudo: 'd'..'a'
p6eval rakudo 29575: RESULT["d".."a"]
bacek rakudo: ('a'..'d').WHAT
p6eval rakudo 29575: OUTPUT[Null PMC access in get_bool()␤current instr.: 'parrot;Range;true' pc 4722 (src/gen_builtins.pir:3203)␤]
s1n rakudo: 'd'^..'a'
p6eval rakudo 29575: RESULT["d"^.."a"]
bacek rakudo: say ('a'..'d').WHAT
p6eval rakudo 29575: OUTPUT[Range␤]
s1n hmm, lemme check my tests again 03:24
bacek s1n: rakudo's output looks sane for me
s1n rakudo: 1..1
TimToady pugs doesn't implement Range objects yet
p6eval rakudo 29575: RESULT[1..1]
s1n rakudo (1..1).WHAT 03:25
TimToady: there's some partial work there, i went through the tests yesterday, i think there were 64 passing with a handful being fudged 03:26
rakudo: (1..1).WHAT
p6eval rakudo 29575: OUTPUT[Null PMC access in get_bool()␤current instr.: 'parrot;Range;true' pc 4722 (src/gen_builtins.pir:3203)␤]
bacek rakudo: say (1..1).WHAT
p6eval rakudo 29575: OUTPUT[Range␤]
bacek rakudo: say ~('a'..'d') 03:27
p6eval rakudo 29575: OUTPUT[a b c d␤]
bacek rakudo: say ('a'..'d')
p6eval rakudo 29575: OUTPUT[abcd␤]
s1n rakudo: say ~('d'..'a')
p6eval rakudo 29575: OUTPUT[␤]
s1n hmmm
rakudo say ~(5..1)
damnit
bacek s1n: stringified empty list.
s1n rakudo: say ~(5..1)
p6eval rakudo 29575: OUTPUT[␤]
s1n bacek: wouldn't an empty list be wrong in this case? 03:28
bacek no. Why?
s1n so you can't create decreasing ranges? 03:29
bacek rakudo: say reverse(1..5)
p6eval rakudo 29575: OUTPUT[54321␤]
s1n yeah but if i can do increasing ranges, why can't i do increasing ranges without using reverse?
err decreasing ranges w/o reverse
bacek s1n: just because you can't.
s1n heh
bacek Range is increasing only. 03:30
s1n monotonically increasing ranges only?
is that in the spec?
hmm, i never tried that in perl5 but it does that in perl5, if it's in the spec to keep it as-is, then that's fine 03:31
bacek s1n: perl5 doesn't have 'decresing ranges'... 03:33
Probably S02 should be clarified about Ranges. 03:35
s1n yeah, i noticed 03:36
how about i mark them as skip and unspecced
i don't really see anything in the spec that clarifies this 03:37
bacek s1n: sounds good for me.
s1n bacek: okay 03:38
s1n rakudo: say ~(1..1) 03:48
p6eval rakudo 29575: OUTPUT[1␤]
s1n moritz_: should unspecced tests be fudged? i talked it over with Auzon and he said go ahead and unfudge them 03:52
moritz_: i'm adding a few more things that test .perl so if they should be fudged, let me know
moritz_: they pass, but if they're supposed to be fudged, that's fine (i.e. (1..5).perl acually gives '1..5') 03:53
bacek rakudo: say (1..5).perl 03:58
p6eval rakudo 29575: OUTPUT[1..5␤]
bacek rakudo: say (1..'a').perl
p6eval rakudo 29575: OUTPUT[1.."a"␤]
bacek rakudo: say (1..'a')
p6eval rakudo 29575: OUTPUT[␤]
bacek pugs: say (1..'a') 03:59
p6eval pugs: OUTPUT[␤]
Auzon s1n: If it's a parsefail, mark it as skip. But if it parses and gives the wrong result, 'todo' is the proper one 04:03
Some parsefails might require some more creativity if fudge doesn't remove the correct line. This happens if the parsefail is on the line above the test and fudge doesn't get both lines. 04:04
The solution here is to skip the test and use something like #?rakudo emit #
TimToady sigh, it *is* specced... see S03:2641 04:17
ingy hola 05:22
TimToady chirps like crickets 05:25
TimToady heh, STD found a bug in t/spec/S02-whitespace_and_comments/unspace.t 05:34
pugs_svn r21369 | lwall++ | [STD] now handles @foo non-interpolation 05:39
r21369 | lwall++ | [unspace.t] accidentally tried to use #() comments at beginning of line
bacek pugs: say (1|2|3) < 2; 06:04
p6eval pugs: OUTPUT[any(VBool False,VBool True)␤]
bacek pugs: say (1&2&3) < 2; 06:05
p6eval pugs: OUTPUT[all(VBool False,VBool True)␤]
bacek hmm..
bacek pugs: say (1&2&3) < 5; 06:11
p6eval pugs: OUTPUT[all(VBool True)␤]
pmurias wouldn't it be possible to just have the parser skip things it doesn't understand rather than fudging parsefail? 06:47
moritz_ pmurias: bad idea, I think 06:49
I can't see how it could reliably resume after an unknown construct
plus, sometimes the test files are wrong - it's nice to get a syntax error then
pmurias if you add todo markers, adding parse failure markers is similiar i guess 06:52
moritz_ I can't really imagine how that could work 06:53
pmurias skip a line and try again 06:55
and the statement level
moritz_ so you basically want to merge fudge and the grammar 06:56
pmurias moritz_: i would to it for STD.pm, but it tends to parse things 06:59
s/to/do 07:00
moritz_ well, for the tests you'd have to do a bit more, for example note the number of skipped tests 07:01
so you have to put it into the AST somehow as well
I don't think it's worth the trouble
pmurias moritz_: they would be failed tests really 07:04
moritz_ and how could you skip/todo them?
pmurias with fudge ;) 07:05
moritz_ ;-)
pmurias moritz_: do you know what the general test numbering policy is? 07:10
moritz_ what do you mean?
pmurias should the test numbers in a test suit reflect the order of test creation, the order how they depend on each other or something else? 07:12
moritz_ I generally don't number my tests, except the very basic ones to run first 07:13
smop seems to number in order of creation 07:14
pugs_svn r21370 | lwall++ | [STD] handle \@foo and other fiddly issues
pmurias and how should i do test removal?, leave gaps 07:15
moritz_ I'd leave the gaps, but I wouldn't have numbered them in the first place ;-) 07:16
pugs_svn r21371 | lwall++ | [STD] handle Q forms 07:35
r21371 | lwall++ | [quoting.t] change q:q and q:qq to Q:q and Q:qq
pmurias @tell where should i put the root namespace creation ruoso and destruction, as SMOP_DISPATCH and SMOP_RELEASE take an interpreter as a parameter 07:45
lambdabot Consider it noted.
moritz_ pmurias: wrong target person ;-) 07:47
rakudo_svn r29576 | moritz++ | [rakudo] added S04-statements/do.t to spectest_regression, Auzon++ 07:59
r29576 | moritz++ | +14 pass, +9 todo/skip tests
pmurias @tell ruoso where should i put the root namespace creation ruoso and destruction, as SMOP_DISPATCH and SMOP_RELEASE take an interpreter as a parameter 08:06
lambdabot Consider it noted.
masak speaking of cascaded subscripts, will we be seeing any compile-time checks for array index that are out of bounds in Perl 6? 08:10
moritz_ I don't think it'll be specced to happen at compile time
masak but theoretically it could, right? 08:11
I mean, some of the checks, constants and stuff
moritz_ partially, yes
masak my @a[10]; say @a[15] # BAM
moritz_ there are so many checks that could actually made at compile time... I think we won't see very much of this in an initial release, but the compiler will improve for quite some time after the release 08:12
like compile-time checking for read-only variables
masak that's fine by me.
just wondering if it was on the table at all
by me, if it can be done at compile time, it should 08:13
but I realize it might not be prio before christmas
moritz_ I agree, "fail early" is important
just like "use strict;"
perl5 doesn't do some checks at compile time because the code might not be reachable 08:15
masak ACK
moritz_ perl5.8.8 -ce ' if (0) { 1/ 0}' 08:16
Illegal division by zero at -e line 1.
perl5.10.0 -ce ' if (0) { 1/ 0}'
-e syntax OK
moritz_ I haven't made up my mind yet if that's a good thing or not 08:17
I mean in the case of literal constants it's not a good thing 08:18
but it allows you to write stuff like 'our $debug = 0; ... if ($debug) { my $ratio = 1 / $debug; ... }
pmurias masak: the problem with such checks is that there would be false positives 08:20
with things like eval which can changed everything
pmurias Perl 6 offers much more dynamism by default than healthy/nessesary but a pragma could be used to force it to compile time 08:26
pmurias ruoso: hi 12:12
ruoso: where should namespace creation/destruction live? 12:14
i can't put it in the init/destroy sequence as it needs a interpreter 12:16
pugs_svn r21372 | jnthn++ | [spectest] Tests for anonymous classes. 12:26
rakudo_svn r29580 | jonathan++ | [rakudo] Implement anonymous classes. 12:27
masak TimToady: can there be anon grammars? 12:38
pmurias masak: why not? 12:41
masak pmurias: I also don't see why not, but the spec is silent on that point
same with modules, but in that case my intuition says there shouldn't be anon modules
also, this is not a case where spec-doesn't-say-so-same-as-p5 applies 12:42
pmichaud why shouldn't we have anonymous modules?
masak I don't know... because modules are containers, and if you can't refer to the container by name, it's pretty useless? 12:43
I might be wildly wrong, though
pmurias masak: they would parse at least if it weren't for a bug in STD/gimme5 12:44
masak pmurias: could one imagine a use case for them? 12:45
pmurias masak: for anon grammars?
masak modules
pmurias mixing them in
masak hm 12:46
pmurias mixing them in refered to grammars 12:47
masak: you can use anon modules the same as normal ones
i guess
masak but you cannot refer to them
or can you?
pmurias if you have them in a scalar, why not?
masak ah 12:48
right.
so anon grammars/modules are ok, then
pmurias ruoso: should the root namespace be global or per interpreter? 13:01
Arathorn hi all - don't suppose anyone knows if anyone's already expressed the RFC822 address syntax as perl6 rules? 13:13
pmurias Arathorn: hi, want to try? 13:18
Arathorn hehe 13:20
guess I could - was more wondering whether there was prior art
ruoso pmurias, we could start a prelude interpreter 13:21
lambdabot ruoso: You have 2 new messages. '/msg lambdabot @messages' to read them.
ruoso pmurias, the global namespace needs to be present as C symbol... for boostrap reasons 13:23
pmurias prelude interpreter - explain please 13:24
ruoso: i can create the global namespace withough a interpreter, but i need one to destroy it 13:25
* withought
ruoso the point is that at some point, we are going to need a interpreter available to continue the boostrap 13:27
and even to start another intepreter, eventually
so starting a interpreter would be part of the prelude, the same way the global namespace would
pmurias so there will be a global interpreter
?
s/global/main 13:28
ruoso not really main in the sense that everything would depend on it...
but that it would be avialable for everyone to use it
I mena...
mean
native types doesn't need an interpreter... 13:29
but initializing Object will require
that's where the "prelude intepreter" comes in... it can be used by anyone that needs some interpreter
but it doesn't mean that it will be the interpreter used for everything.... 13:30
one could switch interpreters and probably no one would notice
but we're probably going to stick with it for now, 13:31
at least untill the bootstrap is finished...
ruoso pmurias, does it make sense now? 13:32
pmurias yes 13:35
ruoso the point is... after loading the prelude, the "prelude interpreter" could be used, or some other interpreter could be used instead... 13:36
pmurias wouldn't the "bootstrap interpreter" be a better name? 13:37
ruoso yeah... probably... ;) 13:38
ruoso not really good at naming things...
pmurias in what variable should the stored, and where should it be created? 13:40
ruoso SMOP__GlobalNamespace? 13:49
smop_s1p.h? 13:50
and then it would be created during smop_init()
and destroyed during smop_destr()
rakudo_svn r29582 | jonathan++ | [rakudo] role_name goes away, since we want to parse a signature in a role definition, and an expression when it's used with does. This should somewhat simplify things when we implement parametric roles. Note role_name is also gone in STD.pm (though getting to what it has now 13:52
..would take a larger refactor).
pmurias ruoso: i'll implement it 13:57
ruoso pmurias++ cool
ruoso from one workplace to another & 13:59
rakudo_svn r29585 | jonathan++ | [rakudo] Implement .^ (call on metaclass) syntax, with passing the invocant in as a first argument to the metaclass method, as specified in S12. 14:31
masak perl6: my $var = 0; nothing while $var++ < 3; say "et voilà!" 15:37
p6eval elf 21372: OUTPUT[Undefined subroutine &GLOBAL::nothing called at (eval 119) line 5.␤ at ./elf_f line 3861␤]
..pugs: OUTPUT[et voilà!␤]
..rakudo 29585: OUTPUT[Could not find non-existent sub while␤current instr.: '_block11' pc 71 (EVAL_13:26)␤]
TimToady kinda sad that rakudo doesn't tell you the name of the missing sub... 15:39
also kinda sad that pugs doesn't fail :)
masak TimToady: rakudo does tell me the name: 'while' 15:40
only it's not supposed to be a missing sub
rakudo_svn r29586 | jonathan++ | [rakudo] Move WHENCE related things that were in P6Object.pir into the Rakudo source tree (Object.pir). 15:41
masak and I don't think it's sad that Pugs doesn't fail :)
TimToady er, you want non-existent subs to silently just do nothing? 15:44
pmichaud rakudo is thinking that 'while' is an undeclared sub 15:46
and it's trying to evaluate 'while' so that it can pass the result to 'nothing'
(which is also an undeclared sub, but rakudo hasn't figured that out yet.) 15:47
TimToady nothing should be taken as a listop, but "while" should terminate its list 15:48
masak pmichaud: but 'nothing' is declared, I found it in the rakudo source
TimToady: I just assumed that Pugs eval-ed it correctly 15:49
pmichaud TimToady: I agree that rakudo probably isn't parsing 'while' correctly.
masak: nothing is declared in the rakudo source? where? 15:50
(I don't disagree -- I'm just unaware of it)
masak pmichaud: src/builtins/control.pir
TimToady there's nothing in the spec, and who's on first
masak line 91
TimToady: :) 15:51
use/mention
pmichaud ah, nothing is in S29. It probably needs to be defined as a named 0-ary, perhaps?
TimToady interesting--thanks for nothing... 15:52
masak pmichaud: if you point me to something else that is defined as a named 0-ary, I can try to fix it
TimToady I wonder who put it there
masak ...and send a patch
pmichaud masak: rand
masak TimToady: probably nobody :)
pmichaud: oki, thanks
pmichaud masak: it's in grammar.pg, under "named_0ary"
masak goodie
pmichaud we probably need to revise S29 to use the correct syntax for the named 0-aries 15:53
TimToady and I'm not entirely sure I believe in "nothing" yet 15:54
[particle] consult satre
TimToady he doesn't exist
[particle] perhaps godot will drop by 15:55
TimToady I think it has something to do with free will...
[particle] will is free to leave anytime. heck, sanity has already left. 15:56
pmichaud TimToady: in "listop while 1;" --- what in STD.pm causes 'while' to not be treated as a post-declared listop 15:57
?
TimToady well, if correctly coded, the fact that we have terminator:sym<while> defined 16:00
but it's possible the listop parser isn't checking correctly since we took the terminator check out of expect_term
pmichaud right 16:01
that's what I was just following
I get listop -> arglist -> EXPR -> expect_term -> noun -> term:name (or something like that)
I could be missing a step that takes care of it, though. 16:02
TimToady it needs a <!stdstopper> before parsing arglist I think
pmichaud ah, that would work nicely.
TimToady well, probably needs to go into arglist 16:03
pmichaud even better.
TimToady after .ws
pugs_svn r21373 | lwall++ | [STD] parse nothing while correctly 16:04
TimToady now to test it :)
rakudo_svn r29588 | jonathan++ | [rakudo] Make multi-methods vaguely work (in as far as subs work, anyway). 16:05
TimToady well, STD still parses itself 16:06
rakudo_svn r29589 | jonathan++ | [rakudo] Fix nothing. Patch courtesy of Carl Masak [email@hidden.address] masak++ 16:12
rakudo_svn r29590 | jonathan++ | [rakudo] [p6object] Make isa and can in the metaclass take the object to test as a first parameter, as specified in recent-ish S12 updates. 16:51
pugs_svn r21374 | lwall++ | [STD] restore missing precedence limiter in arglist 16:53
pmurias doesn't do {} fill the role of &nothing? 16:56
TimToady sure, so does ()
so does 0, unless you get a "useless use" warning...
[particle] what about *;
TimToady that would work, but kinda implies "do whatever", which is more like anything than nothing 16:57
pmurias so why do we need nothing?
TimToady we don't
pmurias should i remove it then? ;)
TimToady it's good for making much ado about :) 16:58
who put it there in the first place?
[particle] nobody
or was it not me?
TimToady mugwump, it would appear 16:59
[particle] the villain from down under 17:00
pmurias TimToady: based on svn blame? 17:01
svn log -r 3270 Functions.pod
TimToady pmurias: *nod*
pmurias Hand-over version from Rod Adams
TimToady well, I think we probably have lots of ways to indicate a noop without it 17:02
and likely * will turn out to be the canonical way, though maybe not 17:03
* still counts as something outside of a void context
so maybe () is better
particularly in a list context that thinks it's collecting all the iteration results 17:04
pmurias 1 while something(); is the perl5 idiom isn't it?
TimToady which I always though should be 0 while something() instead...
[particle] i really want to see foo while 1 replaced by foo while true in perl 6 code
TimToady but 0 is also something in list context, and () isn't
[particle] (magic numbers)--
is false something in list context? 17:05
TimToady yes, any scalar value will be something in list context
TimToady "while true" isn't going to fly 17:07
true is a unary 17:08
rhr is 'foo loop' allowed? 17:09
TimToady no
Exodist I am about to write some tests for subroutines, I want to verify the following syntax:
TimToady rhr: logically it would make sense, but the use cases are rare enough that it would leave lots of people scratching their heads 17:10
Exodist sub hi { say "hi" }
rhr nod
Exodist &hi.wrap({ callsame; say "there" })
rakudo_svn r29591 | jonathan++ | [rakudo] Implement .WHERE.
TimToady perl6: say *.true 17:11
p6eval elf 21374: OUTPUT[Undefined subroutine &GLOBAL::whatever called at (eval 119) line 3.␤ at ./elf_f line 3861␤]
..pugs: OUTPUT[1␤]
..rakudo 29590: OUTPUT[Statement not terminated properly at line 1, near ".true"␤current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82)␤]
TimToady pugs has it right there, I think
so "while *" works 17:12
and indicates similar semantics to 'xx *'
[particle] while * and while () instead of 1 and 0, then 17:13
[particle] it's not any prettier 17:13
TimToady while 0 isn't terribly useful anyway
[particle] it's used in debugging 17:14
TimToady how is it different from if 0
and why not use for ()
[particle] it's not, but if you want to remove a while statement instead of an if statement...
while (0) { #foo < bar) { 17:15
TimToady s/#/#(
[particle] / 17:16
TimToady :P
Exodist perl6: sub hi { say "hi" }; &hi.wrap({ callsame; say "there" }); hi 17:18
p6eval elf 21374: OUTPUT[/home/evalenv/pugs/misc/STD_red/match.rb:141:in `block in to_dump0': undefined method `to_dump0' for true:TrueClass (NoMethodError)␤ from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `each'␤ from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `map'␤ from
../home/evalenv/pugs/mi...
..pugs: OUTPUT[*** No such method in class Sub: "&wrap"␤ at /tmp/VM8YvJ7Dbq line 1, column 22-57␤]
..rakudo 29591: OUTPUT[Method 'wrap' not found for invocant of class 'Closure'␤current instr.: '_block11' pc 27 (EVAL_13:16)␤]
Exodist now, my question is did I do it wrong, or is it not yet implimented? 17:19
TimToady looks okay to me 17:20
Exodist ty.
TimToady but what do I know... 17:21
pugs_svn r21375 | lwall++ | [Functions.pod] nothing isn't sacred, just use () which is less than nothing 17:29
pugs_svn r21376 | lwall++ | [nothing.t] nothing here, move along 17:35
Exodist perl6: sub hi { "Hi" }; ok try { &hi.wrap({ callsame _ " there" }) }; is( hi, "Hi there" ) 17:58
p6eval elf 21376: OUTPUT[/home/evalenv/pugs/misc/STD_red/match.rb:141:in `block in to_dump0': undefined method `to_dump0' for true:TrueClass (NoMethodError)␤ from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `each'␤ from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `map'␤ from
../home/evalenv/pugs/mi...
..pugs: OUTPUT[*** No such subroutine: "&ok"␤ at /tmp/eWgbvaRMXS line 1, column 18-62␤]
..rakudo 29591: OUTPUT[Could not find non-existent sub ok␤current instr.: '_block11' pc 40 (EVAL_13:21)␤]
Exodist perl6: sub hi { "Hi" }; try { &hi.wrap({ callsame _ " there" }) }; say $@; hi; 17:59
p6eval elf 21376: OUTPUT[Parse error in: /tmp/jRDtK8SSv8␤panic at line 1 column 60 (pos 60): Can't understand next input--giving up␤WHERE: p({ callsame _ " there" }) }; say $@; hi;␤WHERE: /\<-- HERE␤ STD_red/prelude.rb:99:in `panic'␤ STD_red/std.rb:76:in
..`scan_unitstopper'␤...
..pugs: OUTPUT[*** ␤ Unexpected "@;"␤ expecting "::"␤ at /tmp/GbeCDqe8Lf line 1, column 66␤]
..rakudo 29591: OUTPUT[Statement not terminated properly at line 1, near "$@; hi;"␤current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82)␤]
Exodist perl6: sub hi { "Hi" }; try { &hi.wrap({ callsame _ " there" }) }; hi;
p6eval elf 21376: OUTPUT[/home/evalenv/pugs/misc/STD_red/match.rb:141:in `block in to_dump0': undefined method `to_dump0' for true:TrueClass (NoMethodError)␤ from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `each'␤ from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `map'␤ from
../home/evalenv/pugs/mi...
..pugs: RESULT["Hi"]
..rakudo 29591: RESULT["Hi"]
Exodist perl6: say "hi" ~ " there"; 18:03
p6eval elf 21376: OUTPUT[hi there␤]
..pugs: OUTPUT[hi there␤]
..rakudo 29591: OUTPUT[hi there␤]
Exodist perl6: say "hi" _ " there"; 18:04
p6eval elf 21376: OUTPUT[Parse error in: /tmp/mn9q5hjWhA␤panic at line 1 column 0 (pos 0): Can't understand next input--giving up␤WHERE: say "hi" _ " there";␤WHERE:/\<-- HERE␤ STD_red/prelude.rb:99:in `panic'␤ STD_red/std.rb:76:in `scan_unitstopper'␤ STD_red/std.rb:224:in `comp_unit'␤
..STD_red/std.rb:...
..pugs: OUTPUT[*** ␤ Unexpected "_"␤ expecting operator, ":" or ","␤ at /tmp/DrqHZnUtPX line 1, column 10␤]
..rakudo 29591: OUTPUT[Statement not terminated properly at line 1, near "_ \" there\""␤current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82)␤]
TimToady wow, ancient history... 18:04
Exodist is there a way to use the eval there w/o flooding the channel?
TimToady maybe with /mst
er, /msg
Exodist TimToady: Yeah, I am just starting on perl 6, today is my first time tryint o write any. 18:05
TimToady cool. do you have a pugs commit bit yet?
Exodist yes, I got it last week.
My company is giving me 4 hours a week to work on perl6.
TimToady sugoi 18:06
Exodist I plan to write tests since my C is probably not up to working on rakudo.
perl is my lang of choice for a few years now.
TimToady how's your Haskell ;)
Exodist nonexistant.
:-/
TimToady Haskell is easy to learn--I've done it several times now 18:07
I just have a personality conflict with its compiler...
Exodist I had a hard time getting the compiler installed, on gentoo (my distro of choice) or ubuntu (work distro) 18:08
TimToady anyway, we certainly need more tests
TimToady I got the cabal version installed on ubuntu this week 18:08
Exodist I spent 2 weeks trying to get pugs going before giving up and making rakudo work in an hour.
*2 weeks off and on.
TimToady I had to make one tweak to get zlib to use the provided version rather than the system version, and then cabal works okay 18:09
Exodist hmm, I may give it another try at some point here. but for now I am trying to figure out how these spec tests work... all my attempts at any kind of eval or try are giving me errors about unterminated lines. 18:10
but others I did not write are giving me the same... is this a rakudo thing?
TimToady that tends to be the default error message
Exodist it seems that it does not finish parsing the line before bailing. 18:11
t/spec/S06-advanced_subroutine_features/wrapping.t....Statement not terminated properly at line 9, near "try({ &hi."
TimToady the way the parser works, if something fails but doesn't give an immediate error, it backs off and then stalls out in the middle of the statement, yielding that error
Exodist 9 try({ &hi.wrap({ callsame ~ " there" }) });
TimToady STD has the same difficulty
Exodist hmm.
TimToady with STD I look at the log to see what the high-water mark was, but we'll have to get better control of reporting what was expected and not found 18:12
Exodist 'the log'?
TimToady when you parse with STD.pm you can get it to spit out a debugging log, but it's about 10 times slower that way 18:13
Exodist hmm, is this documented somewhere? I could use a good doc on test procedures and such. 18:14
Exodist feels like a newb.
TimToady STD.pm is independent of rakudo
TimToady (so far) 18:14
except that rakudo's grammar is converging on STD, more or less
so don't worry about that part, if you're concentrating on parrot 18:15
Exodist ok.
TimToady I'll need to think about how to get better errors in STD, and then that will probably get into rakudo at some point 18:16
Exodist perl6: sub hi { "Hi" }; try{ &hi.wrap({ callsame ~ " there" }) }; 18:18
p6eval elf 21376: OUTPUT[/home/evalenv/pugs/misc/STD_red/match.rb:141:in `block in to_dump0': undefined method `to_dump0' for true:TrueClass (NoMethodError)␤ from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `each'␤ from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `map'␤ from
../home/evalenv/pugs/mi...
..pugs: RESULT[undef]
..rakudo 29591: RESULT[Null PMC access in find_method()␤current instr.: '_block11' pc 25 (EVAL_13:12)␤]
Exodist perl6: sub hi { "Hi" }; try{ &hi.wrap({ callsame ~ " there" }) }; hi;
p6eval elf 21376: OUTPUT[/home/evalenv/pugs/misc/STD_red/match.rb:141:in `block in to_dump0': undefined method `to_dump0' for true:TrueClass (NoMethodError)␤ from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `each'␤ from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `map'␤ from
../home/evalenv/pugs/mi...
..pugs: RESULT["Hi"]
..rakudo 29591: RESULT["Hi"]
Exodist hits himself hard... he forgot a semiclon on the previous line... been a long time since I had this much trouble from something that simple. 18:21
it also explains why it worked in here...
pmurias Exodist: re rakudo, C-fu is not really a topmost priority when working on rakudo 18:30
Exodist pmurias: I am listening.
pmurias a high-pir tolerance and an ability to read the synopsis should be enough 18:31
Exodist high-pir?
pmurias a high pir tolerance, sorry ;)
Exodist pir?
pmurias pir is parrot assembler
Exodist pulls up google+wikipedia
ah, ok. 18:32
hmm, I will read this tutorial and see if I can get into Rakudo coding. 18:33
oh, this tutorial: www.perlfoundation.org/parrot/index...al_and_faq 18:34
lambdabot Title: PIR Tutorial and FAQ / Parrot, tinyurl.com/5mhdqv
Exodist unless you have a better reference.
pmurias i'm not a parrot guy
i hate pir ;) 18:35
Exodist so what do you normally work on? 18:36
pmurias smop now
it's a sort of parrot alternative 18:37
Exodist reading this: www.perlfoundation.org/perl6/index.cgi?smop 18:38
lambdabot Title: SMOP / Perl 6
pmurias and did some work on elf previously which is a partialy bootstraped perl6 implementation
Exodist hmm, maybe I should ask this: "I am a perl guy, my other languages have been neglected greatly, and my skillsets in them were probably not all that high to begin with. I want to work on and contribute to perl 6, what is the best place for me?" 18:40
pmurias either rakudo or elf
Exodist have a link for 'elf'? 18:42
pmurias misc/elf in the pugs repo
you could hack on elf only coding in perl5 and perl6, but rakudo has more monumentum 18:44
Exodist is reading the elf README... scary. 18:46
pmurias a bit skimpy 18:47
Exodist: re scary, an questions? 18:48
Exodist no, I just had a hard tiem reading it for some reason, probably long week + no sleep + info overload + full moon. 18:49
Tene Exodist: probably rakudo. 18:51
Exodist yeah, I am reading the PIR tutorial again, I am probably gonna stick to tests for a bit, but I took an assembly class forever ago, I might be able to dive in again. 18:52
pmurias pir isn't really a traditional assembler, it dosn't have all the memory manipulation 18:53
Exodist thats ok, I never got into assembly enough to have anything in memory to get int he way. 18:55
Tene Exodist: you should be able to pick it up pretty quick by looking at a few examples. It's a pretty simple language. 18:56
pmurias s/simple/silly/ ;)
[particle] it's a low-class language, for sure 18:57
look in examples/tutorial/
pmurias i prefer it to sm0p however 18:58
pmurias but sm0p is a DSL only 19:02
Exodist thanks for all the suggestions guys. 19:07
pugs_svn r21377 | pmurias++ | [smop] 19:14
r21377 | pmurias++ | root namespace
r21377 | pmurias++ | global interpreter (causes horrible leakage, when i try to destroy it spits out segfaults)
r21377 | pmurias++ | some work on p6opauque
pmurias ruoso: i get a segfault when it RELEASE the global interpreter 19:15
ruoso pmurias, /me checking 19:20
pmurias thanks 19:21
ruoso pmurias, test/12 is still valid? 19:26
pmurias, the same for test/14 19:27
it seems you removed the .sm0p, but kept the test...
pmurias i move tests 12 and 14 to misc 19:28
ruoso alright...
I removed the compiled tests 12 and 14 and have no more segfaults
they were using the old version of p6opaque
(but that was there only by a missing make clean on my part) 19:29
pmurias ruoso: i commented the segfault causing part
in smop.c
sorry
ruoso oh... ok 19:30
pmurias as i considered memory leaks less serious 19:31
Exodist using Rakudo perl6, hwo would one run the tests verbosely? liek the -v flag for prove? 19:41
Tene easiest is just parrot perl6.pbc t/the/test.pl 19:43
ruoso pmurias, the main issue is that the global interpreter still holds a reference to the last frame at that time 19:46
pmurias looking 19:47
Exodist Tene: thank you. 19:47
pmurias ruoso: how can we fix it? 19:49
ruoso pmurias, I'm experimenting one thing
there's a shutdown sequence issue
there's something that depends on hash that is being held until after the hash RI is destroyed. 19:52
I think we need to make an extra boot phase 19:53
pmurias loads RIs and then setup objects 19:55
ruoso have an almost working version 19:56
pugs_svn r21378 | ruoso++ | [smop] define yet another boot phase in smop, one that can count on a interpreter... 19:58
ruoso pmurias, take a look now... 19:59
now there's a single s1p hash leaking
pmurias ruoso: looking/fixing 20:01
ruoso pmurias, I've just changed a bit the indentation in root_namespace.c
pugs_svn r21379 | ruoso++ | [smop] a little more indentation in root_namespace.c
ruoso pmurias, you should only RELEASE the object *after* using it... 20:02
you might get your object destroyed before you want to...
pmurias i can't RELEASE a brand new object? 20:03
pmurias (if i don't use it) 20:04
ruoso if you don't... yes...
ruoso referring to the RELEASE call on the top of the hash message 20:05
pmurias, btw... you're not using locks
pmurias oops 20:06
ruoso pmurias, is there anyone using the global namespace already? 20:07
pmurias a test 20:08
ruoso hmm
pmurias * a lame test
ruoso then it doesn't make sense for it to be leaking in every test
weid
wird
weird
pmurias ruoso: RELEASE's have to be before the loop?
ruoso gah
ruoso yes 20:08
pmurias it's released after
ruoso cool 20:09
that's it
pmurias how should the new destruction pass be names
* named
? 20:10
pugs_svn r21380 | ruoso++ | [smop] the interpreter loops through the rest of the continuations before finishing the GlobalInterpreter
ruoso I called it SMOP_BOOTSTRAP_INIT_SEQUENCE
they're defined in smop.c and smop_internal.
h
YAY! no more leaks 20:11
ruoso turning into a good plumber
pmurias ruoso++ 20:14
do you too see [bool] "has_next" is not implemented in bool.? 20:15
ruoso pmurias, yes... 20:17
there are some places setting a bool as the continuation...
we need a "empty continuation"
that simply returns false to "has_next"
it can be constant...
pmurias a continuation isa a Frame currently? 20:22
ruoso continuation isa anything... ;)
"Polymorphic Eval" 20:23
ruoso adding a trick to make goto false as goto nowhere...
pugs_svn r21381 | ruoso++ | [smop] goto(bool) means release the current continuation 20:24
pmurias ruoso: assuming we use our only runloop slime
ruoso pmurias, what do you mean? 20:25
wow... all tests passing, no warnings...
I haven't seen this outcome in "make test" for a long time ;) ;)
ruoso pmurias, how hard you think it would be to bring .^!how back to p6opaque? 20:28
pmurias ruoso: i meant what does SLIME use as it's continuations, Frames
ruoso yes... SLIME uses Frames
pmurias $obj.^!how = $foo;
ruoso but it should not assume the continuations to be frames...
pmurias, yes... 20:29
pmurias the assignment itself would be trivial
ruoso pmurias, so we can take back the metaclass delegation for method dispatch
see misc/p6opaque.sm0p:176 20:30
pugs_svn r21382 | pmurias++ | [smop] p6opaque.how 20:33
r21383 | ruoso++ | [smop] SMOP_REFERENCE how before returning 20:36
ruoso pmurias, have you seen how to use the locking?
it's simple as three functions in the API
pmurias reading... 20:36
ruoso smop_lowlevel_rdlock(value), smop_lowlevel_wrlock(value) and smop_lowlevel_unlock(value) 20:36
ruoso it's a simple interface to the pthread rwlock 20:37
pugs_svn r21384 | fglock++ | moved local tests to t/v6-pm/; added t/spec/, etc # 408 tests pass
ruoso knows STM is cooler, but is not that smart...
pmurias STM is more complicated for sure 20:39
pmurias fglock has revived v6.pm? 20:40
ruoso pmurias, you're creating both the metadata and instance for every p6opaque 20:42
you don't need to
you just need to create it as it is needed...
because instance values are not going to have metadata (usually)
as well as protoobjects are not going to have instance data... 20:43
pmurias, I've added a few items that were missing in p6opaque structure 20:44
pugs_svn r21385 | ruoso++ | [smop] completing p6opaque structure definition...
pmurias ruoso: wouldn't just sharing the metadata pointer be better for class based objects? 20:45
ruoso pmurias, maybe, but that's not what Perl 6 spec says... 20:46
pmurias got the precise quote? 20:47
ruoso all the HOW and WHAT thing... 20:48
if we make the metadata as HOW, we make prototype-based OO impossible with p6opaque
HOW is just one of the metadata items p6opaque hs 20:49
pmurias p6opaque is for class oo only
ruoso not really...
that's not up to p6opaque to define
p6opaque should support both 20:50
(and in fact, the current design in smop does)
pmurias re p6opaque is ..., maybe is misrembered it's lateish 20:51
pugs_svn r21386 | exodist++ | * Initial tests for function wrapping. 20:52
ruoso pmurias, actually I'm not sure the spec defines that...
pmurias, but I would be really sad on forcing only class-based OO in p6opaque
Exodist woohoo, my first commit to perl6 :-)
ruoso Exodist++
ruoso home &
ruoso 'll try to log in later... but he certainly need some beers...
pmurias ruoso: instanceof is an Array? 20:53
ruoso pmurias, nope...
it points to a direct protoobject
pmurias you have multiple of those in prototype-oo
otherwise it's just poor man's class based oo
like in javascript 20:54
ruoso pmurias, yes yes... and that's why you have isa and does
you can do it pure prototype
but when it's prototype by delegatoin
ruoso you can say that this object delegates entirely to *that* prototype 20:54
pmurias il think about it tommorow 20:55
ruoso have people waiting for him...
pmurias * i'll
ruoso later &
rakudo_svn r29594 | chromatic++ | [Rakudo] Fixed a POD error in Object. 21:11
pugs_svn r21387 | exodist++ | * Added temporization test on wrapping. 21:13
r21387 | exodist++ | * Added tests for unwrapping a sandwitched wrapper.
rakudo_svn r29598 | jonathan++ | [rakudo] Implement WHICH in object. We now need to override it in the various value types, and then we can implement ===. 21:59
pugs_svn r21388 | fglock++ | [v6.pm] fixed block interpolation in string 22:39
pugs_svn r21389 | putter++ | [misc/elfish/rx_on_re] No longer segfaults. 22:44
r21389 | putter++ | The bootstrap grammar for p5 re modifiers uses a (?{helper($^N)}),
r21389 | putter++ | which then called a split(). split() within regexps is a known
r21389 | putter++ | locus of corruption. As now. Thankful kudos to moritz_++ TimToady++.
mncharity I would have thought rx_on_re was (?{}) (??{}) free. Turned out the grammar for p5 regexps used a (?{}) helper sub. Which then lived dangerously with a split(). 22:46
lambdabot mncharity: You have 1 new message. '/msg lambdabot @messages' to read it.
mncharity Thanks all.
s1n moritz_: should I skip and/or not add any tests using .perl, even if they pass? 23:31
Auzon: same question for you
.perl isn't specced, but in many cases it works 23:32
s1n that is, this will pass: is (1..5).perl, '1..5', ".perl .."; 23:33