»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
dalek kudo/nom: ea76dc6 | (Brad Gilbert)++ | src/core/Int.pm:
Add Range coercers for int1 and uint1
02:36
kudo/nom: 6c577d2 | colomon++ | src/core/Int.pm:
Merge pull request #312 from b2gills/nom

Add Range coercers for int1 and uint1
colomon is really impressed at the travis-ci vetting pull requests. 03:10
skids Is that recent for perl6 project repos? 03:14
colomon skids: just this week, I think. 03:18
definitely this month
skids I wonder if it's possible to nudge it for old requests.
colomon I dunno. 03:20
skids I'm not seeing any buttons to that effect, at least. 03:21
colomon yeah, and the open pull request I'm looking at that has it appears to postdate the travis-ci integration. 03:22
Still, that's a wonderful piece of functionality for simple merges.
the merge looked correct to me, and travis-ci told me it built correctly, so I didn't have to check that. that's sweet.
skids Especially with the build times here :-) 03:23
colomon needs to apologize to ab5tract for still not having sat down and looked over his pull request.
raiph .ask lizmat what's your P6ian take on the matters raised in www.reddit.com/r/perl/comments/2h1z...es/ckoshwx ? 05:20
yoleaux raiph: I'll pass your message to lizmat.
sergot o/ 06:24
Ven o/ 08:58
tadzik sweet, gsoc tshirts are green :) 09:08
timotimo "green summer of code" 09:09
lizmat_ good *, #perl6! 09:25
Ven \o, lizmat 09:26
lizmat you were saying raiph?
yoleaux 05:20Z <raiph> lizmat: what's your P6ian take on the matters raised in www.reddit.com/r/perl/comments/2h1z...es/ckoshwx ?
lizmat .tell raiph please read up on S11:01 and S22:01: basically each CompUnitRepo is responsible for its own installation management 09:27
synopsebot Link: perlcabal.org/syn/S11.html#line_01
yoleaux lizmat: I'll pass your message to raiph.
lizmat .tell raiph in Perl 6, there is no global distribution management
yoleaux lizmat: I'll pass your message to raiph.
lizmat .tell raiph anybody can write their own distribution manager (CompUnitRepo) as long as it adheres to the specced API 09:28
yoleaux lizmat: I'll pass your message to raiph.
dalek kudo/nom: 171fbe1 | (Elizabeth Mattijsen)++ | src/core/Int.pm:
Eh, and what about (u)int2 and (u)int4 ?
09:44
dalek kudo/nom: 416969d | (Elizabeth Mattijsen)++ | src/core/Int.pm:
Auto-sense 32/64 bitness
09:51
dalek ecs: 347fa05 | (Elizabeth Mattijsen)++ | S16-io-OLD.pod:
Move current S16 to OLD version, for reference
10:18
timotimo a complete IO overhaul? :3 10:25
carlin is the result of CompUnit.precomp-path supposed to be a Str, or should it be a Path?
FROGGS timotimo: to catch stats etc 10:26
lizmat carlin: good question, I'm still in 2 minds about that 10:27
if .IO returns an IO::Path, then I feel in general we should be dealing with filenames as Str 10:28
only if we really want to do someting IOy with them, should we turn them into IO::Path
the creation / handling of IO::Path / IO::Handle is *very* expensive at the moment
Woodi_ hallo #perl6 :) 10:30
lizmat and a source of slowness in things like File::Find and looking up modules with 'use' 10:31
lizmat Woodi_o/ 10:32
Woodi_ is _object_ Path realy needed ? what methods it have ? .traverse ? paths/filename are common in todays OSes and having object just to call accesors to get string is costly... 10:33
maybe some api could be build around paths being strings ? 10:34
handlers are (probably) other thing...
lizmat Woodi_: that's IO::Spec and its submodules 10:35
and mostly implemented
Woodi_ ah, interOSness...
btw. I think p5erlers and v5 should got more credits here... after all Perl5 is the Real Thing atm. 10:40
lizmat where's here ? 10:41
Woodi_ #perl6 @ freenet... but from "team" perspective is probably inevitable to have a bit "we are better!" thinking :) 10:43
Woodi_ but maybe this is military approach :) maybe ideal one is better... 10:44
lizmat Woodi_: you mean #perl6 at freenode? 10:45
as in here ?
Woodi_ yes... why ?
timotimo do you read the channel much? :)
Woodi_ hmm, yes. 10:46
timotimo the reaction to Inline::Perl5 has been very positive
and enthusiastic
Woodi_ I mean in general...
lizmat wishes that Perl6 got only 10% of credits it gets on P5 channels, of the credits that Perl 5 gets on P6 channels 10:47
lizmat that would be a start 10:47
timotimo lizmat: FWIW, i'm 100% anti perl5! it has so many warts! :P
Woodi_ I don't think something could really replace /usr/bin/perl5 10:48
Juerd I would rather see that both communities would stop bitching at the other one all together.
lizmat Juerd++ 10:48
Woodi_ in longterm perl6 is only one possible continuation of perl5... 10:50
Juerd (And I would still love to see Perl 6 renamed to something non-Perl, because that would most clearly show that the two projects are intended to live side by side, but apparently it's still Perl 6's intention to eventually replace Perl 5.) 10:50
nwc10 I don't think it matters what anyone's intentions are - CPUs are going ever more multicore, and Perl 5 doesn't handle multicore elegantly 10:51
Juerd Woodi_: Why would that be? Perl 5 has clearly shown a lot of development in recent years.
Woodi_ Juerd: Pascal was renamed to Modula or something other what wasn't realy successfull...
Juerd Woodi_: Are you saying that because one project didn't succeed, their entire approach is invalid? 10:52
Woodi_ Juerd: I hear developing internals of Perl5 is hard
BinGOs I am forever mistyping perl as 'perk' you can have that one for free.
Juerd I hear that too, but I still do see that some people manage to do this hard thing anyway.
Woodi_ I think perl5 is in awk-like position. w3 ppls comes and goes :) 10:53
Juerd nwc10: Another trend is towards less powerful (mostly ARM) CPUs with few cores, for very specific tasks. Most of the existing programming languages and compilers are perfectly suited for that.
Woodi_ Juerd: also there are 100GHz CPUs coming into data centers :) 10:55
timotimo ... 100 GHz?!
nwc10 Juerd: I'm not certain about "perfectly" - if you're going small, then a compiled language is going to use even less resources than an interpreted language
timotimo perlfectly!
nwc10 but yes, fair point, for single threading, anything existing is still as good as it was last week 10:56
Woodi_ timotimo: fluid nitrogen, etc :) don't do that in basement (yet) ;)
tadzik images.rapgenius.com/0040b864f9748f...x360x1.jpg
Juerd nwc10: For Raspberry Pi-like systems, and many OpenWRT devices, Perl is great. You don't necessarily need stuff to be compiled. 10:59
Perl 5, that is. 11:00
For now, I wouldn't even try Perl 6 on a weak CPU :)
nwc10 anyway, yes, developing the Perl 5 core is *hard*. I do not forsee that it is sustainable on the 10+ year timescale on a volunteer basis. 11:03
the number of people with the intersection of time, relevant skills and motivation continues to shrink
Woodi_ nwc10: what about some refactoring ? 11:07
some thing pushed into module space ?
nwc10 Woodi_: everything obvious and practical has been done.
nwc10 Woodi_: also, do you know who I am, and why I'm competant to say this? 11:07
tadzik :) 11:08
Woodi_ you are some dev, that I know
nwc10 I am the second largest contributor ever to the Perl 5 core by several metrics.
tadzik you have a talent for understatement
lizmat Woodi_: nwc10 *was* one of the few people with the intersection of time, relevant skills and motivation
nwc10 and, I have been wrestling with the problem of "how do we sustain things" for about 10 years
so, if it's *obvious*, for any level of obvious, it's probably already been attempted or considered and figured unworkable 11:09
Woodi_ nwc10: I belive you but have problems with imagining :) 11:10
nwc10 this isn't meant to mean "please go away". It's meant to mean "unless you have some very good insight into the particular problems of a gnarly 25 year old C codebase which no-one really understands, with a massive number of variably-grumpy downstream dependencies, I fear that you likely can't actually suggest anything that will help" 11:11
er, not dependencies. dependents. I think. Users, in the "building stuff on top of it" sense 11:12
it's roughly as hard as the stuff that jnthn is doing on MoarVM, that no-one else seems to volunteer to help him with.
Woodi_ nwc10: I know that, no offence taken. but I just ask :) 11:13
and that is what I mean by awk-like fate... Perl5 will stay compatible with 25 years old scripts or some thing must be cut from the core... 11:14
I started to unix in nawk era... 11:15
nwc10: so maybe you can answer my question/surprise... around 2 years ago I hear perl5 have virtual machine... how old that vm is ? from v5beta or v3 or v4 maybe ? 11:21
nwc10 the VM for Perl 5 effectively dates from 5.000 (well, the alpha), but in turn that codebase is a rewrite of Perl 4, which was derived from Perl 2, which was derived from Perl 1 11:22
Woodi_ ah, so vm is there by design... so in 80s vm was already used in compilers... 11:25
Woodi_ is happy Java wasn't first ;) 11:27
lizmat jnthn, timotimo: "$*CWD is specific to the current thread" do you think that is even feasible ? 11:31
feels like a fossil from the days where we only could think of using threads for asynchronous operations 11:32
with reactive programming (as in Supplies) we don't even know on which thread something is executing
timotimo lizmat: don't we do evil tricks with $*CWD anyway? 11:33
timotimo using CWD for any non-trivial application is folly IMO 11:34
lizmat my feeling as well... 11:34
kurahaupo_ Woodi_: the UCSD p-Machine was a portable compiled Pascal from the early '80s
lizmat scratches the threadness scope of $*CWD in the spec 11:35
LLamaRider Can anyone tell me what is the incantation for a "Most Optimized" perl6 run? I am running the jit-enabled experimental moarvm setup
but this still takes 14 seconds on my machine: 11:36
time perl6 --optimize=3 -e ' for (1..50_000_000) {} ;'
oh! 11:37
masak kept telling me some time back that perl6 loves spaces
time perl6 --optimize=3 -e ' for (1 .. 50_000_000) {} ;'
this meets perl5 speeds, 1.2 seconds
I retract my question
(though I wonder what the previous version did)
Woodi_ kurahaupo_: my language crafting _idea_ was still at flex/bison level, read, translate, save, execute ;) 11:38
lizmat LLamaRider: slightly faster version: 11:40
$ time perl6 --optimize=3 -e 'my int $a; while ($a = $a + 1) <= 50_000_000 {}'
real0m0.394s
we're still working on automagically optimizing your version to the above version
LLamaRider lizmat++ thanks for letting me know, glad to hear it is in the making :) 11:41
Then --optimize=3 is what I need to remember
timotimo LLamaRider: superstitious parenthesis
nwc10 en.wikipedia.org/wiki/Z-machine -- virtual machine from 1979
timotimo LLamaRider: if you remove the parenthesis it should already generate the version lizmat pasted 11:41
lizmat LLamaRider: I think --optimize=3 is default
timotimo no, --optimize=2 is default, --optimize=3 is the default for the core setting only 11:42
lizmat timotimo: it doesn't (anymore, anyway)
timotimo oh? it broke?
maybe i can look into that today
i have to AFK now, though
lizmat $ time perl6 --optimize=3 -e 'for 1 .. 50_000_000 {}'
real0m12.706s
timotimo: ^^^
timotimo what. 11:43
that's bad.
LLamaRider yep, that is exactly my experience 11:45
but it's great to hear there is a plan to move forward
lizmat FWIW, I think the empty while benchmark is *faster* than Perl 5
LLamaRider I was excited to learn that runtime optimizations are getting attention, that could bring some excellent publicity
lizmat: faster than P5 is awesome ^^ 11:46
lizmat LLamaRider: you might also want to check jnthn.net/papers/2014-yapceu-performance.pdf
alas, the associated video is still not up :-( 11:47
LLamaRider lizmat: that very presentation brought me here, saw it mentioned on HackerNews
lizmat ah, ok :-)
dalek line-Perl5: 9b91f7e | Carlin++ | lib/Inline/Perl5.pm6:
add fallback at BEGIN time to avoid precomp issues
11:51
line-Perl5: 672ea14 | Carlin++ | t/ (3 files):
test precompilation
line-Perl5: e27abfb | niner++ | / (4 files):
Merge pull request #6 from carbin/witty-branchname-goes-here

