»ö« 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.
00:12 Psyche^ joined 00:16 Psyche^_ left 00:27 dmol left 00:45 xenoterracide left 00:47 xenoterracide joined
colomon woolfy: that's "our" Reini Urban? 00:51
00:53 xenoterracide left, xenoterracide joined
colomon is having trouble of thinking of anyone he knows who has been played by someone else in an IMDB credit. 00:57
01:06 Rotwang left 01:10 xenoterracide left 01:11 djanatyn joined 01:30 ssutch joined 01:31 sizz_ left 01:34 sizz joined 01:36 BenGoldberg joined 01:40 [Sno] left 01:41 [Sno] joined, [Sno] left 01:42 [Sno] joined 01:43 emma left 01:45 SHODAN left, SevenWolf joined
BenGoldberg r: constant a = a; say a 01:55
camelia rakudo-jvm 882e33: OUTPUT«===SORRY!===␤java.lang.NullPointerException␤»
..rakudo-parrot f48531: OUTPUT«===SORRY!===␤Could not find sub &a␤»
01:55 benabik left 01:56 benabik joined 01:58 raiph left
BenGoldberg r: my $foo ($bar); say $foo, $bar; $bar = 1; 01:58
camelia rakudo-parrot f48531: OUTPUT«(signal SEGV)(Any)(Mu)␤»
..rakudo-jvm 882e33: OUTPUT«(Any)(Mu)␤java.lang.NullPointerException␤ in block at /tmp/fP90LeZ_hb:1␤ in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤ in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤ in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤ in any comma…»
BenGoldberg n: constant a = a; say a 01:59
camelia niecza v24-98-g473bd20: OUTPUT«(Any)␤»
BenGoldberg n: constant a = b; constant b = a; say a
camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object␤ at Niecza.StashCursor.Core (System.String key, Boolean final, Niecza.StashCursor& sc, Niecza.Variable& v, Niecza.Variable bind_to) [0x00000] in…»
02:04 panchiniak_ left 02:24 SimonFelix joined, SimonFelix left 02:25 SevenWolf left 02:43 kurahaupo left 03:01 ingy^ left 03:06 araujo left 03:07 araujo joined 03:10 colomon left 03:18 colomon joined 03:30 xenoterracide joined 03:41 xenoterracide left 03:48 ssutch left 03:50 ssutch joined 03:54 ingy^ joined 04:00 davecc left 04:22 preflex_ joined, ChanServ sets mode: +v preflex_ 04:23 preflex left, preflex_ is now known as preflex 04:39 araujo left 05:14 logie_ left 05:46 aindilis joined 05:49 berekuk joined, kaare_ joined 05:52 nnunley left 06:00 berekuk left 06:07 ingy^ left 06:14 FROGGS left 06:20 logie joined 06:25 logie left 06:38 darutoko joined 06:39 berekuk joined 06:53 REPLeffect left 06:56 tobyink joined 07:00 BenGoldberg left 07:07 berekuk left 07:15 berekuk joined, REPLeffect joined 07:25 berekuk left 07:26 pernatiy joined 07:29 berekuk joined 07:32 tobyink left 07:39 berekuk left, araujo joined, araujo left, araujo joined
moritz good morning 07:40
moritz wonders if the perl 6 test files for Plan 9 started with use Test; plan 9; 07:41
07:42 berekuk joined 07:43 FROGGS joined
dalek kudo/sized-arrays: 8ef25d7 | Arcterus++ | src/core/Array.pm:
Fixed lazy list regression
07:44
kudo/sized-arrays: bd8c9f7 | (Tobias Leich)++ | src/core/Array.pm:
Merge pull request #227 from Arcterus/regressions

Fixed lazy list regression
Heuristic branch merge: pushed 23 commits to rakudo/sized-arrays by FROGGS 07:47
07:59 SHODAN joined 08:07 berekuk left 08:08 berekuk joined
timotimo o/ 08:13
moritz: the tests i wrote already have one failure and i'm not exactly sure how to make it better. maybe my "new" method is wrong?
could it be that we need to have a 0 in there always?
or maybe low has to start out 0? 08:14
er, -1 i mean
FROGGS morning
timotimo morning froggs
moritz timotimo: the test just assumed wrong things about _find_pos 08:17
timotimo moritz: because if the list only has the range 10-20 in it, the list is [10, 20] and if i have a 10 in there, the result would be 0 (because 10 is the first element >= 10), but if $low starts out 0, it will return 0 for lower values like 5
that's good to know
i have a local implementation of "contains" that does the same. what should it look like instead?
08:17 dansamo joined
timotimo ah, you committed! 08:18
very well :)
moritz timotimo: I've pushed an implementation of contains
08:18 johnny5_ left
timotimo nqp: say(1 +& 1) 08:19
08:19 berekuk left
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«1␤» 08:19
timotimo didn't know nqp had this! cool
moritz huh, still seems wrong
08:20 johnny5_ joined
moritz "make add_range accept inclusive ranges" 08:20
I think that commit was wrong
08:21 berekuk joined
moritz I've just tried Set::IntSpan::Fast::PP with ->add_range(10, 20), and it puts 10, 21 into the list 08:21
oh dammit, _iterate_ranges adds +1 to the second argument 08:22
timotimo %)
moritz nqp: my $x := 42; say(--$x); 08:26
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«41␤»
moritz nqp: my $x := 42; say($x++); say($x) 08:27
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«42␤43␤»
moritz ok, add_range fixed 08:28
timotimo it has to add +2 now? :)
moritz aye
timotimo all right 08:29
moritz one becase the upper range is excluse
*exclusive
and one because _find_pos searches for >=, not >
timotimo aye
so, will this datastructure likely get nqp ops or do we have to emit a huge amount of code in the regex compiler to use it? 08:30
08:31 denis_boyun joined, berekuk left
FROGGS wait what... since when can we do $x++ in nqp? 08:31
rp: my int $x = 42; $x++; say $x 08:32
camelia rakudo-parrot f48531: OUTPUT«Cannot modify an immutable value␤ in sub postfix:<++> at gen/parrot/CORE.setting:4276␤ in sub postfix:<++> at gen/parrot/CORE.setting:1739␤ in block at /tmp/c_d6m5L1Zn:1␤ in any at /tmp/c_d6m5L1Zn:1␤ in any at gen/parrot/stage2/NQPHLL.n…»
FROGGS ahh
nvm
08:32 dansamo left 08:39 denis_boyun left
dalek kudo/nom: 2353ef3 | (Tobias Leich)++ | / (2 files):
update gitignore files for moarvm
08:42
kudo/moar-support: f485315 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ (5 files):
Migrate cue_with_catch to cue(:&catch)

Also some left-behind schedule_* fixes. Unfortunately, specifying a :catch() currently blows up:
Unhandled exception: Method 'postcircumfix:<( )>' not found for invocant of class 'Scalar'
   in (gen/jvm/BOOTSTRAP.nqp:1675)
Will look at this tomorrow, unless someone else beats me to this
08:45
kudo/moar-support: 2353ef3 | (Tobias Leich)++ | / (2 files):
update gitignore files for moarvm
kudo/moar-support: 30f255a | (Tobias Leich)++ | / (7 files):
merged nom into moar-support
timotimo huh, wrong branch? 08:46
FROGGS sort of, yeah :/ 08:48
well, maybe not 08:49
this way we don't add *.moarvm files to nom, and moar-support should be up-to-date with nom anyway
08:53 cognominal joined
timotimo i meant the cue :&catch thing 08:53
FROGGS that is what I mean by moar-support should be up-to-date with nom 08:55
08:56 isBEKaml joined
lizmat good *, #perl6! 09:00
thought a lot about .cue last night
dalek kudo/nom: 52807db | (Tobias Leich)++ | src/core/Temporal.pm:
small **0..1->? optimization, saves an array
moritz \o lizmat, *
FROGGS morning lizmat
lizmat and I've come to the conclusion that the method should be named "task" 09:01
1. because it is both a noun *and* a verb
2. it describes that something else should be doing it
FROGGS .oO( a norb? )
lizmat 3. no more audio confusion between .cure and queue 09:02
09:02 aindilis left
lizmat 4. it's longer 09:02
FROGGS .cue is a noun and a verb too
09:02 aindilis joined 09:03 tobyink joined, isBEKaml left
FROGGS and if my translator works, 2) is invalid, .cue says too that somebody else should do it 09:04
lizmat .cue describes less *what* should be done 09:05
e.g. a cue could be a doorbell ringing
an actor could react to this by hiding him/herself, hiding some goods, or just open the door 09:06
FROGGS hehe
lizmat the cue itself (the doorbell ringing) doesn't necessarily describe the action that follows
itz I think I've managed to fix the submodules in star sha1 issue using "git submodule sync"
FROGGS that would be a nice API where an object hides because a bell rang 09:07
as I understand .cue talks more about when something needs to be done
lizmat anyway, task only appears twice in the spec so far, as a general term 09:08
FROGGS itz++
09:18 berekuk joined 09:28 berekuk left 09:34 berekuk joined 09:36 johnny5_ left 09:37 johnny5_ joined
dalek kudo/nom: 00a781f | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for <deflongname>
09:38
masak the noun: "A signal, such as a word or action, used to prompt another event in a performance, such as an actor's speech or entrance, a change in lighting, or a sound effect." 09:39
the verb: "To give a cue to; signal or prompt."
dalek kudo/nom: d63e0e2 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ThreadPoolScheduler.pm:
Fix for all but one of the concurrency tests

