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.
00:00 jfredett left 00:02 pbuetow joined 00:03 meppl left 00:18 pbuetow left 00:21 Alias_ joined 00:34 eternaleye left 00:38 felipe left 00:46 PZt left 00:50 Khisanth left, Khisanth joined 00:51 PZt joined 00:54 zamanfou is now known as zamanf
pugs_svn r21356 | ruoso++ | [smop] $p6opaque.^!methods.push($method) actually calls $p6opaque.^!methods.register($identifier, $signature, $method) 00:56
s1n moritz_: where is the testfile actually executed by the harness? 01:00
that is, after it figures out which ones to run from the input file, figures out which ones need fudging, where does it actually run the individual .t files (plans) 01:01
bacek s1n: Makefile target spectest or spectest_regression 01:03
s1n baest: yeah, but where deep down in the harness code is that performed 01:04
the makefile will just call harness, but from there, where is the .t file actually executed (I'm assuming against languages/perl6/Test.pm) 01:06
bacek lib/Parrot/Test/Harness.pm in parrot dir 01:07
s1n bacek: aha, thanks 01:08
there's the call to runtests 01:09
bacek s1n: anyway, you probably don't need it. Just put S??/some-test.t into t/localtest.data and run 'make localtest'
(In rakudo dir)
01:19 jferrero left 01:37 dduncan left 01:43 ashleyb left 02:05 Limbic_Region left 02:08 agentzh left 02:18 cathyal joined 02:21 alanhaggai_ joined 02:24 felipe joined 02:25 alanhaggai_ is now known as alanhaggai 02:33 kanru left 02:41 fullermd joined, nipotan is now known as nipotaway 02:44 agentzh joined 02:50 wknight8111 left
s1n it seems i still have commitbit access but my authentication is failing, can someone reset my password? 03:03
03:06 kanru joined
Auzon s1n: I'm not sure how to reset passwords, but are you sure you put your name and password in correctly? (case matters and it bit me the first time) 03:08
s1n Auzon: yeah, i think i did anyways, i can't remember who set it up, but there's no "reset my password" feature 03:10
I tried logging on through the web interface and it's not taking anything
Auzon I don't see anywhere in the web interface for a reset password feature :-/ 03:12
s1n there's gotta be an admin in here that can do this...
bleh, anyone? i'd really like to start committing changes to the test suite 03:25
Auzon pmichaud or [particle] or another admin maybe? 03:26
s1n gaal: you're an admin as well, think you could help? 03:32
okay, well, it's getting late. any pugscode admins see this later, reset the username: s1n, email: [email@hidden.address] for me, i'd greatly appreciate it 03:39
Auzon see you, s1n.
s1n thanks Auzon
Auzon: by the way, now that I have gotten the hang of running the test suite, i'm just going to start going through it all, unskip the passing tests, and add missing tests, then i'll eventually start filling in the pieces later (PIR looks like it has a learning curve) 03:41
03:41 icwiener_ joined
Auzon Sounds great :) 03:41
Glad to have you helping.
s1n anything to move perl6 along :) 03:42
03:54 alester joined 03:57 icwiener left, icwiener_ is now known as icwiener 04:01 dduncan joined 04:23 alanhaggai_ joined
TimToady s1n: re-invite sent 04:23
04:24 alanhaggai left
Auzon What does a "StopIteration" mean in Rakudo? 04:31
I've never gotten that error message before :)
05:25 agentzh left, agentzh joined 05:53 Psyche^ joined 05:54 alester left 05:59 agentzh left, alanhaggai_ is now known as alanhaggai 06:04 agentzh joined 06:06 Patterner left, Psyche^ is now known as Patterner 06:13 xinming joined 06:18 ashizawa joined
pugs_svn r21357 | lwall++ | [STD] various tweaks suggested once upon a time by mncharity++ 06:24
06:26 xinming_ left
speckbot r14565 | larry++ | clarification suggested by Bob Rogers++ 06:30
moritz_ TimToady: any thoughts re www.nntp.perl.org/group/perl.perl6....29206.html ? 06:32
lambdabot Title: make POST blocks more usable - nntp.perl.org, tinyurl.com/68vers
moritz_ afk 06:33
TimToady I think I'd rather have the value come in as the topic, like with CATCH blocks, but it would presumably be a Capture, and we need to be careful not to have side effects on it en passant. 06:43
06:44 masak joined
moritz_ I don't really care how it's done, as long as it's somehow available in POST 06:44
06:48 justatheory left
speckbot r14566 | larry++ | suggestion from moritz++ that POST blocks be allowed to see the return value 06:57
moritz_ TimToady++
06:58 cathyal left
masak re that, will I also be able to do 'POST -> $retval { ... }' ? 07:09
moritz_ no
you could do that if it were a formal parameter to the block
masak I see. 07:10
it just seems to me that sometimes I want to name my return value, and right now I would have to do it with an explicit 'my $retval = $_;' at the top of the block 07:11
moritz_ me too, but I guess there are reasons 07:13
for example consider sub { return 2 * $^a; POST { # what is $^a here? }}
if the return value were a formal parameter of the POST block, $^a inside the block would bind to it, not to the outer $^a 07:14
which might be rather confusing, because a possibly present $^b would still refer to the one from the outer scope
masak you're right 07:16
moritz_ heads off to $uni
07:23 pmurias joined 07:26 Helios- left, Helios- joined, icwiener left
pmurias ruoso: how should the perl6 be embedded in sm0p files? 07:30
07:31 Helios- left 07:32 Helios- joined
pmurias and what is the perl6 version of $SMOP__SLIME__CurrentFrame.forget();$interpreter.goto(|$continuation);? 07:32
07:37 penk joined 07:38 pmurias left 07:39 pmurias joined 07:43 iblechbot joined 07:54 elmex joined 07:58 [particle] joined 08:41 barney joined 08:54 wknight8111 joined
pugs_svn r21358 | pmurias++ | [pixie] t/01-sanity/1-4 pass now 08:59
09:01 bacek left
pugs_svn r21359 | pmurias++ | [smop] 09:02
r21359 | pmurias++ | removed useless test
r21359 | pmurias++ | possible p6 version of 2 sm0p blocks in comments
09:15 meppl joined 09:16 rindolf joined
pmurias (vanishing source code)-- 09:20
ruoso pmurias, re perl6 embedded... it could be q:perl6 or something like that... 09:25
pmurias, we probably need different block types
one for CPS with no return value
other with return value
ruoso food & 09:26
09:39 hcchien left
pmurias ruoso: hi 09:40
09:46 jferrero joined 09:53 alanhaggai_ joined 09:58 Jedai joined 10:10 alanhaggai left 10:14 tuxdna joined 10:15 iblechbot left 10:18 chris2 joined
pmurias pugs: sub foo($foo|$bar) {say "hi"} 10:22
p6eval pugs: OUTPUT[*** ␤ Unexpected "|$"␤ expecting word character, "?", "!", trait, "=", default value, "-->" or ")"␤ at /tmp/YXr5t38ImR line 1, column 13␤]
pmurias is it possible to have a sub with multiple signatures? 10:24
10:25 wknight8111 left
ruoso off to work & 10:26
10:26 ruoso left
moritz_ pmurias: yes, see S06 10:28
10:30 pbuetow_ joined
moritz_ or was it S13? 10:30
10:32 dduncan left
moritz_ multi sub infix:<+> (Us $us, Them $them) | (Them $them, Us $us) { myadd($us,$them) } 10:32
10:40 PZt left 10:42 PZt joined 10:51 barney left 11:04 ruoso joined 11:13 wknight8111 joined 11:18 iblechbot joined 11:21 s1n left, s1n joined
pugs_svn r21360 | s1n++ | [pugs_s02] some tests are passing that were skipped, some being 11:21
r21360 | s1n++ | unspecced
moritz_ s1n: please don't remove "unspecced" fudging marks unless you understand why it's there, and have a good reason to remove it 11:23
s1n: in this case $range.perl can return *anything* that evaluates to the same object as $range - it doesn't have to be '1..5' here 11:24
oh, and fudging should never affect the plan
(don't let it discourage you, that's just a beginner's mistake) 11:25
forget that last one, you did add tests
11:36 amorette joined 11:37 amorette left
pmurias ruoso: wouldn't it simplify things significantly if the optimal_* part of p6opaque was droped? 11:50
11:58 Southen_ left 12:07 wknight8111 left 12:21 tuxdna left
ruoso pmurias, the optimal part is for constant-identifiers that can be checked by simple pointer identity 12:23
I don't even need to look inside the keys for that matter 12:24
initially, I'm planning to support only constant identifiers...
then the normal Str support can be added later...
pmurias so it's a bootstrap/hack optimalisation ;)
* bootstrap hack/optimalisation 12:25
ruoso yes... most importantly, a bootstrap hack
that's the reason... I'm not really worried about performance atm 12:26
s/performance/optimization/
pmurias the memory leaking trick i used in s1p.Hash was to turn Str's into constant identifiers
ruoso pmurias, I saw it...
pmurias you fixed it ;) 12:30
12:31 meppl left
pmurias (but it still leaks memory as constant identifiers are not collected) 12:32
12:33 meppl joined
pmurias [bool] "has_next" is not implemented in bool. # is it normal? 12:34
ruoso pmurias, all constant identifiers are destroyed at smop_destr time 12:35
they are not subject to GC
that's why they are "constant"
not just because they values are constant, but because the pointers are constant also
pmurias the have to be done that way 12:36
ruoso that's how we can use simple pointer identity inside MESSAGE 12:37
pmurias but using them as normal strings is not a good idea
ruoso but for things that are hard-coded in the source file... 12:38
the string is going to live for all the program anyway
because it will be in the AST
pmurias i understand ;)
12:39 jiing joined
ruoso every string literal could be created as a constant identifier afaik 12:39
pmurias how does is an attribute lookup handled? 12:41
s/does//
like $foo.bar = 3; in terms of method calls 12:42
i'm lookig at OO API on the wiki and can't find it
ruoso $foo.bar => method bar is rw { $!bar }
pmurias in the default p6opaque case
and $!bar => ? 12:43
ruoso $!bar => $obj.^!has('$!bar') 12:44
sorry 12:45
$!bar => $obj.^!has($package, '$!bar')
this returns the container itself
in the end...
$foo.bar = 3;
is a method call and a container STORE 12:46
the container returned (for the default accessor) is the attribute container itself
what I don't remember is if class Foo { has $.a; $!a = 1 } is valid 12:48
pugs: class Foo { has $.a; method b { $!a = 1 } }; my $a = Foo.new; $a.b; say $a.a; 12:49
p6eval pugs: OUTPUT[1␤]
moritz_ $.a automatically generates a $!a alias
12:49 ashizawa left
ruoso in SMOP... $.a never exist as an attribute 12:49
it is a syntax expansion of " has $!a; method a { $!a } "
sory
it is a syntax expansion of " has $!a; method a is rw { $!a } "
moritz_ so the access control is done on the compiler level, not on SMOP level?
ruoso not the access control actually... 12:50
it's just that "has $.a" is a syntax convenience only...
because there are no really public attributes
you have default accessors created for some attributes based on the syntatic format
and that's it 12:51
moritz_ rakudo: my @a = 1, 2; push @a, eval(@a.perl); say @a.perl
p6eval rakudo 29553: OUTPUT[[1, 2, [1, 2]]␤]
moritz_ rakudo: my @a = 1, 2; push @a, @a; say @a.perl 12:52
p6eval rakudo 29553: OUTPUT[[1, 2, 1, 2]␤]
12:52 alanhaggai__ joined 12:53 alanhaggai__ is now known as alanhaggai
ruoso pmurias, does it make sense to you? 12:55
12:57 alanhaggai_ left
ruoso pugs: class Foo { has $.a }; my $a = Foo.new(); my $b := $a.a; $b = 2; say $a.a; 12:57
p6eval pugs: OUTPUT[2␤]
ruoso hmm
interesting...
moritz_ looks correct to me 12:58
ruoso was everyone aware to this side effect?
pmurias ruoso: your description makes sense
moritz_ from a programmer's point of view an attribute is the same as any other item in a data structure
pmurias ruoso: what's wrong with that? 12:59
ruoso maybe it's ok... it looks like breaking encapsulation... but only as far as the returned container is the actual attribute container... but that can always be overriden... so it's not breaking the encapsulation... 13:00
pmurias ruoso: re syntax convenience only, aren't public attributes specialy marked for introspection? 13:01
13:01 cmarcelo joined
ruoso pmurias, yes. But that's why you have both the attribute descriptions in the "metadata" section and the instance storage 13:01
the introspection goes trhough the metadata section... the access go through the "instance storage" section 13:02
the attribute then has both a "private_name" and a "name"
where the private name is the effective name... and "name" is the declared name 13:03
pmurias, btw... I was wrong on which method $!a maps to... 13:04
it's not $foo.^!has... but $foo.^!private_storage($package, 'bar')
actually...
$foo.^!private_storage($package).LOOKUP('bar') 13:05
pmurias $foo.^!private_storage($package).{'bar'}
ruoso yes... that's more precise...
pmurias LOOKUP seems a kp6'ism
13:06 alanhaggai left
ruoso so $!a = 3; in the end will mean $foo.^!private_storage($package).{'bar'}.STORE(3) 13:06
pmurias we could ue as hash for private_storage? 13:11
* use
13:16 barney joined
ruoso you mean $foo.^!private_storage.{$package}{'bar'}? 13:18
pmurias yes 13:22
at least internally
ruoso well.. if you look at p6opaque.h... that's kinda how I'm doing it 13:23
it's just a matter of how the API is exposed...
since everything is already made in terms of method calls
pugs_svn r21361 | pmurias++ | [smop/misc] how i think the p6opaque structure is in p6 syntax 13:31
pmurias we could just use Hashes and Arrays instead of reimplementing them 13:33
13:33 orafu joined
pmurias and throw away the LOWL_{PoH,A,H,HoH...} 13:36
ruoso pmurias, yes... that's a possibility... I initially thought it would be easier doing that way... 13:40
(the LOWL* way)
but maybe I'm just wrong...
13:41 alanhaggai joined, bloonix joined
pmurias if the methods are going to me in sm0p/p6 and you seem to be doing it that way the LOWL_* will be a nuisance 13:41
bloonix hello
ruoso pmurias, they don't need to be (in the constant-identifiers case) 13:42
they can be implemented in plain C
pmurias bloonix: hi 13:43
ruoso: but in the non-constant case they have too? 13:44
ruoso yes...
because the calls to Str might need to recurse 13:45
for instance
but if you have a Hash implementation in place
we could probably just use it instead
pmurias the Hash is not a hash yet (i can change it) but it can be used 13:46
ruoso: it would be good if you/we started thinking how everything will look on the sm0p side 13:48
ruoso right...
you mean, when composing the class?
or which part? 13:49
13:49 jferrero left
pmurias yes 13:49
class creation 13:50
and loops and stuff
i could try to get the p6opaque stuff finished, but i would need to know how it will be used 13:53
14:00 penk left
ruoso pmurias, my idea is that the p6 code will be translated to a single C function that would initialize the class by creating a new p6opaque object, pushing all the metadata (using the REPR api) and save the class (or in the global namespace, or in a C symbol) 14:04
this "bootstrap" function would be called by smop_init at some point...
we could make it hard-coded by generating a file the same way I generate the constant identifier initialization 14:05
or we could make a plugin thing that would call this function on all .so files in a specific runtime directory
but one way or another, the p6 code would be compiled to the C+sm0p code that initializes the entire p6opaque 14:06
creating the methods, creating the attributes, setting the metaclass, pushing the methods and attributes to the metadata ($p6opaque.^!methods.push($method)) 14:07
14:07 jhorwitz joined
ruoso the last step would be to save this p6opaque into the namespace 14:08
and the package object would also be saved into the namespace
ruoso thinks the plugin idea would be cool... /usr/lib/smop/Object.so 14:10
we would need to have a runlevel thing, to have declared dependencies... 14:12
/usr/lib/smop/000_Object.so /usr/lib/smop/001_Scalar.so 14:13
maybe it's better to have a difference between autoloading this libraries or not... 14:14
/usr/lib/smop/boot/000_Object.so /usr/lib/smop/FooBar.so
14:16 alester joined
ruoso pmurias, does it make sense to you? 14:17
14:51 rindolf left 14:52 Exodist joined
TimToady pugs: class Foo { has $.a }; my $a = Foo.new(); my $b := $a.a; $b = 2; say $a.a; 15:06
p6eval pugs: OUTPUT[2␤]
TimToady that should really fail somewhere unless you have "has $.a is rw" 15:07
but it appears that we're confusing lvalues with rvalues somewhere
moritz_ pugs: class Foo { has $.a }; my $a = Foo.new; $a.a = 3; say $a.a
p6eval pugs: OUTPUT[3␤]
moritz_ pugs doesn't do any access control
15:08 sail0r joined
TimToady but it's like the method is returning the container instead of the value, or something 15:08
pugs: class Foo { has $.a = 42 }; my $a = Foo.new; $a.a = 3; say $a.a 15:09
p6eval pugs: OUTPUT[3␤]
TimToady it's not because it's uninit
moritz_ TimToady: but should binding to an rw attribute work? 15:10
TimToady I dunno--it's too early in the morning to think 15:11
but it'll be kinda sad if all value returns have to be wrapped in a readonly proxy 15:12
it really ought to fall out of ordinary lvalue/rvalue distinction, it seems 15:13
but maybe I'm thinking of it wrong ETOOEARLY
15:15 barney left 15:18 sail0r left 15:32 hercynium left 15:41 zamanf is now known as zamanfou 15:53 jan_ left 16:00 braceta joined, braceta left 16:02 |jedai| joined 16:03 Jedai left 16:07 alanhaggai left 16:23 alester left 16:31 justatheory joined, alanhaggai joined 16:33 masak left
pmurias ruoso: don't we use the HOW api for class building? 16:59
pmurias forgot his key, so couldn't get inside his flat for two hours :( 17:03
17:04 nipotaway is now known as nipotan
pmurias TimToady: is .methods rw? 17:04
Foo.HOW.methods 17:05
& 17:08
17:08 PZt left 17:09 hcchien joined 17:12 meppl left
ruoso pmurias, partly yes... but if we know it's a p6opaque we can call the REPR api directly and set the metaclas 17:13
[particle] spec.pugscode.org down? 17:16
17:17 jan_ joined 17:20 hercynium joined
pmurias ruoso: for normal object or during meta-model bootstrap? 17:26
ruoso pmurias, during meta-model bootstrap
afterwards, the object build must be done using HOW
pmurias do we use anything which dosn't compile under g++ on purpose? 17:27
ruoso not that I'm aware 17:28
17:29 simcop2387-vnc joined, simcop2387 left, simcop2387-vnc is now known as simcop2387 17:30 cjfields joined
pmurias \ 17:33
17:34 iblechbot left
TimToady pmurias: I wouldn't think .methods should be rw. there should probably be .add_method and .delete_method instead so that some degree of readonly-ness is possible for encapsulation 17:38
17:38 hercynium left
TimToady more generally, methods should be added by composition 17:38
(plus subsequent mixin, where applicable) 17:39
17:39 Nebster joined 17:40 alester joined
TimToady Nebster: welcome to #perl6 from #parrot :) 17:41
17:42 cjfields left
Auzon Ah, I found out what a StopIteration error is :) 17:44
ruoso TimToady, we could tie the openness of some class to the rw'ness of .methods
pmurias classes can only be closed by a compile time pragma 17:48
17:52 Lorn joined 17:54 hercynium joined
TimToady no, I think openness should be determined by .add_method, and .methods should always be ro 17:55
pmurias ruoso: g++ dosn't like complex 17:57
ruoso pmurias, I'm not even sure "complex" is implemented 17:58
you could comment it out for now, and let someone implement it later...
pmurias ok
ruoso: do you now how to make autotools use llvm?
17:59 kanru left
ruoso pmurias, nope... but I think there's something in llvm docs about it 17:59
pmurias lowlevel methods will take a slime frame as a argument? 18:00
18:00 alester left
pmurias & 18:02
speckbot r14567 | larry++ | Equivalence of cascaded and semicolon subscript forms suggested by nick++
18:02 Chillance joined 18:06 rindolf joined 18:07 justatheory left 18:09 DietCoke joined
DietCoke TimToady: that syn update you just committed, reads 18:09
Auzon rakudo: my %hash_v = ( a => 1, b => 2, c => 3 ); for %hash_v.values -> $val is rw { $val++ }; say %hash_v.perl # I swore this used to work
p6eval rakudo 29562: OUTPUT[increment() not implemented in class 'String'␤current instr.: 'postfix:++' pc 13272 (src/gen_builtins.pir:8538)␤]
DietCoke types are expected succeed ... should be "expected to succeed"
18:10 Alias_ left
DietCoke @tell timtoday that syn update you just committed, reads "types are expected succeed" ... should be "expected to succeed" 18:10
lambdabot Consider it noted.
speckbot r14568 | larry++ | typo from DietCoke++
DietCoke ... or I could just be impatient. =-) 18:11
18:11 cjfields joined
pmurias b 18:11
18:11 DietCoke left 18:12 meppl joined 18:15 lisppaste3 left 18:16 lisppaste3 joined
rindolf Hi all. 18:18
pmurias rindolf: hi 18:19
18:19 iblechbot joined
pmurias ruoso: shouldn't it be $obj.^!how = $obj instead of $obj.^!how($obj)? 18:21
ruoso pmurias, I tried to simplify it a little... because doing that would require returning a container that would be able to receive a STORE call 18:23
18:24 kanru joined
ruoso pmurias, but maybe it's a bad idea 18:28
pmurias, or maybe that should be just an signature option, complementary with method ^!how is rw
pmurias either one or the other 18:29
ruoso you mean it's either a bad idea or it should be a signature option?
pmurias either a $obj.^!how($obj) or $obj.^!how = $obj; 18:30
ruoso yeah... that's probably ok
because you need a huge overhead to support the is rw thing
pmurias what do you mean by a signature option? 18:32
ruoso mmd 18:33
but that mmd would be implemented in low-level 18:34
because the REPR methods are intercepted by the RI
pmurias having fast mmd is hard but would be tremenously help full
having both interfaces dosn't make sense
ruoso pmurias, if you'd like to change it, feel free... 18:36
this inconsistency probably a bad idea
Nebster TimToady: Hi, had to go out, :P 18:39
What has $| changed to for disabling buffering?
I've got: select((select($Client), $| = 1)[0]); # Disable Buffering 18:40
ruoso Nebster, I'd guess to something like the OO api provided by IO::Handle
$*OUT.autoflush = 1; 18:41
Nebster OO api?
ruoso Nebster, when you "use IO::Handle", you can STDOUT->autoflush(1) 18:43
then you don't need the "select, select" trick
TimToady but none of the implementations are very far along in terms of I/O yet 18:44
and, in fact, autoflush is missing from the draft IO spec, so it's probably on of those things that's just assumed to be the same as in Perl 5, at least until we change our mind... 18:48
Nebster Ok, thanks
ruoso TimToady, you think there should be some native support for concurrent non-threaded IO using continuations? 18:49
TimToady, (I think it was you that posted me a link about how that is made in haskell)
moritz_ concurrent, non-threading? like STM? 18:51
ruoso moritz_, not really... more like Any::Event
TimToady don't think it was me
ruoso sorry... AnyEvent
18:52 chris2 left
ruoso but the idea is to allow writing non-event-based programs that behave like event-based programs 18:52
Nebster Does anyone know what this means: Method 'lvalue' not found for invocant of class 'PAST::Stmts' 18:53
ruoso TimToady, moritz_, the based idea is that instead of blocking on IO, the continuation would be yelded to the interpreter that would only continue it when the IO is ready to be read/writen 18:55
moritz_ Nebster: it means that you are trying to do a list assign that's not yet implemented 18:56
Nebster: something like my ($a, $b) = 1, 2;
ruoso TimToady, moritz_, the interpreter could then wait for events related to several continuations... 18:57
Nebster So this would cause it: ($DestHost, $DestPort) = split(":", $1);
moritz_ yes 18:58
sadly :/
Nebster is this all implement in PIR? 18:59
I might just convert to that
Since I want to stay up-to-date with Parrot but with this simple script working
Well, it's really just a proxy
TimToady okay, you're referring to www.seas.upenn.edu/~lipeng/homepage/unify.html 19:02
lambdabot Title: Unifying events and threads
ruoso TimToady, exactly
moritz_ Nebster: if you want to get something working, perl5 is the much faster road atm :/ 19:03
Nebster I know, but I like parrot :P
Does the "use perl5" statement work?
I remember reading about it somewhere
19:03 jfredett_ is now known as jfredett
moritz_ no 19:04
pmurias it's use v5;
it dosn't work on parrot
Nebster ok
pmurias pugs: use v5;print "p5\n";
p6eval pugs: OUTPUT[pugs: Prelude.last: empty list␤]
Nebster And how would I go about converting .Net to PIR?
moritz_ I think #parrot is the better place to ask this 19:05
Nebster Ok
Thanks for all the help :)
moritz_ you're welcome 19:06
pmurias ruoso: if you want to try to implement p6opaque using Array's and Hash's were should my attempt live? 19:11
s/you/i
ruoso pmurias, you can take p6opaque over
if you start it, I'll collaborate with you
pmurias good ;) 19:12
ruoso pmurias, p6opaque is the major milestone we have ahead... once we have it, a lot of good things will come... 19:15
19:17 rlb3 left
pmurias does the current implementation do much? 19:18
19:19 stevan_ joined
ruoso pmurias, I've only implemented .^!how and .^!methods, where .^!methods return a proxy object that introspect the internals of p6opaque 19:19
19:20 rindolf left
ruoso pmurias, just remember one thing... the methods must support more then one instance per name... 19:23
19:24 justatheory joined
pmurias that was the part i meant to ask about 19:24
ruoso pmurias, it just mean that you need a Hash of Arrays, not a Hash of Methods
pmurias why do we need a bunch of methods for names, multis
a Hash of Arrays of Methods 19:25
a Hash of Arrays of Method
ruoso yes...
pmurias don't the multis merge magicly into a single method?
ruoso pmurias, I'm not sure how that relates to multi inheritance... 19:26
19:27 rlb3 joined
ruoso I don't think it's possible to merge them into a single method 19:27
(maybe as a optimization, later, but conceptually... I don't think so) 19:28
pmurias multi method performace is very important
in the long run that is 19:29
;)
ruoso pmurias, I mean... you can only merge it as a cache implementation
that must be invalidated accordingly
pmurias yes 19:31
19:32 rindolf joined
pmurias ^!methods is speced on the wiki to returnn an Array of Methods... 19:33
ruoso pmurias, this is confused because $foo.^methods returns a list 19:35
but we could make the REPR api more storage-friendl
and make it return a Hash of Array of Method
moritz_ rakudo: say uc "ä" 19:36
p6eval rakudo 29563: OUTPUT[\xC4
pmurias the metadata pointer can be shared? 19:39
ruoso pmurias, you mean by being accessed inside the proxy objects (like the methods hash?) 19:40
or by being used as the metadata for several p6opaques?
pmurias like being used for several p6opaues 19:41
ruoso I don't think so... 19:42
that's the reason for "instanceof"
pmurias it doesn't contain anything object specific in class based .HOWs
what does the instanceof point to? 19:43
ruoso to the prototype
pmurias can the metadata be NULL?
ruoso on objects that have a instanceof, yes... that's the plan 19:44
pmurias we could make metadata a SMOP_Object* and just share it for class based oo 19:45
ruoso hmm 19:46
pmurias we would need an to make instanceof an array for real prototype oo (not some punny javascript oo) 19:47
s/punny/crapy/ 19:48
s/crapy/puny/
19:50 PZt joined
ruoso pmurias, in class-based OO the HOW is a p6opaque also 19:51
where the metadata is defined
the protoobject contains the "how" reference in the metadata
and the instance "instanceof" the protoobject 19:52
different from prototype-based OO 19:53
where the prototype has the metadata
and a reference to the HOW 19:54
that simply knows how to traverse the protoobject metadata
19:58 alester joined
pmurias ruoso: the HOW dosn't have to be a p6opaque 19:59
ruoso pmurias, yeah... right... sometimes I forget how polymorphic smop is ;) 20:00
pmurias i'll just make metadata a SMOP_Object*, it might help later ;) 20:01
ruoso pmurias, I'm not sure about it 20:02
because it was supposed to be part of the p6opaque storage
pmurias it's stored in p6opaque, just as a SMOP_Object* 20:04
Auzon Is pugscode.org down? 20:08
moritz_ at least apache is down 20:11
[Thu Jul 17 22:09:53 2008] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock 20:14
Configuration Failed
ok, back up and running 20:16
Auzon :) 20:19
pmurias ruoso: any idea what can undefined reference to `SMOP__p6opaque(int0_t &) be? 20:20
ack does find a mention of it, and i don't know if autotools can cause anything like that 20:22
gcc -Wall -D_GNU_SOURCE -I../include -g -O2 -o .libs/01_smop_lowlevel.t 01_smop_lowlevel.o -L/home/pawel/p6/v6/smop/src /home/pawel/p6/v6/smop/src/.libs/libsmop.so -lpthread 20:24
/home/pawel/p6/v6/smop/src/.libs/libsmop.so: undefined reference to `SMOP__p6opaque(int0_t &)'
shower& 20:27
20:29 cjfields_ joined
ruoso pmurias, I have no idea... it's something svn diff will show you 20:30
since I'm not experiencing this issue
ruoso home &
pugs_svn r21362 | Auzon++ | [gsoc_spectest] added tests to for.t and fudged it for rakudo. (added 3 tests) 20:31
Auzon S04-statements/for.t should be good to add to spectest_regression 20:32
moritz_ checks
ah, the "implicit invocant" fudge messages aren't correct 20:34
(I guess they are my fault)
Auzon I didn't mess with the existing messages :-/
moritz_ the tests are wrong, because you can't call a sub as method
Auzon: no worries, I'm going to fix them some day [tm] 20:35
when we have 'class Int is also {...}' we can just put them as methods in Int ;-)
rakudo: 42 - 19 20:38
p6eval rakudo 29563: RESULT[23]
rakudo_svn r29564 | moritz++ | [rakudo] added S04-statements/for.t to spectest_regression, Auzon++ 20:40
r29564 | moritz++ | +23 pass, +19 todo/skip tests
20:41 jferrero joined
moritz_ perlbot: karma Auzon 20:41
perlbot Karma for Auzon: 129
20:42 wknight8111 joined 20:46 cjfields left 20:48 pmurias left
pugs_svn r21363 | putter++ | [misc/elfish/rx_on_re] Setting up for development; hit a perlbug. 20:48
r21363 | putter++ | The Regexp_ModuleA.pm tests now run. Created a elf_f+Regexp_ModuleA hybrid.
r21363 | putter++ | make check partially runs.
r21363 | putter++ | But perl 5.10 then malloc panics and segfaults. Notes in README.
r21363 | putter++ | Absent someone interested in debugging perlguts, this may be a showstopping
r21363 | putter++ | blocker on this development path (towards a fast rx/re engine written in p6).
20:48 ruoso left 20:50 pmurias joined 20:52 justatheory left
moritz_ @tell mncharity re r21363, fglock saw similar perl bugs in regexes which contained some code assertions. Moving them into subs and out of the blocks (only call them from the blocks) helped 20:53
lambdabot Consider it noted.
20:55 rindolf left
pugs_svn r21364 | putter++ | elf/README: Mention the ELF_STD_RED_RUN configuration env var. 20:55
r21364 | putter++ | Which permits arbitrarily moving/installing copies of elf.
pmurias @tell ruoso it turned out gcc was just printing a wrong error message 21:06
lambdabot Consider it noted.
21:07 rlb3 left 21:08 iblechbot left 21:14 justatheory joined
pugs_svn r21365 | pmurias++ | [smop] moved the old p6opaque attempt to misc, started a new more SMOP__Objecty one 21:16
pmurias moritz_: that way backtracking is lost
21:18 rlb3 joined
moritz_ pmurias: why? 21:18
Auzon perl6: my $x; $x++; say $x;
p6eval elf 21364: OUTPUT[1␤]
..pugs: OUTPUT[1␤]
..rakudo 29564: OUTPUT[increment() not implemented in class 'Undef'␤current instr.: 'postfix:++' pc 13272 (src/gen_builtins.pir:8538)␤]
pmurias moritz_: wait... 21:19
moritz_ instead of m/(??{ $stuff_here })/ just do sub stuff_1 { $stuff_here }; m/(??{ stuff_1() })/ 21:20
for a bit more complex $stuff_here that solves a lot of problems
21:27 donaldh joined
pmurias kp6 ended up giving up on ??{} blocks 21:27
21:36 japhb left 21:40 pbuetow_ left 21:44 rindolf joined 21:48 Limbic_Region joined 21:53 pmurias left 22:01 rindolf left 22:04 bacek joined 22:13 cjfields_ left 22:17 hercynium left 22:18 japhb joined 22:22 eternaleye joined
pugs_svn r21366 | lwall++ | [STD] unspace tweaks 22:26
22:28 donaldh left
TimToady yes, until p5's regex runs in the same runloop as ordinary code, it's pretty much hopeless to get closures and recursion correct with interwoven regex and code, I suspect 22:30
you'll note that STD.pmc uses only the most basic of P5 regexen
because I wanted it to work right, and fast can come later 22:31
22:38 alester left, jferrero left 22:41 kanru left, cmarcelo left
Auzon perl6: my $foo = 42; if $foo -> $x {say $x} 22:55
p6eval elf 21366: RESULT[CODE.new(!!!)␤]
..pugs: OUTPUT[*** Cannot bind to non-existing variable: "$x"␤ at /tmp/o6qbx4IeYu line 1, column 1␤]
..rakudo 29569: OUTPUT[Statement not terminated properly at line 1, near "-> $x {say"␤current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82)␤]
Auzon That should say 42, correct?
22:58 Lunchy left 22:59 Alias_ joined 23:02 bacek_ joined 23:03 |jedai| left 23:04 Lunchy joined, |jedai| joined
bacek_ pugs: my $j = 1|2|3; say $j < 2; 23:08
p6eval pugs: OUTPUT[any(VBool False,VBool True)␤]
bacek_ rakudo: my $j = 1|2|3; say $j < 2; 23:09
p6eval rakudo 29569: OUTPUT[1␤]
23:10 Exodist left
bacek_ pugs: my $j = 1|2|3; say $j.perl; 23:10
p6eval pugs: OUTPUT[\(1 | 2 | 3)␤]
bacek_ rakudo: my $j = 1|2|3; say $j.perl; 23:12
p6eval rakudo 29569: OUTPUT[any(1, 2, 3)␤]
pugs_svn r21367 | lwall++ | [Cursor] fix _PATTERN to set endpoint correctly so we can optimize multiple 23:14
r21367 | lwall++ | matching nodes to single P5 regexes where appropriate
r21368 | Auzon++ | [gsoc_spectest] moved do.t into spec, added tests, fudged for rakudo. (added 3 tests) 23:15
Auzon t/spec/S04-statements/do.t should be ready for spectest_regression
bacek_ pugs: my $j = 1|2|3; say ($j < 2).perl;
p6eval pugs: OUTPUT[(Bool::False | Bool::True)␤]
23:16 Alias__ joined 23:17 Alias_ left
Limbic_Region TimToady - how much of STD.pm does STD.pm parse now? 23:18
23:19 bacek left 23:26 pjcj left, Nebster left 23:27 bacek_ left 23:32 bacek joined
bacek pugs: my $j = 1|2|3; say ?$j; 23:34
p6eval pugs: OUTPUT[any(VBool True)␤]
bacek pugs: my $j = 0|0|0; say ?$j; 23:36
p6eval pugs: OUTPUT[any(VBool False)␤]
23:43 Limbic_Region left