add fallback at BEGIN time to avoid precomp issues
Many thanks to carbin++ for fixing this!
Woodi_ wonders what is a chance a GLR(efactor) will ends with a rewrite of some size ;) 12:00
lizmat Woodi_: if I read your line right, I would say 98% 12:03
it's not the Great... for nothing :-) 12:04
FROGGS though, it won't affect user code me thinks 12:05
at least not directly
Woodi_ lizmat: part of me likes idea of next rewrite but other part is in frozing hate state (becouse of time it will take)... 12:06
lizmat well, it's one of those parts of "first make it work, then make it fast" 12:07
leont Is there a way to dynamically add methods? 12:12
Well, I bet there is, but I can't find any docs for the mop
Woodi_ FROGGS: I wonder if some science things was invented during Perl6 development. or just applications of known theorems and wide borrowing. but if things are invented here then something could be invented during GLR :) what means: we break APIs/user visibility/code trees :)
leont: probably there are few ways ;) 12:13
lizmat leont: dynamically adding methods is a bad idea from an optimization point of view
however, you *can* add roles dynamically to instantiated objects
Woodi_ and monkey patch things ?
leont Possibly my own classhow is an option, or a trait on some of the methods. Hmmmm
lizmat m: my $a = 0 but True; say $a; say ?$a 12:14
camelia rakudo-moar 416969: OUTPUT«0␤True␤»
leont I need to add not_foo methods to many but not all of my methods. 12:15
FROGGS leont: grep for add_method in rakudo/src 12:15
lizmat Woodi_: monkey patching is also not a good idea from an optimization point of view, but yes, that's an option (and implemented mostly as well)
leont I suspect a negatable trait may be cleanest
pmurias nwc10: from the my perspective it seems that it's a lot hard to start contributing to perl 5 then perl 6. It seems that most of the things that need doing are either very subtle tweaks or very hard things (that there is no consensous how to proceed on)
s/from the/from/ 12:16
* harder
FROGGS pmurias: sure, we'd have the same problems if we had that many written lines of code
lizmat m: my $a = 0 but True; say $a; say ?$a; say $a.WHAT # see the mixed in role 12:17
camelia rakudo-moar 416969: OUTPUT«0␤True␤(Int+{<anon>})␤»
Woodi_ m: class MyClass {}; my $m = "newmeth"; MyClass.HOW.add_method( MyClass, $m, method() { say "New!"; } ); 12:25
camelia rakudo-moar 416969: OUTPUT«===SORRY!=== Error while compiling /tmp/rGO2J01AYL␤Unable to parse expression in argument list; couldn't find final ')' ␤at /tmp/rGO2J01AYL:1␤------> s.HOW.add_method( MyClass, $m, method() ⏏{ say "New!"; } );…»
PerlJam Woodi_: oh the difference a space makes. 12:33
lizmat Woodi_: it is imaginable that the GLR will be post 6.0.0 12:36
although I would personally like to see it pre 6.0.0 12:37
PerlJam t oo
PerlJam though, I also hope that this christmas will be *the* christmas for Perl 6. :) 12:40
lizmat working hard on that :-) 12:41
Woodi_ m: class MyClass {}; my $m = "newmeth"; MyClass.HOW.add_method( MyClass, $m, method () { say "New!"; } ); MyClass.newmeth; 12:43
camelia rakudo-moar 416969: OUTPUT«New!␤»
PerlJam Woodi_: though, also note ... 12:44
m: class MyClass {}; my $m = "newmeth"; MyClass.HOW.add_method( MyClass, $m, method () { say "New!"; } ); say MyClass.^methods
camelia rakudo-moar 416969: OUTPUT«<anon>␤»
Woodi_ PerlJam: just black unknowledge for me... should be at least one listed... 12:46
PerlJam aye, the method is there, it's just anonymous. It doesn't get the name "newmeth" 12:47
I'm not sure if that's really a bug or not though.
PerlJam (though, it may explain why there are so many <anon> in something like Routine.^methods ) 12:50
Woodi_ p: class MyClass {}; my $m = "newmeth"; MyClass.HOW.add_method( MyClass, $m, method ( $p ) { say $p; } ); MyClass.newmeth; 12:51
camelia rakudo-parrot 416969: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method <anon> at /tmp/IAHchOyX8N:1␤ in block <unit> at /tmp/IAHchOyX8N:1␤␤»
Woodi_ p: class MyClass {}; my $m = "newmeth"; MyClass.HOW.add_method( MyClass, $m, method ( *@p ) { say @p.shift; } ); MyClass.newmeth; 12:53
camelia rakudo-parrot 416969: OUTPUT«Element shifted from empty list␤ in method gist at gen/parrot/CORE.setting:13567␤ in method gist at gen/parrot/CORE.setting:1142␤ in sub say at gen/parrot/CORE.setting:15327␤ in sub say at gen/parrot/CORE.setting:15323␤ in method <anon> at…»
Woodi_ p: class MyClass {}; my $m = "newmeth"; MyClass.HOW.add_method( MyClass, $m, method ( *@p ) { say @p.shift; } ); MyClass.newmeth( "ABC!");
camelia rakudo-parrot 416969: OUTPUT«ABC!␤»
Woodi_ m: class MyClass {}; my $m = "newmeth"; MyClass.HOW.add_method( MyClass, $m, method ( *@p ) { say @p.shift; } ); MyClass.newmeth( "ABC!");
camelia rakudo-moar 416969: OUTPUT«ABC!␤»
Woodi_ so $p don't work, @p's works ;) old good Perl ;) 12:55
PerlJam Woodi_: eh? 12:55
Woodi_ like: sub doabc { my @_ = shift; ... } # :) 12:57
Woodi_ btw. I always know Moose is troyan horse ;) thanx to it now Perl6 is declarative production ready :) 12:58
PerlJam Woodi_: I think you've got that backwards. 13:00
nwc10 pmurias: I don't think that it's just from your position. I think that it's a general problem for anyone/everyone. And hence thanks for adding something that I'd missed
Woodi_ PerlJam: I just strongly don't like Moose... 13:01
leont is trying «method foo is bar {}», but that gives errors :-/ 13:04
lizmat "is" only works on classes, not methods?
leont Is there a way to have traits on methods? 13:06
A bit like sub attributes in p5
PerlJam sure. 13:08
lizmat multi trait_mod:<is>(Method:D $m, :$traitname) {
PerlJam what lizmat said
lizmat leont: note that the *name* of the named variable, is the name of the trait 13:09
so the above would create a "traitname" trait
ribasushi nwc10: FC is catching up fast though :) 13:10
nwc10 ribasushi: According to ohloh, he has a way to go: www.openhub.net/p/perl/contributors/summary 13:11
ribasushi nwc10: I am looking at `git shortlog -e -s -n` on blead - know off the top of your head why the massive mismatch? 13:13
ahhhhh 13:14
nwc10: ohloh does *not* deduplicate commits
so it counts every single entry on every single "repo" as unique: www.openhub.net/p/perl/enlistments 13:15
(this is offtopic for p6, sorry ;)
lizmat www.openhub.net/p/rakudo/contributors/summary # would be more on topic :-)
PerlJam ribasushi: Just say that you're writing a P6 program that parses git output or something ;) 13:16
FROGGS ribasushi: say it! :P 13:17
ribasushi I... I ... am holding the fort instead! ;) 13:17
leont I'm trying to get the Class a method is in from the Method object, but .package doesn't DWIM 13:18
lizmat leont: code ? 13:19
PerlJam wonders what .package does instead 13:20
leont paste.scsys.co.uk/424950 13:21
lizmat leont: .WHAT works fine for me? 13:26
leont .WHAT on what? 13:28
lizmat $method ?
you can use the $method object for wrapping e.g. 13:29
PerlJam That'll give (Method) won't it? ($method.WHAT)
leont I don't that Method, I want the Path::Iterator
lizmat leont: the trait code is called at *compile* time, there is no Path::Iterator then yet 13:30
leont Hmmmm, that explains
lizmat see e.g. the implementation of "is cached" in src/core/Routine 13:31
gtodd hmm 13:35
gtodd builds new perl6 for moarvm rebootstraps panda and installs Inline::Perl6 and ... 13:36
Unhandled exception: Cannot locate native library '/home/gtodd/perl6/languages/perl6/site/lib/Inline/p5helper.so
but the lib is there
leont I guess I'll end up with a FALLBACK :-/ 13:37
lizmat leont: FALLBACK is NYI, but ^add_fallback should work 13:40
nine has experience with that because of Inline::Perl5 13:41
gtodd arg Inline::Perl5 was working so well I was getting addicted to it 13:43
gtodd well addicted to having fun trying to break it :-) 13:44
leont And that crashed my computer, probably death by swap :-/ 13:54
Note to self: set a lower ulimit
TimToady .botsnack 14:03
yoleaux :D
TimToady --> Utah 14:04
lizmat Utah or Bust!
safe travels, TimToady!
jnthn o/ 14:05
TimToady wants to have the GLR done before Christmas
jnthn TimToady: Safe travels...and rather you than me on the temperature ;?
;)
TimToady wants to have the GLR done last week :)
it's actually quite cool at the moment
jnthn TimToady: Well, for my part the good news is I'm done with China gig in a week, and the bad news is I'm taking a vacation in NZ in late Oct/early Nov. :) 14:06
PerlJam TimToady: just pop in your tardis and that'll be no problem.
TimToady Glo sez: car won't fit in tardis
jnthn TimToady: I'm hoping to have some tenous native array stuff in place ahead of the Austria meetup, so can factor that experience into things too :) 14:07
*tenuous
TimToady same for GLR, but we'll see
well, we'd better kick it down the road now that the sun is up... 14:08
catch y'all on the flip side &
jnthn o/
nwc10 clearly swap the car for a motorbike. They do fit in the Tardis 14:09
(however, I happen to know the car is the point of this trip, not the means to the end)
nine gtodd: strange. Seems to work just fine here. 14:20
dalek kudo-star-daily: 0d12599 | coke++ | log/ (15 files):
today (automated commit)
kudo-star-daily: 49a40c3 | coke++ | log/ (14 files):
today (automated commit)
rl6-roast-data: 79eb77f | coke++ | / (4 files):
today (automated commit)
gtodd nine: rebuilding everything to see what's up 14:25
jnthn leont: About adding methods and performance, a clarification is in order. If you do it at BEGIN time, then it's just as efficient as if they were declared in source code, pretty much. It's adding them after the class has been composed that is the issue. 14:36
j4jackj Hi there 14:36
leont So if I use BEGIN { ::?Class.HOW.add-method(...) } I'm ok? 14:37
hoelzro o/ #perl6 14:38
yoleaux 21 Sep 2014 19:20Z <raiph> hoelzro: I've added a comment following up on your bug reports at questhub.io/realm/perl/quest/52d6b...2b1a00007e
lizmat leont: yes, but what would be the point ? 14:41
leont In method directory() is negatable {}, I want it to automatically create a not-directory method too 14:43
jnthn leont: Yes, you're good if you do it inside the class body 14:51
leont: but please write an attribute trait :)
leont I'm trying to do that
jnthn So then it can be has $.attr is notted; or so :)
leont Well, an attribute isn't really appropriate in this case 14:52
j4jackj 6 or 5 for production use?
PerlJam j4jackj: yes. 14:53
:-)
j4jackj PerlJam: kek
jnthn leont: gist.github.com/jnthn/1b3903306db8ba5c8242 14:55
leont: Or a method version of it is gist.github.com/jnthn/acad3207544f40b72be9 14:56
jnthn (and to be clear, trait_mod is called by the compiler at compile time, so it counts as BEGIN) 14:59
leont Yeah, that much was obvious 15:00
jnthn :)
leont has to think about how to architect all of this, posting a p5 module to p6… 15:02
lizmat s/posting/porting ? 15:04
leont Yeah, that 15:07
lizmat leont++ 15:09
gtodd nine:ok working find .... I periodically need rm -rf ~/perl6 :-) 15:17
gtodd nine: to start fresh 15:18
Woodi_ hmm, just stating "X is bad for performance" scares users becouse so many unknowns there... someday a blogpost by someone with explanation how much sub-X feature costs could unscare future users. but in this case: I have no idea what is sane usecase for runtime-MOP/reflection :) 15:18
jnthn Woodi_: We're talking about MOP stuff, I think they're already scared :P 15:19
gtodd hehe 15:20
jnthn The general rule, though, is that if you're doing MOP stuff not at BEGIN time, you should probably be stopping to think a bit. :) 15:20
gtodd nine: hmm Inline::Perl5 was getting faster on simple little scripts I had but some just dropped from 5+ to 4 seconds ... I should rm -rf more often :) 15:22
brrt jnthn: with regards to your native array stuff... what will that be like?
yoleaux 19 Sep 2014 14:35Z <timotimo> brrt: when we have proper jit code production for invoking NativeCall stuff .. that could be super amazingly cool :)
19 Sep 2014 14:36Z <timotimo> brrt: i'm not sure if that'd end up super easy because we already have the code that emits regular calls to MVM_* functions, or if it's going to be harder because we have to be converting data types back and forth?
dalek ecs: 083a1a2 | (Elizabeth Mattijsen)++ | S16-io.pod:
First part of S16 rewrite