But it shouldn't have made a difference (I don't think) :-(
masak that is, you can "give a cue to [do some thing]"
or, shorter, "cue [the doing of something]" 09:40
lizmat again, but the cue doesn't necessarily describe what needs to be done
masak my point is that it does.
lizmat ah?
doorbell rings
masak you're right insofar as the *cue* itself (the noun) is another thing.
lizmat that's a cue
masak yes. right.
lizmat what needs to be done? 09:41
masak .cue(&the-thing-that-needs-to-be-done)
FROGGS using it as a verb implies that all know what needs to be done
masak this is a perfectly valid use of the *verb* "cue".
lizmat is, however, correct in pointing out that the *noun* "cue" is a different thing, unrelated to what needs to be done. 09:42
the method name, however, is a verb, not a noun.
having said all that, I'm not very happy about .cue, and wouldn't mind it being replaced by something... more standardized. 09:43
.schedule was perfectly cromulent in my eyes.
lizmat so what's wrong with "task" ? 09:44
masak nothing much wrong with "task". 09:45
but I think what speaks strongly for .schedule is (a) it's already used for exactly that purpose in other languages and libraries, and (b) it makes sense that a Scheduler schedules things. it's more of a stretch to explain why it tasks things. 09:46
moritz +1 to schedule 09:47
masak (b) also applies to .cue, by the way.
dammit Jim, it's a Scheduler, not a Cuer!
lizmat method/scheduleAtFixedRate/(Ljava/util/TimerTask 09:48
masak I do like the different schedule_* methods being unified into one with nameds. we can keep that :)
lizmat: right. you .schedule a $task
lizmat the code in the JVM executed :-)
masak you do not .task a $task
lizmat actually, you do
I can task you to take care of something
masak right. of course. it works, linguistically. 09:49
but see (b)
moritz also I'm a bit concerned about all the "cute" method names that are very different from what is usually used
masak .oO( you think it's "cue" today )
moritz: yes, me too.
moritz: it's the Mu objection all over again. there's a design cost to being different just for the sake of it. 09:50
moritz and one of the objections against 'Object' was that it's very long as a replacement for 'undef' 09:51
but these days we mostly use Any anyway
masak we should focus on making awesome APIs, not defending excellent choices of words against the grain of the rest of programmer-dom.
lizmat breakfast with pancakes! &
moritz had breakfast with cake already :-)
timotimo birthday cake? 09:52
masak .oO( .cue the @pancakes! no wait, .schedule the @panca... .task the @p... )
moritz: whose birthday? :D
or was it just a "yay it's Sunday!" cake...? :)
moritz masak: no birthday :-). We had visitors yesterday, and I made some cake
09:52 berekuk left
masak moritz++ # cake 09:53
moritz loves to cake 09:55
timotimo cake a bake 09:57
masak .oO( the cake is a lion ) 09:58
10:02 tobyink left
dalek ecs/rename-cue-back-to-schedule: 2d4192d | masak++ | S17-concurrency.pod:
rename 'cue' back to 'schedule'
10:04
masak I just pushed a new branch to the 'specs' repo. see above.
in making that commit, I think I uncovered why TimToady made this particular choice: he wanted to talk about "scheduled things" in the paragraph that begins "This returns, in order..." 10:05
and found "scheduled things" to be clunky/anemic, and started hunting for something that's both verb-y and noun-y. 10:06
I still stand by my opinion that .schedule is better in many ways.
I recommend merging the above branch into master, but I'd love to get a second opinion on that, too. 10:07
moritz you already have a second opinion -) 10:08
10:12 tobyink joined
dalek kudo/nom: 5cfc4a4 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for <twigil>
10:12
moritz FROGGS++ 10:16
FROGGS :o) 10:17
10:25 johnny5_ left 10:27 johnny5_ joined, johnny5_ left 10:29 dmol joined, johnny5_ joined 10:30 ssutch left 10:34 dmol left
dalek kudo/nom: 57fefc9 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? in <morename>
10:36
10:37 cognominal left 10:38 tobyink left
jnthn I'd like ot hear TimToady's take, but +1 to going back to "schedule" from me. It's not something where we really need to huffmanize a name, and a $*SCHEDULER does, well, schedule things, most obviously :) 10:57
dalek kudo/nom: 7f68890 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for <statement_mod_[cond|loop]>
lizmat fwiw, I'm slightly more for task, but could live with schedule 10:58
most of the changes in that area where merging the _in, _every, _with catch variants anyway 10:59
dalek kudo/nom: 56cde80 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ThreadPoolScheduler.pm:
Slightly different approach to fixing :catch
11:00
lizmat jnthn: could you please have a look at src/vm/jvm/core/ThreadPoolScheduler.pm, line 60 and following 11:01
it still doesn't do the catch :-( 11:02
and I have run out of ideas as to why
11:02 Rotwang joined
jnthn # just cue the code 11:04
else {
This branch doesn't do anything with the catch
It doesn't use the $hash 11:05
oh, wait, the branhc above is meant to do t
lizmat that's why there is a or &catch in the elseif before
jnthn but...that's weird
lizmat you mean, calling it with a delay of 0 11:06
jnthn yeah
That doesn't run it on one of the normal pool threads
lizmat ok, I'll try to make that different then
jnthn The way I'd do it is take &code is copy 11:07
lizmat gotcha
jnthn And then if &catch { &code = { CATCH { default { catch($_) } }; code(); }
Or similar 11:08
lizmat would that not recurse ?
it would use the old value of &code ?
jnthn oops, yes
lizmat ok, so no is copy then :-)
jnthn Right, just make a $what_to_call or something :)
lizmat gotcha 11:10
11:11 spider-mario joined 11:19 tobyink joined
woolfy task... cue... hint! duty!! job!!! chore!!!! 11:19
According to Barron's Business Guide Dictionary of Computer and Internet Terms, "task" is "A process, one of several computer programs that are executing concurrently" 11:20
A "cue" is "(in animation and presentation programs) an embedded code that specifies when an action is to occur" 11:21
(a job is mentioned in correlation to batch processing, hinting refers to stuff with fonts, and chore is mentioned nowhere in Barron's) 11:23
Hmmm? 11:24
dalek kudo/nom: bd13550 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ThreadPoolScheduler.pm:
Fix :catch, thanks jnthn++ for another set of eyes
11:26
lizmat jnthn++ that fixed the last remaining test, but I guess that does not bode well for :in/:at/:every in combination with :catch
writing tests for that now
dalek ast: eb2a45c | (Elizabeth Mattijsen)++ | S17-concurrency/scheduler.t:
Transfmogrify cue_with_catch and add :in/:at tests
11:29
11:31 dmol joined
lizmat actually, another reason to use ".task" is that it could return a Task object 11:36
doesn't feel right to have .cue return a Cued object, or .schedule return a .Scheduled object 11:37
linguistically, of course :-)
11:39 denis_boyun joined
jnthn Well, what you're really getting back I suspect is a Canceller or some such 11:40
timotimo Ripcord
jnthn Harpsicord? 11:41
lizmat an object that you can use to see if it's still running or not as well?
maybe we need to wrap it in wood and call it a piano ?
timotimo moritz: there are still many off-by-ones left to handle :P
er, actually, no 11:42
timotimo patches the copy method to actually make a copy
jnthn lizmat: Maybe, but then people will probably write stuff like if $thing.not_run_yet { $thing.cancel }, when we want them to just $thing.try_cancel. 11:43
'cus asking if you can before doing is a big no-no in concurrent programming.
lizmat I was more thinking as a debugging tool, actually
but yes, got your point
jnthn Ah, for debugging I was thinking more scheduler introspection
Kinda like a "loads" that gives a snapshot of everything 11:44
lizmat ah, ok 11:45
timotimo moritz: i pushed new tests and a small amount of fixes 11:46
11:47 berekuk joined
dalek ast: a36fd9f | (Elizabeth Mattijsen)++ | S17-concurrency/scheduler.t:
Add some more :catch related tests
11:54
11:54 rindolf joined
dalek kudo/nom: 0c4aa93 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for <longname>
11:57
12:09 xenoterracide joined
dalek kudo/nom: 5ee24e6 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for statement_control:sym<if> and <loop>
12:12
12:13 atroxaper joined
atroxaper Hello #perl6 12:14
woolfy Hello atroxaper
atroxaper Guys, do you know how can i parse some code writen on perl6 by Perl6::Grammar of Rakudo? 12:15
Hello woolfy
timotimo you can use nqp::getcomp to get the Perl6::Compiler object and use its .parse method 12:16
it will give you back the qast, not a match object, though
FROGGS atroxaper: search the irc logs a bit, we had this just some days ago
atroxaper Wow. I'm going to try in. Thank you, timotimo! 12:17
FROGGS search for Perl6::Grammar.parse or so
atroxaper Ok, FROGGS, thank you.
12:18 rindolf left, rindolf joined
dalek kudo/nom: 99c10e2 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for <multisig>
12:24
kudo/nom: afd2c56 | (Elizabeth Mattijsen)++ | src/Perl6/Actions.nqp:
Fix for #120501: my &a; say &a # Callable not Any
12:28
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120501
dalek ast: dfd5d4a | (Elizabeth Mattijsen)++ | S04-declarations/my.t:
Fix test for fix of #120501: (my &).say # Callable
12:29
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120501
timotimo FROGGS: a clue how these changes change parsing performance?
FROGGS timotimo: no visible changes
timotimo that's what i feared :( 12:30
lizmat away for a bit&
FROGGS maybe one with less RAM will see a difference, or with other code...
12:32 rindolf left 12:33 rindolf joined 12:35 sahadev left
dalek kudo/nom: ba14c95 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for <signature>
12:37
masak .oO( Canceller Palpatine )
FROGGS damn, wrong commit msg -.- 12:39
dalek ar: c84c728 | moritz++ | modules/ (8 files):
update submodule revisions
12:40
12:42 tobyink left 12:43 tobyink joined
moritz idly wonders if he should fake up a rakudo and nqp release locally to be able to properly test start 12:44
12:50 rindolf left 12:51 rindolf joined 12:56 colomon left
dalek kudo/nom: 2d77717 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for <signature>

  (The commit before this one was for <initializer>.)