Features of IO::Spec, IO::Path and IO::Handle will follow
brrt timotimo: yes 15:23
lizmat cycling&
brrt \o
jnthn brrt: If I knew that, there'd be a lot more code by now ;-)
brrt :-)
jnthn brrt: Generally, though, I expect VMArray to evolve some, and container specs to evolve some...
brrt what about 'unprotected access into a block of bytes with various size possibilities' and leave it at that? 15:24
jnthn Unprotected? Urgh :)
brrt well... if that's not what you want, i hardl;y see how you can do much better than current MVMArray 15:24
jnthn What I *do* want to deal with is MVMArray's thread safety propreties 15:25
Or, uh, lack thereof... :)
brrt hmmmm
jnthn The other bit is fixed size stuff 15:26
brrt uhm, isn't it as a general rule that if you do concurrent access on an array you're just doing it wrong?
jnthn But that really wants to hang off at the type level
Maybe, but at the moment there are ways to Do It Wrong that crash the VM
That is unacceptable.
leont Great. Now it's segfaulting 15:27
jnthn leont: Um...how'd you get that?
leont Trying to reduce it… 15:28
jnthn Or..which conversation was that part of? The trait one, or the array one? :)
brrt: The important thing about fixed size is that knowing things won't get rezied ever should let us JIT much better than in the "it may get resized any time" case.
*resized
brrt hmmm 15:29
i see
jnthn brrt: So somehow that wants pushing to the type level, which is the level at which we specialize.
brrt that doesn't hang so easily on spesh right now
brrt nods
jnthn Spesh is all about types, so I think hanging it off that hook is the way to head... 15:30
On JITting things, though, one thing we don't do today in the JIT but we could is remove the REPR function indirections
For a list_i, for example, we know which C function we're going to be calling.
And could JIT a call directly to it rather than go through ->st->REPR 15:31
(I'm thinking of things like at_pos here)
brrt do we have a list_i instruction? or am i missing context 15:32
jnthn nqp::list_i() I mean
Which is a hlllist + create at MoarVM level
leont jnthn: I was accidentally using self in a sub (that used to me a !method) in a BEGIN block, and it segfaults
jnthn As in, we know the type, usually
leont: Urgh.
brrt ah i see
jnthn m: sub foo() { BEGIN say self }
camelia rakudo-moar 416969: OUTPUT«(Mu)␤===SORRY!=== Error while compiling /tmp/wWzjGu1Flg␤'self' used where no object is available␤at /tmp/wWzjGu1Flg:1␤------> sub foo() { BEGIN say ⏏self }␤ expecting any of:␤ argument list␤ …» 15:33
jnthn leont: It...should not even compile a use of self in a sub...
brrt yes, we can do that, at graph construction level even
i'd like even more to just emit a load from the specified address 15:34
jnthn leont: Can you give me a little more detail, so I can reproduce it
leont paste.scsys.co.uk/424968
jnthn brrt: Yes, that's desirable and one of the things I'm pondering too
std: say 'alive?' 15:35
camelia std fc92e1e: OUTPUT«ok 00:01 139m␤»
jnthn std: class Foo { sub x() { self } } 15:36
camelia std fc92e1e: OUTPUT«===SORRY!===␤'self' used where no object is available at /tmp/7zH7eXCxWr line 1:␤------> class Foo { sub x() { self⏏ } }␤Check failed␤FAILED 00:01 142m␤»
jnthn m: class Foo { sub x() { self } }
camelia rakudo-moar 416969: OUTPUT«===SORRY!=== Error while compiling /tmp/30bBKr0nOG␤'self' used where no object is available␤at /tmp/30bBKr0nOG:1␤------> class Foo { sub x() { ⏏self } }␤ expecting any of:␤ statement list␤ …»
jnthn m: class Foo { sub x() { self }; BEGIN { say 'I get here' } }
camelia rakudo-moar 416969: OUTPUT«I get here␤===SORRY!=== Error while compiling /tmp/Q5r71LXyes␤'self' used where no object is available␤at /tmp/Q5r71LXyes:1␤------> class Foo { sub x() { ⏏self }; BEGIN { say 'I get here' } }␤ expecting a…»
jnthn oh...it's a sorry, not a panic.
So we survive long enough to run the BEGIN block despite having semantic errors that should never compile... 15:37
brrt that's not possible with current MVMArray, basically because MVMArray does too much magic
leont The check must happen later
And because BEGIN, it's used before the check
brrt although just implementing the MVMArray algorithm in the JIT would help 15:38
but that would make it 'fixed'
jnthn leont: The check happens early enough, but because it can keep parsing, and it's usually helpful to present a few errors rather than dying on the first one, it just stores it up for later reporting.
leont Ah, I see
jnthn Plus, the VM really should not explode with SEGV
nqp-m: nqp::null().foo 15:39
camelia nqp-moarvm: OUTPUT«Cannot call method 'foo' on a null object␤ at /tmp/BDwYNeMDSJ:1 (<ephemeral file>:<mainline>:22)␤ from gen/moar/stage2/NQPHLL.nqp:1230 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/NQPHLL.moarvm:eval:172)␤ from gen/moar/stage2/NQPHLL.nqp:1423 (/home/p6e…»
jnthn nqp-m: nqp::null().HOW
camelia ( no output )
jnthn nqp-m: nqp::null().HOW.say
camelia nqp-moarvm: OUTPUT«Cannot find method 'say'␤ at /tmp/7wO1lHiwiv:1 (<ephemeral file>:<mainline>:24)␤ from gen/moar/stage2/NQPHLL.nqp:1230 (/home/p6eval/rakudo-inst-1/languages/nqp/lib/NQPHLL.moarvm:eval:172)␤ from gen/moar/stage2/NQPHLL.nqp:1423 (/home/p6eval/rakudo-inst-1…»
jnthn hmmm
hmmm 15:40
jnthn oops 15:40
jnthn grr, my moar build mises debug symbols...and it's really sleep time... 15:43
jnthn Will have a dig tomorrow 15:43
But reproduced here, anyway.
'night, all
dalek rl6-roast-data: d035101 | coke++ | / (4 files):
today (automated commit)
15:50
cognome r: sub html($tag, $text, *%attrs) { ... }; for <div span> { sub ::($_)($_, $text, *%attrs) { html($_, |%attrs }} 15:51
camelia rakudo-jvm 416969: OUTPUT«Can't call method "syswrite" on an undefined value at /home/p6eval/jvm-rakudo/eval-client.pl line 32.␤» 15:52
..rakudo-{parrot,moar} 416969: OUTPUT«===SORRY!===␤Name ::($_) is not compile-time known, and can not serve as a sub declaration␤»
cognome speaking of dynamically adding sub and methods, what is the proper way to do that? 15:52
And, related question, will CANDO be part of 6.0.0 ? 15:54
nine cognome: the first one was answered just a couple hours ago. You'll find the answer easily in the backlog. 16:02
cognome nine: you mean that? irclog.perlgeek.de/perl6/2014-09-22#i_9393842 "So if I use BEGIN { ::?Class.HOW.add-method(...) } I'm ok? " 16:05
cognome So, I rephrase my question, why the error message when the implementation could just call .^add_method ? 16:10
dalek rl6-roast-data: f8ca5dc | coke++ | bin/cull:
don't report on niecza & rakudo.jvm for now
16:21
rl6-roast-data: d3f60e2 | coke++ | perl6_pass_rates.csv:
We didn't actually run these; remove them.
cognome nine++ jnthn++ jnthn gists are helpful. 16:25
[Coke] defined(@array) is deprecated at t/spec/test_summary line 378. (Maybe you should just omit the defined()?) 16:42
A perl5 cleanup that could be done in roast.
[Coke] is there a way for us to tell java to NOT use multiple threads if it can avoid it? 16:59
trying to limit the resources used by rakudo.jvm on the test machine. 17:00
not_itz hmm it's stuck me perhaps Inline::Perl5 could be used to help port modules to P6 by treating already running unit tests (via Inline) as a target 17:22
[Coke] .ask diakopter - think I figured out the problem - can you up the swap space on host08 to match host07? (I can probably stumble my way through this if needed) 17:48
yoleaux [Coke]: I'll pass your message to diakopter.
[Coke] crap. java run gets much farther if camelia isn't also doing java things, but it looks like host08 maxed out on swap while I was looking away. trying to kill that run... 17:55
m: say 3 17:56
[Coke] anyone here currently logged into host08? 17:57
gtodd [Coke]: N of jvm threads get limited at OS level no? i.e. not with JVM. invocation ? I think those -X options are for size but not number 18:17
so maybe you have to tweak some ulimit or sysctl thing
[Coke] IME, using ulimit without configuring java just causes java to die when it exceeds the limits. 18:21
[Coke] I can't get into host08. Presumably the very low memory conditions will explode at some point. I imagine it's swapping to death right now. 18:21
gtodd there's java service runner things (written in java) that somehow supervise how java with "threadpools" but I know nothing ... only what I needed to know to run tomcat :-) 18:22
[Coke] playing with the perl 6 msi installer. the error message highlighting seems off. 18:40
gist.github.com/anonymous/df7936cd5cd09dc5a343 18:42
vendethiel [Coke]: windows highlighting ;) 18:44
gtodd (13:54:37) camelia left the room ... 18:55
??!
ingy vendethiel: you mentioned liquid type and some other typing. remember which? 18:56
vendethiel ingy: refinement types
ingy reads up 18:56
lizmat gtodd: host08 in trouble again
[Coke] host08 (camelia's host) is pretty dead; I can't login to kill anything.
vendethiel that's the name of the typing system liquid haskell uses :)
ingy refinement is? 18:57
Ven sub-properties of types 18:58
like perl6's `where`s
nine itz: sounds like a good idea 19:01
gtodd nine: with Inline::Perl5 and v5 etc. can one easily set up an isolated "local::lib" of perl5 modules ... 19:06
nine Coke: would access to a machine with ~ 7GiB of free RAM and 8 cores help you in some way? 19:09
dalek kudo/nom: 4e88d9d | (Elizabeth Mattijsen)++ | src/core/CompUnit.pm:
Simplify CompUnit construction
19:14
camelia rakudo-moar 416969: OUTPUT«3␤» 19:15
gtodd nine: with -I or does/will I::P5 grab things from my env (e.g. PERL5LIB) one day ? 19:16
nine gtodd: Inline::Perl5 should already behave like plain old perl. I know it supports PERL5LIB for example. 19:18
gtodd hmm ok trying to make a PP directory where I can stick known "works with I::P5" modules ... 19:20
brrt .tell jnthn that my interest in 'native' arrays is really cheap JIT access, and that i'd personally hapilly sacrifice safety for that
yoleaux brrt: I'll pass your message to jnthn.
nine gtodd: if a module doesn't work with Inline::Perl5, I'd like to know. That's considered a bug. 19:21
brrt .tell jnthn that i think it'll be possible to find a compromise :-)
yoleaux brrt: I'll pass your message to jnthn.
gtodd wow OK ... :-) I'll be more careful then :-) 19:22
nine: since I'm just trying to do stuff with oneliners -MPerl5 short scripts etc. 19:23
dalek kudo/nom: 0412f5f | (Elizabeth Mattijsen)++ | src/core/CompUnitRepo/Locally.pm:
Simplify CompUnitRepo::Locally construction
nine [Coke]: would access to a machine with ~ 7GiB of free RAM and 8 cores help you in some way? 19:26
[Coke] nine: sure, but this machine should be ok once we bubmp the swap. 19:32
stmuk? 19:33
nine stmuk?
[Coke] github.com/stmuk 19:34
itz thats me
nine [Coke]: well, my server is ridiculously overpowered since I only host some email, tiny websites and my jabber server there. So I'd be happy to share. 19:36
[Coke] itz: thank you very much for those tests in roast. I am going to try to move them to pre-existing files at some point, just fyi.
nine: I'm happy to give it a shot. Since I'm not doing timings or anything, it's not a big deal where I run. (what OS?) 19:37
itz coke: no worries .. I did wonder if they would be better like that
nine [Coke]: currently openSUSE 12.3 though I should probably upgrade to 13.1 soonish.
[Coke] do you know if those files got added to rakudo's t/spectest.data ?
dalek p/dyncall-macports: 20e6be9 | rurban++ | 3rdparty/dyncall/configure:
on MacPorts need to enforce system /usr/bin/libtool for -static

error message: libtool: unrecognized option `-static libtool: Try `libtool --help' for more information. because on macports libtool is taken from /opt/local/bin.
  -static is a xcode-only aberation.
19:38
itz [Coke]: probably not
PerlJam nine: If you start handing out accounts for Perl 6 stuff, you need to give your server a neat, Perl6ian themed name :)
itz domain squat perl6 names now and beat the coming rush :) 19:52
tadzik . o O ( Deep Space Six ) 20:13
itz . o O ( the Joy of Six ) 20:18
huf six six six... 20:18
that's all you youngsters think about these days
vendethiel haha
gtodd nine: not sure what happened since I::P5 was working fine 20:23
now I consistently get 'Unhandled exception: Cannot locate native library ' ...' mstly likley something to do with clang vs gcc etc 20:24
nine gtodd: I see I use gcc in Makefile.in. Could you try chaning that to your compiler and see if it fixes your problem? 20:25
gtodd nine: didn't work prove -e 'perl6 -Ilib' t 20:33
t/call.t .................. Cannot locate native library 'lib/Inline/p5helper.so'
and on down the line int the tests ... I can't be sure it worked on this machine and now doesn't so ignore noise for now 20:34
nine Did you compile your libperl.so with clang?
gtodd yes
will keep my eye oneit 20:36
on it
nine Compiling with the wrong compiler results in some failed tests but no 'Cannot locate' message
Though I've seen this message many times during development when I had an error in my C code. 20:37
gtodd ok
carlin the times I've stuck NativeCall saying it can't find the library (when the file exists) it's because something wasn't compiled properly, eg. missing a -shared compile flag etc. 20:53
lizmat m: say ".c".pred # expected ".b" 21:28
camelia rakudo-moar 0412f5: OUTPUT«Decrement out of range␤ in method gist at src/gen/m-CORE.setting:13628␤ in sub say at src/gen/m-CORE.setting:15445␤ in block <unit> at /tmp/hQOAyqXxIW:1␤␤»
lizmat p: say ".c".pred # expected ".b"
camelia rakudo-parrot 0412f5: OUTPUT«Decrement out of range␤ in method gist at gen/parrot/CORE.setting:13567␤ in method gist at gen/parrot/CORE.setting:1142␤ in sub say at gen/parrot/CORE.setting:15327␤ in sub say at gen/parrot/CORE.setting:15323␤ in block <unit> at /tmp/9ERS…»
lizmat m: say ".c".succ # seems to work 21:29
camelia rakudo-moar 0412f5: OUTPUT«.c␤»
lizmat hmmm... it doesn't die
dalek ecs: e1d9ceb | (Elizabeth Mattijsen)++ | S16-io.pod:
Final part of S16 rewrite

S32/IO to follow soon.
22:08
lizmat and on that thought, good night #pelr6! 22:09
timotimo gnite lizmat :)