12:58
12:59 colomon joined 13:01 tobyink left 13:02 denis_boyun left
timotimo hm, what exciting things are going into the new rakudo release? 13:04
there's concurrency changes & implementation in store for the jvm part, that much i know
mokudo isn't quite there yet :(
oh, cool, the sigspace change is for this month's release 13:05
and the currying changes, too
13:06 rindolf left, rindolf joined
FROGGS timotimo: sort of funny to read that :P github.com/rakudo/rakudo/blob/nom/...ce/2009-02 13:12
13:17 rindolf left, rjbs left 13:20 pernatiy left
dalek kudo/nom: 8380951 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? in statement_control:sym<require>
13:21
13:23 benabik left
timotimo hah 13:33
13:40 isBEKaml joined
masak interesting py2-to-py3 retrospective: www.dropbox.com/s/83ppa5iykqmr14z/...s2013.pptx 13:46
(by guido) 13:47
is it just me, or does it feel like Python had less reason than Perl 5 to do a backwards-incompatible new major version? 13:48
(I don't know how to say that in a way that isn't guaranteed to upset some Perl 5 people, sorry)
FROGGS masak: my feeling is that the way they did is seems unreasonable to me... either you make (almost) no breaking changes, or you go the Perl6 way 13:50
standing somewhere in the middle-left is just weird
masak agreed. 13:51
but it *does* take less time. :P
(and yet Guido writes "Expect another 5 years")
FROGGS I mean, I understand that somebody does not want to take this 10-years-and-ongoing trip
pdurbin Python people are probably more bothered by warts than Perl people 13:52
FROGGS masak: that is why our 2009-02 announcement is that funny... it is soo awesome where we are now (already?!)
pdurbin: depends on the hacker's age perhaps?
jnthn The "performance" slide is interesting too :) 13:54
nwc10 masak: I don't think it's just you, but it might just be 2 of us (and I'm an outsider, not a Python user) but from the outside, Python 2 (at least, 2.6 and 2.7) seem to be cleaner and saner languages than Perl 5
isBEKaml yeah, performance - say we start bad and then even out later. :-) 13:55
masak nwc10: agreed.
nwc10 jnthn: yes - I had thought that 3.1 fixed most of the 3.0 suckage such that it was "good enough" but Guido seems to be saying that it wasn't really good enough
masak he's honest about the things that didn't turn out great.
nwc10 I don't want to wait (another) 5 years to find out if that "halfway" is accurate 13:56
masak no-one wants to wait for anything. 13:57
pdurbin masak: yeah and stuff like multi-line lambdas that still aren't fixed
moritz somehow libreoffice butchers his slides
inserting ligatures in code examples
masak as does Chrome.
moritz so maybe the slides are to blame, not libreoffice :-) 13:58
isBEKaml yeah, I thought I was the only one. Too much misalignment.
It's ironically the unicode slide that's worst on my screen. :-) 13:59
moritz same here
moritz has a totally unrelated and 90% off-topic question
pdurbin heh
moritz do you know any template systems that are optimized for code reuse?
nwc10 moritz: fails on my machine too. The font picked is too large 14:00
moritz many web applications largely consists of some sorts of objects
masak moritz: template system as in HTML template system?
moritz masak: yes
like blog posts, comments, profile pages etc.
masak could you be more specific about "code reuse"? I always liked inclusion mechanisms, for example. 14:01
moritz so I usually want some form of detailed view, and a short view that is a link to detailed view (for example just title + author of a blog post)
so, I could write an include thingy for turning a blog post object into a link
and one for an author object
and so on
and if I'm ever at the point where something could be any object, I have to do a huge switch statement to determine which include to use 14:02
nwc10 I can quite understand why the Python core devs wanted once and for all to clean up the warts that had accumulated
it seems that everyone underestimated how hard it is to migrate an ecosystem
moritz and it galls be, because we have a perfectly fine solution for that problem outside of templates: objects, polymorphism, method cals 14:03
*calls
masak moritz: I don't know anything like what you describe, but it sounds like something that would be interesting to prototype.
moritz but so far I haven't come across a template system that actually encourages me to write something like "frontend objects", which know how to turn a blog post into a short representation + link
masak moritz: in some sense, it sounds like something that heads partway down the road of a Rails/Django-like object system. 14:04
"frontend objects", also known as "[REST] resources".
moritz and a very easy solution would be to stick those methods into the actual backend objects 14:05
but that's just plain bad design etc.
masak: sounds about right
masak: do you happen to have any good resources on them for me? 14:06
14:07 rjbs joined
moritz googling for 'frontend objects' is pretty disappointing 14:08
nwc10 Is there any way to measure "Community is excited" or is that just a value-free phrase?
14:09 rjbs left
masak moritz: something like en.wikipedia.org/wiki/Representati..._interface seems like a good start. 14:09
14:09 rjbs joined
FROGGS in Perl6::Grammar I have something like: [ <?[[]> '[' ~ ']' <arglist> ]? 14:09
masak nwc10: some things are measurable, such as different kinds of contribution. 14:10
pdurbin nwc10: I do like the sound of "we're halfway through" ... sounds like great progress
FROGGS and $<arglist> seems to be an RPMCA... ould that be?
masak nwc10: but yeah, it also sounds like wishful thinking.
FROGGS jnthn: ? 14:11
moritz masak: takk
masak moritz: but maybe taking a look at docs.djangoproject.com/en/1.6/intro/tutorial01/ would be more informative. 14:12
moritz: suggest skimming, keeping on the lookout for ideas that sound like what you wanted.
nwc10 pdurbin: "halfway through" definately sounds great, but I find it very hard to actually find metrics to *measure* this
pdurbin nwc10: "won't be nothin' you can't measure anymore" -- leonard cohen ;) 14:13
nwc10 and that other talk it references is 14:15
speakerdeck.com/pyconslides/python...ett-cannon -- In this talk I will try to convince you that Python 3.3 is superior to Python 2.7 by going over the differences between Python 2.7 and Python 3.3 along with benchmark information to show where Python 3.3 shines in comparison to Python 2.7 (and vice-versa). If I accomplish my goal, you will walk out of this talk convinced that Python 2.7 is no
jnthn FROGGS: I'm prettty sure the ? should no longer cause that
nwc10 So why isn't Python 3.3 self-evidently better? Why do people need convincing?
FROGGS nqp-p: grammar G { rule TOP { [ '(' ~ ')' <ident> ]? } }; class A { method TOP($/) { say($<ident>.hurz) } }; G.parse( "(abc)", :actions(A.new) )
camelia nqp-parrot: OUTPUT«Method 'hurz' not found for invocant of class 'NQPMatch'␤current instr.: 'TOP' pc 872 ((file unknown):311) (/tmp/SaALwwLDZB:1)␤»
FROGGS jnthn: I know... but still it bails out on my box... (with a modified rakudo) 14:16
nwc10 (to be fair, I think that that's more "need convincing to *migrate*", not "need convincing that it's better"
)
but, also, I have no way to prove that hunch.
FROGGS jnthn: I am unable to spot the error :/
nwc10 anyway, dogs don't walk themselves (or, more strictly, they still believe that this is how the world works)... 14:17
masak nwc10: it can be better without being *significantly* better so as to make it worth migrating.
moritz nwc10: there is no such thing as "self-evidently better" for things as complex as programming languages 14:19
masak +1 14:21
FROGGS HAHAHA 14:22
jnthn
.oO( Is LOLCODE better than bf? )
masak .oO( there is no such thing as "self-evidently butter" for things as complex as long-chained lipids )
diakopter "need convincing" can just mean they're skeptical for indirect reasons, not that they believe differently already
FROGGS nqp-p: grammar G { rule TOP { <ident>? <ident>? } }; class A { method TOP($/) { say($<ident>.hurz) } }; G.parse( "[abc]", :actions(A.new) ) 14:23
camelia nqp-parrot: OUTPUT«Method 'hurz' not found for invocant of class 'ResizablePMCArray'␤current instr.: 'TOP' pc 678 ((file unknown):263) (/tmp/FwyRa9Fbvy:1)␤»
FROGGS jnthn: I tripped over that one ...............^
jnthn FROGGS: oh :)
isBEKaml jnthn: what jvm settings do you use for compiling nqp and rakudo on your machine? 14:24
jnthn: setting min and max heap to be 1 and 2G with a sufficiently high stack space of 128m all failed with PermGen error in building. :-) 14:25
jnthn isBEKaml: Just default ones here..
isBEKaml: What version of JVM have you?
isBEKaml jnthn: jdk 7 latest.
jnthn Weird... 14:26
FROGGS jnthn: it wasn't that obvious in token typename as my example
timotimo the kerning in that pdf slides file is super b0rked :( 14:27
what is a .pptx
lol
isBEKaml jnthn: can you do one thing, please? 14:28
jnthn: pass in -XshowSettings:vm in your java invocation in Makefile?
14:28 cibs joined
isBEKaml jnthn: that would give us what settings is actually passed into your jvm. 14:29
14:30 sqirrel joined 14:31 cibs left 14:33 cibs joined
isBEKaml jnthn: No hurry, please post this information when you find the time - this is what I mean: gist.github.com/anonymous/7398976 # note the extra -X flag, that's where my build fails. 14:34
pdurbin it's news to me that there will never be a Python 2.8 release. very different than Perl, where both 5 and 6 are advancing 14:36
"core developers all on board" :)
masak pdurbin: think of that as Python 2/3 never having "fractured" into two subcommunities like Perl 5/6 did. 14:37
14:37 broquaint left
pdurbin masak: somehow I imagined that maybe the same devs would work on both Python 2.x and Python 3.x (new features, I mean) 14:38
14:38 broquaint joined, cibs_ joined 14:39 cibs left
masak pdurbin: well, Guido is benovelently dictating both 2.x and 3.x 14:39
pdurbin: Larry less so with 5.1x these days.
pdurbin yeah, that sounds right 14:40
masak pdurbin: but even in the Python world, I get the feeling that it takes a fair bit of "convincing" of the "we're not going to make any more 2.x" kind to haul people over the major version gap.
moritz masak: actually perl 5.2x is being prepared these days :-)
dalek kudo/nom: 783666c | (Tobias Leich)++ | src/Perl6/ (3 files):
**0..1 => ? about <typename>
14:41
masak moritz: last I heard, Larry is not dictating that one either much :)
instead, it's pumpkings all the way down.
14:41 isBEKaml left
moritz pdurbin: I pasted my output as a comment on Max. Heap Size (Estimated): 855.12M 14:42
Ergonomics Machine Class: server
Using VM: OpenJDK 64-Bit Server VM
args, copy&pasta fail :-)
gist.github.com/anonymous/7398976 is what I meant :-) 14:43
dalek ecs: 8a85b31 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Some punctuation
pdurbin moritz: cool. yeah, I'm hoping to try Perl 6 on the JVM some day 14:44
14:47 ajr joined, ajr is now known as Guest10997
timotimo moritz: did you see the fail my test brought to light? 14:47
14:47 Guest10997 is now known as ajr_
moritz timotimo: not yet 14:48
moritz pulls 14:49
pdurbin a few weeks ago at JavaOne, four new languages on the JVM (ceylon-lang.org www.mirah.org kotlin.jetbrains.org en.wikipedia.org/wiki/Frege_%28prog...anguage%29 ) were presented (The Emerging Languages Bowl: The Quest to Be in the Big Leagues [CON4892] oracleus.activeevents.com/2013/con...ON_ID=4892 ). It would have been cool to hear about a 14:54
fifth... Perl 6! :)
14:55 ajr_ left 14:57 raiph joined, ajr_ joined 15:00 denis_boyun joined 15:01 ajr_ left
moritz timotimo: yes, seems to be an offby1 error somewhere 15:03
15:03 ajr_ joined 15:12 sqirrel left 15:15 tgt joined
timotimo that's what i figured :) 15:24
timotimo writes some more tests 15:25
15:36 raiph left, BenGoldberg joined
nwc10 it's quite old "news" that there will never be a Python 2.8: www.python.org/dev/peps/pep-0404/ 15:36
moritz
.oO( requests for python 2.8 will always return a 404 )
15:37
nwc10 also, that "5 years" might be quite optimistic, as IIRC the new RHEL appears at now-ish (give or take a few months), and on that /usr/bin/python will be 2.7, so there will be a fairly large installed base of Python 2.7 for the next decade 15:38
with "special biologist word" standard libraries (due to how Python doesn't do dual life) 15:39
15:39 nnunley joined
nwc10 standard libraries which some are already less than enamoured with: programming.oreilly.com/2013/10/dea...luded.html 15:39
(but you can't please everyone all of the time) 15:40
timotimo yeah, the python standard library is where code goes to die
it's pretty sad
moritz 15:41
dalek kudo-star-daily: 69955cc | coke++ | log/ (4 files):
today (automated commit)
15:43
kudo-star-daily: eee063d | coke++ | log/ (5 files):
today (automated commit)
rl6-roast-data: 606538e | coke++ | / (5 files):
today (automated commit)
nwc10 moritz: perl5.git.perl.org/perl.git/commit/...3097c75efe
oh, nothing is announcing that commit - Removed cpan/Text-Soundex
15:50 raiph joined
timotimo moritz: union seems buggy, look: # original 5, 11, 15, 21 15:51
# forwards union 5, 11, 15, 22
# backwards union 5, 12, 15, 21
that's the result of a) add_range 5,10 add_range 15,20 on the same IL, after that using two lists with only range 5,10 or 15,20 with the .union method
15:52 tobyink joined
moritz timotimo: again offby1 errors 15:52
nwc10: so how long did it take for Text::Soundex to die?
timotimo this off-by-one confuses me 15:53
if i add 1 to the first argument of add_range inside the merge, it's wrong, and if i add 1 to the second argument, it's wrong, too
ah, i need to subtract 1 from the second one and it makes tests pass 15:54
this fixed it apparently 15:55
moritz timotimo: please try to do it the same way as Set::IntSpan::Fast::PP 15:56
timotimo butbutbutbut TDD! 15:58
moritz nothing wrong with TDD
[Coke] wakes up
timotimo ah, it was the thing where iterate_ranges subtracts 1 from the $to
moritz just when you fix stuff, ask yourself how the original author did it right and we did it wrong :-)
timotimo we don't have iterate_ranges so we have to do it ourselves everywhere ;)
moritz it adds 1 to $to 15:59
it doesn't substract
timotimo my @r = ( $self->[$pos], $self->[ $pos + 1 ] - 1 );
that's the code
moritz oh, iterate_runs 16:00
ok
iterate_ranges adds one :-)
16:00 sqirrel joined
timotimo i typo'd it, i didn't know iterate_ranges exists 16:00
actually _iterate_ranges 16:01
interesting
do we have code to remove duplicated entries?
moritz I haven't added anything :-)
timotimo like when you add_range(10, 15); add_range(15, 20); it should just be 10,21, right? 16:02
16:02 denis_boyun left
moritz timotimo: yes, add_ranges is smart enough to do that 16:02
timotimo great. should i add tests for that?
moritz +1
pdurbin moritz: no confirmation on if 404 was picked on purpose: plus.google.com/115212051037621986...yj7PBEgwQ7 :) 16:03
16:03 raiph left, raiph joined
pdurbin nwc10: maybe "5 years" is for major Python projects to move over to 3.x... sounds like Django is making progress. But yeah, those projects won't be running on Python 3.x on stock RHEL unless Software Collections works out 16:06
dalek kudo/nom: b195c81 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for <capture>
japhb___ moritz: I haven't been in that biz for a while, but back in the day Mason (born HTML::Mason) was very nice in that every snippet, every template, every file was an object, and also code. Templates and files could have methods, inherit from each other, and so on.
timotimo looks good to me now 16:07
moritz timotimo++ 16:08
timotimo moritz: i like the way nagare does it. you have Components and a Component can have any amount of "models" and you can render a sub-component in your component and it'll render itself based on its own model
16:10 denisboyun joined
nwc10 moritz: quite a long time. But partly to get to a mechanism to evict things from the core, and partly to get to a consensus that a bunch of stuff doesn't really belong there 16:30
and "What stays vs what goes" doesn't seem to be a question that anyone (else) really wants to answer. Because there are a bunch of trade offs
nwc10 continues to fight printers 16:33
masak .oO( wtf does PC LOAD LETTER mean!? ) 16:34
16:35 jferrero joined, rindolf joined 16:36 jferrero is now known as JoaquinFerrero, beastd joined 16:37 pecastro left
dalek kudo/nom: bb0ad62 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for <param_var>
16:39
16:44 pecastro joined 16:45 denisboyun left 16:46 JoaquinFerrero left, jferrero joined 16:48 d^_^b left
dalek kudo/nom: ef9ceb5 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? for pir::op and nqp::op
16:49
16:49 d^_^b joined, d^_^b left, d^_^b joined 16:54 berekuk left 16:55 Ben_Goldberg joined 16:56 BenGoldberg left
dalek ecs: 71fd6d3 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Introduce $a (+=) 1 as sugar for cas $a, {$_ + 1}
16:58
timotimo oh, with parens? 16:59
lizmat It's just an idea
17:00 rindolf left
masak feels a bit too close to the Texas set ops, IMHO. 17:00
lizmat well, that was an inspiration, yes
17:00 rindolf joined
masak they're too different to look so much alike. 17:00
jnthn
.oO( Bra idea, men syntax e CAS... )
17:01
masak am I correct in assuming that the commit message should have said { $_ += 1 }
?
timotimo no, cas does the assignment 17:02
masak ah.
lizmat timotimo: indeed
masak yes, I see it now.
lizmat that's the whole idea
masak my mistake.
anyway, I still think it's a bad idea to dedicate *any* operator to cas-specific things (in core).
doubly bad to make (+) be a set op and (+=) be a CAS op. 17:03
17:03 pippo joined, tgt left
lizmat well, I think we need sugar to make this easy to use 17:03
pippo o/ #perl6
timotimo 6lrep# \o
masak reads the commit 17:04
lizmat: oh! you didn't just introduce (+=), you introduced a whole new *metaop*!
atroxaper o/ pippo
masak that's... corageous. :)
atroxaper bb #perl6 o/
17:04 atroxaper left
pippo lizmat: I have tried this: github.com/rakudo/rakudo/commit/84d2cb8eb6 17:05
masak lizmat: fwiw, it's S03 that introduces new operators, not S17.
pippo lizmat: but on my machine I still have the same problem. (^20_000).join(',').split(',') exhausts memory. 17:06
lizmat if it may live in S17, I'll add it to S03 also :-)
17:06 ajr_ left
pippo lizmat: does it work on yours? 17:07
moritz proposes ∦ as the new meta op, it's "not parallel to" anyway 17:08
lizmat $ time perl6 -e "(^20_000).join(',').split(',')"
real0m12.274s
user0m21.327s
sys0m0.573s
it grows until about 460MB of memory
timotimo ah, the jvm join/split problem is solved?
pippo lizmat: is it jvm based perl 6?
lizmat no, split doesn't use gather/take anymore
$ perl6 --version 17:09
This is perl6 version 2013.10-179-gb195c81 built on JVM
so it circumvents the problem on JVM
pippo lizmat: I do not undestand why on mine it does not...
lizmat what OS ?
pippo linux 17:10
17:10 ajr joined
lizmat $ javac -version 17:10
javac 1.7.0_45
I run on OS X Mavericks
17:10 ajr is now known as Guest22491
pippo javac -version 17:10
17:10 Guest22491 is now known as ajr_
pippo javac 1.7.0_45 17:10
lizmat and again, it is not fixed, split just doesn't use gather/take anymore
moritz workarounded 17:11
timotimo moritz: what's the next step for our inversion list project?
lizmat indeed, although I still fail to see why split() would need to use gather/take in the core
other than for dogfooding reasons
pippo lizmat: i'll try recompiling perl6... 17:12
jnthn lizmat: Laziness
moritz lizmat: no good reason; it was just simpler that way when I initially wrote it
jnthn Depends if it's useful for split to be lazy in the general case :)
lizmat it uses a map now, that should also be lazy :-)
jnthn oh, ok :)
jnthn didn't read, 'cus he's writing yet more slides...
timotimo that probably means it's faster on parrot now, too? 17:13
lizmat although Str.match isn'r, afak
afaik
pippo lizmat: I have another problem with perl6 it will exhaust all memory with this: my %h; for ^10_000 {%h.push($_ => $_)}; say %h<8>;
moritz timotimo: good question. There are two possible routes (more)
nwc10 OK, summary seems to be "Aaaaargh, dear CUPS, why are you defaulting the LJ 2200 driver to 1200dpi and colour, and giving me no easy way to tune both down to what the priner really can output?"
moritz timotimo: the first is to make it more sophisticated in our out-of-nqp repo 17:14
nwc10 (solution seems to be to stop using the "recommended" postscript driver, and use the PCL driver instead."
Ubuntu fail. OS X win.
moritz timotimo: and the second is to try to incorporate it into nqp first, and then try to make it more sophisticated
lizmat pippo: grows to about 4G in memory, then hangs while garbage collecting, I would assume 17:15
ah, an error after all: Unhandled exception: java.lang.OutOfMemoryError: Java heap space
jnthn How on earth does pushing 10,000 things onto a hash use 4G of memory?!
lizmat in print_exception (gen/jvm/CORE.setting:10706)
17:15 rindolf left 17:16 rindolf joined
dalek ar: 765bd6c | moritz++ | tools/star/Makefile:
bump versions to 2013.11

they do not exists yet, but I sure hope they will :-)
17:16
lizmat well, jnthn, I wouldn't know, but I fear jakudo atm is really not well
pippo lizmat: yes also for me. Does this has code in common with gather/take ?
timotimo i wonder where the code lives that does things like <alpha+[0..9]> 17:17
does it generate an altseq for cclass alpha and enumcharlist 0..9?
or does it generate an enumcharlist with a..zA..Z and 0..9?
lizmat pippo: I would have to look
timotimo probably in the Actions 17:18
lizmat in parrot, it grows to about 700M, then shrinks to 350, and up and down again, until it's done after ~23 seconds
pippo n: my %h; for ^10_000 {%h.push($_ => $_)}; say %h<8>; now - BEGIN now; 17:20
camelia niecza v24-98-g473bd20: OUTPUT«8␤»
pippo n: my %h; for ^10_000 {%h.push($_ => $_)}; say %h<8>; say now - BEGIN now;
camelia niecza v24-98-g473bd20: OUTPUT«8␤0.1979072093963623␤»
jnthn p: my %h; for ^10_000 {%h.push($_ => $_)}; say %h<8>; say now - BEGIN now; 17:21
camelia rakudo-parrot b195c8: OUTPUT«(timeout)»
jnthn j: my %h; for ^10_000 {%h.push($_ => $_)}; say %h<8>; say now - BEGIN now;
camelia rakudo-jvm 882e33: OUTPUT«(timeout)» 17:22
jnthn I mean, I'd once have thought the issue wsa that .push returns the whole hash post-pushing
And then the loop builds a huge result list flattening the hash into pairs each time
But that's clearly in sink context...
p: my %h; for ^10_000 {%h.push($_ => $_); 1; }; say %h<8>; say now - BEGIN now; 17:23
camelia rakudo-parrot b195c8: OUTPUT«(signal KILL)»
jnthn um.
j: my %h; for ^10_000 {%h.push($_ => $_); 1; }; say %h<8>; say now - BEGIN now;
camelia rakudo-jvm 882e33: OUTPUT«(timeout)»
pippo j: say "Hello";
camelia rakudo-jvm 882e33: OUTPUT«(timeout)» 17:24
pippo j has crashed!
jnthn ah
p: say "Hello"
camelia rakudo-parrot b195c8: OUTPUT«Hello␤»
pippo it exhausts all memory and craches... 17:25
jnthn Soemthing is wrong in general given how long it takes on Parrot too, though.
pippo Seems likely. 17:26
17:26 sqirrel left 17:29 johnny5_ left, rindolf left 17:30 rindolf joined, johnny5_ joined
raiph lizmat++ # (bracketing to indicate atomicity)++; more specifically, (bracketing metaop)++; (more specifically, parens)++; (does it make sense to say that set ops must be atomic?) 17:30
lizmat ah, interesting observation :-) 17:32
I guess they must be :-)
pippo jhntn: fyi I hve run your code on my machine: my %h; for ^10_000 {%h.push($_ => $_); 1; }; say %h<8>; say now - BEGIN now;
17:32 johnny5_ left
pippo jhntn: same result: crash 17:32
jnthn OK, that makes no sense. :/
lizmat jnthn: that eats 4G+ RAM on my machine 17:33
jnthn OK, then we need to work out why.
lizmat and a : Unhandled exception: java.lang.OutOfMemoryError: Java heap space at the end
17:33 johnny5_ joined
pippo same for me :-( 17:34
17:39 rindolf left, rindolf joined 17:40 beastd left, darutoko left
dalek kudo/nom: 3be0a1a | (Elizabeth Mattijsen)++ | docs/deprecations:
Mention Increase/Decrease to be deprecated in 2013.11
17:41
FROGGS lizmat++ 17:45
timotimo: I'd think it is in nqp/src/QRegex/P6Regex/Actions.nqp:567: method cclass_elem($/) { 17:47
dalek kudo/nom: 397a24b | (Elizabeth Mattijsen)++ | docs/ChangeLog:
Mention Increase/Decrease are deprecated
FROGGS timotimo: and nqp/src/QRegex/P6Regex/Actions.nqp:527: method assertion:sym<[>($/) { 17:49
17:53 colomon left 17:55 colomon joined
timotimo thank you :3 17:55
yeah, the things are done with an altseq 17:56
so i could even implement something like a charrange node if there's only one range and then do a range check in matching 17:57
oh well, the stuff that moritz is going to make (with a bit of my help) will probably make that obsolete quickly
hm. but perhaps not for this month's release
dalek kudo/nom: 4d841f3 | (Tobias Leich)++ | src/Perl6/ (2 files):
**0..1 => ? in type_declarator:sym<subset>
17:59
kudo/nom: 69a5b64 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/asyncops.pm:
Remove unneeded code from debugging, most likely
18:01
18:02 zakharyas joined 18:05 ssutch joined 18:06 rindolf left 18:07 rindolf joined
dalek ecs: 98c34a7 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Introduce .cue(:times(42)) and .cue(:stop($var))
18:16
lizmat so we don't need a return value of .cue exposed 18:18
pippo j: say "Hello" 18:19
diakopter lizmat++ # cas syntax, whatever it ends up as
camelia rakudo-jvm 882e33: OUTPUT«(timeout)»
18:20 grondilu joined
diakopter lizmat: it needs a way to indicate previous value on failure 18:20
grondilu rn: perl6 -e 'subset Even of Int where * %% 2; say grep Even, ^10;'
camelia rakudo-parrot ef9ceb: OUTPUT«===SORRY!=== Error while compiling /tmp/p_xOqGUGU5␤Two terms in a row␤at /tmp/p_xOqGUGU5:1␤------> perl6 -e ⏏'subset Even of Int where * %% 2; say gr␤ expecting any of:␤ postfix␤ infix s…»
..rakudo-jvm 882e33: OUTPUT«===SORRY!=== Error while compiling /tmp/jeHuo_iEhF␤Two terms in a row␤at /tmp/jeHuo_iEhF:1␤------> perl6 -e ⏏'subset Even of Int where * %% 2; say gr␤ expecting any of:␤ postfix␤ infix stop…»
..niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Two terms in a row (listop with args requires whitespace or parens) at /tmp/MqJcYxucqK line 1:␤------> perl6 -e ⏏'subset Even of Int where * %% 2; say gr␤␤Undeclared routine:␤ 'perl6' use…»
lizmat diakopter: the way I read the spec, it will repeat until successful
so no return value needed
grondilu rn: subset Even of Int where * %% 2; say grep Even, ^10; 18:21
camelia rakudo-parrot ef9ceb, rakudo-jvm 882e33, niecza v24-98-g473bd20: OUTPUT«0 2 4 6 8␤»
grondilu rn: subset Even of Int where * %% 2; say grep !Even, ^10;
diakopter lizmat: it needs a way to subvert that
camelia rakudo-parrot ef9ceb, rakudo-jvm 882e33, niecza v24-98-g473bd20: OUTPUT«0 1 2 3 4 5 6 7 8 9␤»
diakopter often you want to try a change only once
grondilu was expecting 1 3 5 7 9
jnthn diakopter: If you want that then use the normal form of it 18:22
grondilu rn: subset Even of Int where * %% 2; say grep * !~~ Even, ^10;
camelia rakudo-parrot ef9ceb, rakudo-jvm 882e33: OUTPUT«0 1 2 3 4 5 6 7 8 9␤»
..niecza v24-98-g473bd20: OUTPUT«1 3 5 7 9␤»
diakopter the normal form of what
jnthn Arguably the overload the takes a var and a coderef should not be called cas, 'cus it adds too much.
diakopter: The normal form of cas, as spec'd
timotimo how do i access the IVal children nodes of something when i'm in a method of the QAST Compiler for parrot? (in the charrange method i just came up with)
grondilu rn: subset Even of Int where * %% 2; say grep { $_ !~~ Even }, ^10;
jnthn diakopter: The "try in a loop" is just a convenience.
camelia rakudo-parrot ef9ceb, rakudo-jvm 882e33, niecza v24-98-g473bd20: OUTPUT«1 3 5 7 9␤» 18:23
diakopter jnthn: but how does it return the original value on failure
timotimo i bet it'll generate a set $some-register, $my-number for me, but how do i get at $some-register?
do i put $ops.as_post($node[0]) in there or something?
jnthn diakopter: That form doesn't, given it loops until it is successful
diakopter I mean the normal one
jnthn diakopter: The other form that takes the usual arguments, not a code ref, just returns the original value
diakopter: The normal one has about the same signature as MVM_cas iirc 18:24
diakopter oh
jnthn Anyway, the confusion makes me think the auto-looping form wants another name :) 18:25
diakopter is there a shortcut to use anything but pointer/raw equality comparison?
jnthn I just can't think of one
Nothing on that yet 18:26
Not sure how useful it is in reality
diakopter you can pretty much assume it when constants are involved
jnthn dinner, bbil 18:29
FROGGS what was L again? 50? 18:32
lizmat in roman? yes 18:33
18:33 cognominal joined
FROGGS k :o) 18:33
itz moritz: I'm still seeing an error with submodule versions for star - Unable to checkout '240f8d025a72dfd9695290dde45981f238287d79' in submodule path 'modules/uri' 18:35
moritz itz: oops
diakopter jnthn: what confusion did you mean
pippo lizmat: is Camelia's r-j patched with github.com/rakudo/rakudo/commit/84d2cb8eb6? 18:37
moritz itz: I'm about to push a fix
lizmat actually, I have no idea
timotimo how do i handle an IVal in the qast compiler for parrot? :(
moritz itz: my local star repo had a wrong submodule url
itz++
lizmat I vaguely remember someone sayin that r-j is fixed at some pre-Thread code merge 18:38
moritz timotimo: handle? in what context?
timotimo it seemed like i'd have to $name := self.coerce($ops.as_post($node[0]), 'I')
18:38 ajr_ left
timotimo but that tells me i can't as_post PIRT::Ops 18:38
moritz seems I can't push to github, it hangs :(
itz I can't pull either :\ seems broken 18:39
pippo lizmat: cause I have nuked my rakudo jvm directory. Cloned again, compliled and tested (^20_000).join(',').split(',') and had ...
lizmat status.github.com shows mean web response time *WAY* up
pippo java.lang.OutOfMemoryError: Java heap space
lizmat pippo: sorry to hear, but I'm a jvm noob 18:40
jnthn / sorear are the architects on the jvm, afaik
18:41 rindolf left
diakopter was anyone confuaed? 18:42
lizmat I am now 18:43
pippo j: say (^20_000).join(',').split(',')[*-1]; 18:44
camelia rakudo-jvm 882e33: OUTPUT«(timeout)»
pippo j: say "Hello"
camelia rakudo-jvm 882e33: OUTPUT«(timeout)»
18:44 xenoterracide left
moritz lizmat: fwiw rakudo-jvm seems to be up-to-date, just the revision number is reported wrongly 18:45
pippo lizmat: Also on Camelia not the same result as on your machine...
diakopter lizmat: what's confusing? 18:46
lizmat confuaed
moritz live, universe and everything
pippo lizmat: unless... r-j was already dead when I run "say (^20_000).join(',').split(',')[*-1];" 18:48
lizmat: unless... Camelia's r-j was already dead when I run "say (^20_000).join(',').split(',')[*-1];"
diakopter wut.
pippo r-j: say "Hello" 18:49
camelia rakudo-jvm 882e33: OUTPUT«Hello␤»
pippo is Camelia's r-j auto-restarting when crashing? 18:51
diakopter lizmat: I meant about cas
lizmat ah, that cas has two, rather dfferent modes of operation/signatures
diakopter because that's what jnthn was talking about when he said "given the confusion" 18:52
lizmat yup
github status: 18:44 UTCRepository access is currently unavailable for a small percentage of users.
diakopter all I was talking about was the syntax 18:53
lizmat well, that's what we were discussing also, I think :-) 18:54
diakopter I didn't see anything about any other forms
pippo bye #perl6 18:55
lizmat S17:L745
18:55 pippo left
lizmat S17:745 18:55
synopsebot Link: perlcabal.org/syn/S17.html#line_745
lizmat actually, that page is not uptodate, a few lines earlier
sub cas($ref is rw, $expected, $new) {
timotimo apparently i can just put in values just like that 18:56
lue hello world o/
timotimo hellue 18:57
moritz ERROR: Storage server temporarily offline. See status.github.com for GitHub system status.
diakopter lizmat: that's the cas impl that makes no sense
18:58 xenoterracide joined
lizmat diakopter: that is pseudo-code 18:58
dinner&
dalek albot: 29360df | moritz++ | / (2 files):
[rj] fix revision file path
18:59
moritz who leaves uncommitted changes in camelia's ~/evalbot dir?
moritz *grumbles*
diakopter me.. 19:00
dalek albot: f189fd8 | moritz++ | evalbot.pl:
use correct nqp-m path
timotimo hm, where is the NFA code i have to touch to implement the charrange node type?
moritz weird, I can push to evalbot, but not to star :(
diakopter NFA.nqp
moritz evalbot control restart
19:00 camelia left
timotimo thanks 19:01
19:01 camelia joined 19:02 ChanServ sets mode: +v camelia
moritz j: say 42 19:04
camelia rakudo-jvm 69a5b6: OUTPUT«42␤»
timotimo has a first prototype of charrange that may even not completely b0rk! 19:08
ope. 19:13
Rotwang hi 19:16
timotimo damn, i think i botched it :( 19:18
but how? 19:19
diakopter with a botcher knife? 19:20
timotimo i think so 19:21
Rotwang could someone tell me what am I doing wrong: paste.lisp.org/display/139858 19:25
it looks like exception isn't caught, but I don't get why
moritz Rotwang: iirc CATCH at top level is broken 19:27
Rotwang: try putting it all into a block
Rotwang it worked, thanks moritz 19:28
timotimo Unrecognized regex modifier :my at line 834, near " $*POD_ALL" - i pretty much broke the thing... all the things probably 19:32
FROGGS timotimo: ooc, can I see a the diff? 19:36
timotimo i'm reaching the point where i can tell what's wrong i think!
FROGGS cool
timotimo r: '?@ABCDEFGHIJKLMNOPQRSTUVWXYZ'.ords.say
camelia rakudo-parrot 69a5b6, rakudo-jvm 69a5b6: OUTPUT«63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90␤» 19:37
timotimo huh
nqp: say(ordat("foo", 2)) 19:41
camelia nqp-moarvm: OUTPUT«No lexical found with name '&ordat'␤frame_name_0␤»
..nqp-parrot: OUTPUT«Could not find sub &ordat␤current instr.: '' pc 47 ((file unknown):76459031) (/tmp/yNd8f5S99S:1)␤»
..nqp-jvm: OUTPUT«java.lang.NullPointerException␤ in (/tmp/PNTfN0iTnL:1)␤ in (gen/jvm/stage2/NQPHLL.nqp:1100)␤ in eval (gen/jvm/stage2/NQPHLL.nqp:1086)␤ in evalfiles (gen/jvm/stage2/NQPHLL.nqp:1292)␤ in command_eval (gen/jvm/stage2/NQPHLL.nqp:1196)␤ in command_line…»
timotimo nqp: say(nqp::ordat(2, "foo"))
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«50␤»
timotimo nqp: say(nqp::ordat("foo", 2))
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«111␤»
timotimo er ...
but which one ...
r: say(ord("a"))
camelia rakudo-parrot 69a5b6, rakudo-jvm 69a5b6: OUTPUT«97␤» 19:42
timotimo nqp: say(nqp::ordat("abc", 0))
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«97␤»
timotimo but that's already how i use it :|
moritz nqp: say(nqp::ordat("abc", 1)) 19:43
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«98␤»
timotimo why would there be char ranges from ? to Z?! 19:44
19:45 raiph left
timotimo wat, there really are char ranges from ? to Z 19:47
masak timotimo: maybe someone confused 63 and 65?
timotimo ah, token charspec.
haha, i'm an idiot :( 19:59
i was getting *very* thin ranges out of this %) 20:00
i didn't see the $ord1-- while $ord1 >= $ord0 or whatever
and after that i tried to use $ord0 and $ord1
20:02 raiph joined
timotimo the charrange rxtype is not being used often at all :( 20:03
once in p6/Actions, once in p6/Grammar, 3 times in NQPHLL
it made parsing exactly 0 faster! 20:05
\o/
FROGGS :/
20:08 berekuk joined 20:12 ssutch left
FROGGS timotimo: what if you --profile and then look at things that are called often? 20:13
(things that are optimizable) 20:14
timotimo haha, as if :)
a whole lot of character classes i miss are not even ranges
at least not sensible ranges
20:15 pernatiy joined
lizmat
.oO( pretty deranged, these classes )
20:16
timotimo my debug output suggests i can't really do much better. 20:17
i'll see if my implementation outperforms enumcharlist next.
(it really ought to, but what do i know?)
20:20 ssutch joined 20:21 stevan_ left 20:29 segomos joined 20:35 sqirrel joined 20:38 cognominal left
dalek ar: d194397 | moritz++ | tools/build/Makefile.in:
default to perl6-p for now

  ... untill we have a more thorough refactoring
20:42
lue jnthn: somehow I'm getting "Method 'new_type' not found for invocant of class 'NQPMu'" trying to set up the timing thing for Exercise 8.1 . 20:43
moritz lue: sho your code?
*show
lue *sigh* I'm a moron. 20:44
moritz exercise = demoronize :-) 20:45
lue (the exercise sheet say PHPClass, meanwhile my class is named PHPishClass , just like RubyishClass in the slides. That's what I get for blind repeating :D)
Rotwang playing around with Buf I've noticed that ther might be many(?) kinds of Buf (e.g. Buf[uint8]), is it documented somewhere? 20:47
timotimo matching 100_000 times a takes 5.9s with my optimization and 11.8s without it
matching 100_000 times z takes 5.9s with my optimization and 17.05s without it
(matching against <[a..z]>
that is)
lizmat feels good!
timotimo yeah, but there's 0 change to rakudo stage parse time :( 20:48
moritz timotimo: and doing 100k non-matching matches?
like '!' ~~ /<[a..z]>/ ?
anyway, great numbers so far, timotimo++
lue Rotwang: here's some stuff on the matter: perlcabal.org/syn/S02.html#The_Buf_Type 20:49
20:50 kurahaupo joined
Rotwang thanks 20:51
timotimo bbl
lue that doesn't list everything though. There's stuff like Blob (immutable Buf) and utf8 (blob8 with Unicode-related restraints). 20:52
20:58 tobyink left
dalek ar: ae2b5cd | moritz++ | tools/build/Makefile.in:
slim down Makefile (remove unused variables)
21:00
21:02 stevan_ joined 21:03 stevan_ left 21:06 denis_boyun joined 21:11 denis_boyun left 21:12 grondilu left 21:13 virtualsue joined 21:18 zakharyas left 21:22 tgt joined
moritz my current confidence of making a full-blown JVM star release isn't very high, maybe 30% or so 21:22
quite some Configure work left, plus stability issues with rakudo-jvm, plus nativecall not yet up to speed 21:23
FROGGS would be still nice if we had a parrot-star release that Just Works(TM) 21:24
timotimo 1_000 times trying to match <[a..z]>+ against 100_000 ! used to take 32s, now takes 20s 21:28
moritz \o/
FROGGS timotimo++ 21:29
lizmat timotimo++ indeed! 21:30
timotimo only helps in artificial benchmarks, though
it would probably be nice to turn a scan followed by a charrange into a negated charrange and a reverse step at the end ... or something 21:31
here's something for you to play with 21:32
dalek p: 1855f52 | (Timo Paulssen)++ | src/vm/parrot/pmc/qrpa.pmc:
give QRPA methods for pop, shift, ...
p: 47a6ba5 | (Timo Paulssen)++ | src/vm/parrot/QAST/Operations.nqp:
use QRPA instead of ResizablePMCArray on parrot
p: fe517a2 | (Timo Paulssen)++ | src/vm/parrot/pmc/qrpa.pmc:
steal the quicksort implementation from parrot
p: e753bbd | (Timo Paulssen)++ | src/ (3 files):
"charrange" rxtype for simple range cclasses
timotimo oh
wait, no
that's not what i wanted to do?
moritz the last commit looks like what you wanted to push, maybe? 21:33
timotimo yes, i didn't look properly >_>
the other commits are probably not terrible, but may not be perfect.
i have some spectest failures in rakudo.
21:34 stevan_ joined
lizmat timotimo: which ones? 21:34
dalek Heuristic branch merge: pushed 24 commits to rakudo/moar-support by FROGGS 21:35
timotimo let me run a full spectest.
dalek kudo/nom: acd03fa | (Elizabeth Mattijsen)++ | src/vm/jvm/core/CurrentThreadScheduler.pm:
Removed functionality that will *never* work
21:41
kudo/nom: b0231c4 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ThreadPoolScheduler.pm:
Comment nits
ast: e3f1bb7 | (Elizabeth Mattijsen)++ | S17-concurrency/scheduler.t:
Add tests for CurrentThreadScheduler
21:42
ar: 0a16efd | moritz++ | Configure.pl:
fix installation
21:43
FROGGS Stage ast : 0.000 21:44
Stage optimize : 17.560
Error while compiling op qlist: No registered operation handler for 'qlist'
timotimo yes, i have a rakudo commit that fixes the mention of qlist 21:45
(just replace it with list)
21:46 dmol left
timotimo it makes no practical difference in the unpatched nqp master 21:46
er, master@{1} i guess?
21:46 sqirrel left 21:47 kaare_ left
moritz huh, my rakudo just compiled fine on nqp/master 21:47
timotimo ... huh?
but how?
FROGGS nqp-p --version 21:48
This is nqp version 2013.10-214-ge753bbd built on parrot 5.9.0 revision RELEASE_5_9_0
moritz: maybe the jvm one?
timotimo anyway, my spectest run just started
moritz no, my NQP was older than I thought :(
FROGGS ahh, hehe
gnight boys+girls
timotimo gnite, froggs
lizmat gnight FROGGS 21:49
moritz good night FROGGS++
colomon o/ 21:50
timotimo t/spec/S05-mass/charsets.rakudo.parrot .......................... Failed 1/16 subtests 21:51
moritz Method 'charrange' not found for invocant of class 'QAST::CompilerJAST'
timotimo huh? but i only generate that on parrot?
... except if i botched the conditional compilation comments
t/spec/S05-substitution/subst.rakudo.parrot ..................... Failed 1/141 subtests 21:52
t/spec/S17-concurrency/scheduler.rakudo.parrot .................. Dubious, test returned 1 (wstat 256, 0x100) 21:54
lizmat timotimo: the first one may be fallout of my split -> no gather/take refactoring 21:55
moritz should r-p even run that file?
jnthn no
lizmat well, how can you run some in jvm and not in rakudo?
timotimo lizmat added a bunch of #todo fudges for rakudo.parrot i believe?
lizmat they share the same spectest.data no? 21:56
skip actually
colomon skip++
lizmat the problem is that somehow the fudge doesn't count the number of tests correctly in rakudo
lizmat runs a spectest to double check
moritz I guess we should add # jvm markers to spectest.data, and teach the harness not to run those on other backends
jnthn I think there's a #jvm that can go in spectest.data?
lizmat there can be? 21:57
jnthn If there arlready ain't :)
21:57 kurahaupo left
jnthn oh, --jvm is something else I guess 21:57
moritz seems NYI, but desirable
lizmat the string jvm does not occur on spectest.data
there is #icu
is that what you mean ? 21:58
moritz same mechanism
easy to extend
lemme try
timotimo gist.github.com/timo/2979d2ce068f55772c81 - all my fails
how can i prevent some code to be compiled into nqp if it's on the jvm?
lizmat the other two are older/known ones
timotimo so i b0rked nothing with my changes to nqp, except all of rakudo.jvm? 21:59
lizmat que? all of jakudo ? why ?
timotimo because it compiles a rxtype that is only implemented on parrot 22:00
FROGGS timotimo: these fails are not your fault, I had them too
lizmat ah,
timotimo lizmat, can you push a commit to change the mentions of qlist to list in rakudo?
lizmat in src/core? 22:01
timotimo i believe so
dalek kudo/nom: 789da2e | moritz++ | t/ (2 files):
#jvm markers in t/spectest.data
moritz src/core/MapIter.pm
has two of them
22:01 [particle] joined
colomon moritz++ 22:02
dalek kudo/nom: 2c40f65 | (Elizabeth Mattijsen)++ | src/core/MapIter.pm:
nqp::qlist -> nqp::list as per timotimo's request
timotimo lovely, thank you :)
moritz fwiw I haven't really checked my commit, just made sure it doesn't make things worse :-) 22:03
timotimo i can implement charrange on the jvm, too
well, stub it, really
its node is compatible with enumcharrange
er, enumcharlist
timotimo tests his commit 22:04
yeah, that works 22:07
moritz \o/
dalek p: 444052f | (Timo Paulssen)++ | src/vm/jvm/QAST/Compiler.nqp:
stub charrange support for nqp-jvm
Ben_Goldberg rn: constant a = b; constant b = a; say a
camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object␤ at Niecza.StashCursor.Core (System.String key, Boolean final, Niecza.StashCursor& sc, Niecza.Variable& v, Niecza.Variable bind_to) [0x00000] in…» 22:08
..rakudo-parrot 69a5b6: OUTPUT«===SORRY!===␤Could not find sub &b␤»
..rakudo-jvm 69a5b6: OUTPUT«===SORRY!===␤java.lang.NullPointerException␤»
Ben_Goldberg std: constant a = b; constant b = a; say a
camelia std 8adbc60: OUTPUT«===SORRY!===␤Illegally post-declared type:␤ 'b' used at line 1␤Check failed␤FAILED 00:01 122m␤»
22:13 xinming joined 22:16 xinming_ left 22:23 bbkr_ left
timotimo has a prototype for charrange on jvm 22:25
arnsholt I keep mis-segmenting that as ch-arrange 22:26
timotimo :3
what do you propose that should do?
ooooh crap where did my bandwidth go? =o 22:27
java.lang.RuntimeException: java.lang.NegativeArraySizeException - when trying to call nqp::compilejastlines ... but how did i do that? 22:33
arnsholt new Foo[variable] where variable is negative, I assume 22:34
timotimo yeah, but ... how? 22:35
arnsholt All depends on your code, I assume ==)
timotimo probably 22:36
huh. there's a path through my code that would leave a value on the stack, is that bad?
like, i have dup'd a value that i want to compare to two other values. if the first comparison triggers the jump, the second copy of the value will still be on the stack
arnsholt Probably not a good thing, I think
timotimo how do i properly make such a thing work in the jvm? :( 22:37
that means i have to have like 10 more labels
oh well. 22:38
oh, i know!
arnsholt Restructure the flow somehow, I guess? =) 22:40
timotimo yes, i did 22:42
arnsholt Yeah, sounded like that should be possible 22:43
22:43 kurahaupo joined
timotimo i still get the weird array exception 22:43
arnsholt But you're generating code, it sounds like, not writing Java? 22:45
timotimo yes 22:46
the exception is thrown somewhere in the bowels of compilejastlines
arnsholt Ow, that sounds bad
22:47 colomon left
timotimo kind of does 22:47
er ... now it works? 22:49
*weird*
lizmat enough commits from me today 22:53
gnight #perl6!
timotimo gnite liz :)
22:57 colomon joined
timotimo maybe it's the bytecode verifier that finds a stack that gets too small? 23:01
23:01 stevan__ joined 23:02 johnny5_ left 23:03 johnny5_ joined
timotimo gist.github.com/timo/d83252c60f479d3eb30a - want to have a look? 23:03
23:04 stevan_ left
timotimo arnsholt: do you know your way around the jvm stuff? 23:05
arnsholt Not overly familiar with that side of things, sadly 23:07
timotimo i wasn't before either :3
(if i manage to understand that, i may even be able to port the scan-for-literal optimisation moritz++ recently created to the jvm) 23:08
i'm toying with the idea of turning scan + charrange into something that eats up as many characters that don't match the charrange and then it has to skip back one at the end if it fails i think 23:10
arnsholt I'm going to have a look (if the hotel WiFi decides to cooperate), but I don't think I can help much
23:11 spider-mario left
timotimo it may already help a lot if you ask the right "stupid questions" :) 23:11
arnsholt Looks like hotel Wifi has decided that DNS is optional, though >.< 23:12
timotimo want me to resolve the ip for you? :) 23:13
192.30.252.141 gist.github.com
try this
geekosaur dns 8.8.8.8 / 8.8.4.4 ... 23:14
arnsholt Yeah, just need to find the thing to twiddle to set the DNS stuff
timotimo in linux it's /etc/resolv.conf
geekosaur OS X: System Preferences > Network > select connection > Advanced > DNS 23:15
arnsholt There we go
resolv.conf
It's been a long time since I last had to deal with this kind of crap (thankfully) 23:16
timotimo :)
geekosaur you might want to figure out what sets up DHCP and stop it from overriding DNS 23:17
(if it does)
arnsholt I'll probably not reboot 'till I get home, so no worries 23:18
timotimo tries dumping the created bytecode and asking an expert
jnthn sleep & 23:19
timotimo gnite jnthn!
23:23 langdon_ joined 23:32 tgt left 23:38 FROGGS left, FROGGS joined 23:46 FROGGS left 23:50 dayangkun joined
timotimo sleep & 23:56