»ö« 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.
ren1us m: class A = {}; my $a = A.new(); my $w = $a.WHICH; my $good = True; for (0 .. 20000) { if ($a.WHICH ne $w) { $good = False; } }; say $good; 00:32
camelia rakudo-moar e9e842: OUTPUT«===SORRY!=== Error while compiling /tmp/NRZaSTs8Z2␤Unable to parse class definition␤at /tmp/NRZaSTs8Z2:1␤------> class A ⏏= {}; my $a = A.new(); my $w = $a.WHICH;␤ expecting any of:␤ statement list…»
ren1us m: class A {}; my $a = A.new(); my $w = $a.WHICH; my $good = True; for (0 .. 20000) { if ($a.WHICH ne $w) { $good = False; } }; say $good; 00:33
camelia rakudo-moar e9e842: OUTPUT«False␤»
ren1us that strikes me as bad.
colomon p6: class A {}; my $a = A.new(); my $w = $a.WHICH; my $good = True; for (0 .. 20000) { if ($a.WHICH ne $w) { $good = False; } }; say $good; 00:34
camelia rakudo-jvm e9e842: OUTPUT«(timeout)» 00:35
..rakudo-moar e9e842: OUTPUT«False␤»
..rakudo-parrot e9e842, niecza v24-109-g48a8de3: OUTPUT«True␤»
ren1us at least parrot's behaving 00:36
colomon pm: class A {}; my $a = A.new(); my $w = $a.WHICH; my $good = True; for (0 .. 2000) { if ($a.WHICH ne $w) { $good = False; } }; say $good; 00:37
ren1us p6: class A {}; my $a = A.new(); my $w = $a.WHICH; my $good = True; for (0 .. 2000) { if ($a.WHICH ne $w) { $good = False; } }; say $good; 00:38
camelia rakudo-{parrot,jvm,moar} e9e842, niecza v24-109-g48a8de3: OUTPUT«True␤» 00:39
ren1us it doesn't just occur with high iterations, though. the issue popped up for me with multiple changes in value over just ~100 iterations 00:41
dalek p/qast_lazy_annotation: b8de192 | (Timo Paulssen)++ | / (9 files):
initial work on making QAST annotations lazily allocated

with these, m-test passes
00:42
timotimo ^ a tiny bit of per-backend work is required here, if anybody would like to fix this up for java and parrot, that would be spiffy
i'm getting into stage optimize for rakudo's setting now :3 00:44
Cannot find method 'can' ← *snrk* 00:45
spectest time \o/ 00:46
dalek p/qast_lazy_annotation: 31cdd29 | (Timo Paulssen)++ | src/QAST/ (2 files):
forgot to check this file in; also need has_ann method
00:57
kudo/qast_lazy_annotation: 33d0dce | (Timo Paulssen)++ | src/Perl6/ (4 files):
first pieces of QAST annotation allocation lazyness

this gets us to a bunch of passing spec tests.
00:58
timotimo gonna head to bed for now
^ seems to break whatever code chaining (with comparison operators like <) 01:03
t/spec/S32-io/IO-Socket-Async.t - seems unreliable; 1x 0 fails, 2x 1 fails, 1x 2 fails 01:06
other than that, spectests are almost completely clean. cool :)
timotimo saves about 11mb of ram in the core setting compilation on moarvm (out of 785 mb) 01:21
o/ #perl6 01:23
vendethiel o/ 01:24
dalek ecs: 67579a1 | (Stéphane Payrard)++ | S05-regex.pod:
:args named parcel argument in Grammar.parse
02:39
ast: 1bc8a5f | (Stéphane Payrard)++ | S05-grammar/example.t:
test for Grammar.parse with :args

partially deborked the rest of the tests
02:53
cognominal github.com/rakudo/rakudo/pull/279 02:58
PerlJam cognominal++ 03:54
nwc10 as a footnote to my e-mail about the hackathon in Salzburg: www.nntp.perl.org/group/perl.perl6....g9598.html 05:11
nwc10 The venue is less than 4km from Germany, so it's almost the "German Perl 6 hackathon" that people were keen to have this year. 05:13
ChoHag Can I have a method in a role which modifies the behaviour of a method of the consuming class? 06:56
Mostly for cosmetic reasons. I could always just use different method names in the role & class. 06:57
lizmat afaik, not with standard role consuming, as any method in a class will override the method in the role 06:59
lizmat which is the only way you can do resolution of consuming two roles with identical method names 07:00
commut&
ChoHag Why does this work: > my $rx = rx/abc/; $rx.perl; 07:11
regex (Mu: *%_) { #`(Regex|140087721929376) ... }
But this doesn't: > my %rh = { rx/abc/ => 1 }; $rh.perl;
{"" => 1}
Where does the second regex go?
timotimo m: my $rxobj = rx/abc/; say $rxobj.Str;
camelia rakudo-moar e9e842: OUTPUT«␤»
timotimo m: my $rxobj = rx/abc/; say $rxobj.perl; 07:12
camelia rakudo-moar e9e842: OUTPUT«regex (Mu: *%_) { #`(Regex|139834052115832) ... }␤»
timotimo that's why; .Str is called to generate a key
ChoHag Ah.
Presumably a hash is not the best choice then for a map of test => actions?
Or do I just need to not use Str somehow? 07:13
timotimo you can have a hash that takes Object Keys 07:14
timotimo m: my %objhash{Any} = rx/abc/ => -> { say "yay!" }, rx/def/ => -> { say "nay" }; for %objhash -> $pair { say "testing ", $pair.key.perl; if "abc" ~~ $pair.key { $pair.value() } } 07:15
camelia rakudo-moar e9e842: OUTPUT«testing regex (Mu: *%_) { #`(Regex|140564895669568) ... }␤testing regex (Mu: *%_) { #`(Regex|140564895670392) ... }␤»
timotimo hm, almost.
m: say "abc" ~~ rx/abc/ 07:17
camelia rakudo-moar e9e842: OUTPUT«「abc」␤␤»
timotimo m: my $pair = rx/abc/ => "hi there"; say "abc" ~~ $pair.key 07:18
camelia rakudo-moar e9e842: OUTPUT«「abc」␤␤»
timotimo m: my %h{Any} = rx/abc/ => "hi there"; say %h.perl; say %h.keys[0].WHAT
camelia rakudo-moar e9e842: OUTPUT«Hash[Any,Any].new(regex (Mu: *%_) { #`(Regex|140086181605032) ... } => "hi there")␤(Regex)␤»
timotimo m: my %h{Any} = rx/abc/ => "hi there"; say %h.perl; say "abc" ~~ %h.keys[0] 07:19
camelia rakudo-moar e9e842: OUTPUT«Hash[Any,Any].new(regex (Mu: *%_) { #`(Regex|140502318527160) ... } => "hi there")␤「abc」␤␤»
timotimo oh, duh :)
m: my %objhash{Any} = rx/abc/ => -> { say "yay!" }, rx/def/ => -> { say "nay" }; for %objhash -> $pair { say "testing ", $pair.key.perl; if "abc" ~~ $pair.key { $pair.value.() } }
camelia rakudo-moar e9e842: OUTPUT«testing regex (Mu: *%_) { #`(Regex|139878260821112) ... }␤yay!␤testing regex (Mu: *%_) { #`(Regex|139878260821936) ... }␤»
timotimo there we go; i was getting the key, not invoking it
on the other hand, i'd suggest a list of pairs instead of a hash
gotta go for now 07:20
timotimo ChoHag: did that help? 07:33
ChoHag "use a list of pairs" did. 08:15
lizmat bienvenue de la carrefour numerique au cite des sciences en Paris 08:24
ChoHag Hello from Hampshire. 08:25
dalek rlito: 55096c6 | (Flavio S. Glock)++ | TODO-perlito5:
Perlito5 - TODO update
08:30
lizmat r: say nqp::where(1).WHAT 08:37
camelia rakudo-{parrot,jvm,moar} e9e842: OUTPUT«(Int)␤»
lizmat jnthn: seems nqp::where is already returning a boxed Int
so there's no need to box it in Mu::WHERE: nqp::p6box_i(nqp::where(self)) 08:38
or am I missing something
jnthn lizmat: Yes, you are. 08:43
jnthn lizmat: How did you determine it's a boxed thing? 08:44
lizmat: I suspect it's just the code-gen auto-boxing it for you, 'cus you did e.g. .WHAT on it.
lizmat: I don't know how things are today; I know the code-gen for MoarVM will always do the right thing in that regard.
lizmat ah, ok
jnthn lizmat: I forget if Parrot's code-gen is a bit more sensitive.
It certainly was at one point
But maybe not since the QAST do-over 08:45
lizmat anyway, I shouldn't touch Mu::WHERE then :-)
jnthn lizmat: Well, doing it that way isn't harmful, as the compiler would emit it anyway. 08:46
On Moar/JVM bakcends, at least.
lizmat but would it not be boxed twice now? 08:47
jnthn huh? 08:48
The auto-boxing happens if the thing is used in a context that needs an object.
nqp::p6box_i does not supply such a context; it's a think that needs a native int.
lizmat ah, indeed: 08:51
r: my int $a=42; say $a.WHAT # WHAT autoboxes
camelia rakudo-{parrot,jvm,moar} e9e842: OUTPUT«(Int)␤»
cognominal lizmat: "... du carrefour numérique ..." :) 08:58
lizmat merci :-) 09:00
je pense que je suie trop moderne :-) 09:01
*suis
cognominal see you tomorrow
arnsholt Doesn't penser que take the subjunctive? O:) 09:02
jnthn But subjunctives are hard... :P 09:03
arnsholt And sort of superfluous in French (but don't tell l'Académie Française =)
Apparently Spanish still uses them to give different shades of meaning, but French has pretty much stopped doing that entirely 09:04
cognominal even many french got it wrong : "si j'aurais (sic) su, je n'aurais (sic) pas venu" 09:04
arnsholt Yeah, there's a huge gap between actual spoken French and the prescriptive written version 09:06
Thankfully I can mostly get away with not thinking about the subjunctive, since it's often identical to the normal present when spoken =)
lizmat refrains from speaking French online :-)
arnsholt I usually refrain from speaking it when not in France, but I don't mind eavesdropping when there are French-speaking people around =) 09:09
moritz Norwegian killed my French 09:11
whenever I try to remember a word in French, my brain helpfully comes up with the Norwegian word (if I know it) 09:12
brrt moritz, how does that happen :-) norwegian and french are not exactly similar 09:13
arnsholt It's very common 09:15
Apparently all languages that you're learning and where your skill is in the lower range, it all gets sorted into a big bag labelled "miscellaneous" or something like that 09:16
xiaomiao gets worse when you learn more languages 09:17
jnthn The big bag is great for pulling multi-language puns out of, though. :)
jnthn sucks at all languages, but can pun ok :P
arnsholt That is true =)
brrt apparently, the grammatical word / sentence structure of spoken language is not encoded in the sounds - i.e. there is no distinction between a end-of-sentence pause, an end-of-word pause, and an end-of-syllable pause 09:24
i.e. the grammar of language is 'constructed' by the brain on top of the sounds, on the basis of what its knows of the language 09:25
and i wonder how this relates to computer languages, i.e. the criticism of perl being line noise
xiaomiao I think that's mostly because perl deviates from most other languages in two ways 09:27
one is implicit stuff, which is "offensive" to some
brrt which is natural in real languages 09:28
xiaomiao and the other is the very high "density" achieved by using almost every ascii-character in the syntax
xiaomiao it takes some time to understand that, and figure out why it's not bad 09:28
brrt as does c, by the way, and c++
dalek kudo/nom: bb75fa7 | (Elizabeth Mattijsen)++ | src/core/CompUnitRepo/Local/ (2 files):
CURL::(File|Installation) are value based

So provide a .WHICH and make sure there will always only be one for any given path.
jnthn As somebody with sufficiently crappy eyesight that my parsing speed depends heavily on shape-matching words, and actually having to read the letters in words slows me down, Perl using all the chars on the keyboard to make different things visually stand out is really helpful for me. 09:30
dalek ecs: f87f96b | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Add CURL lemma
cognominal woolfy in a few minutes in the live feed : cite-sciences.ubicast.eu/lives/living-lab/ 09:42
timotimo will she be speaking french, too? :( 09:44
cognominal I don't think so. journeesperl.fr/fpw2014/talk/5520 09:45
timotimo ah, i've seen that talk before
vendethiel is he presenting ruby on rails :) ? 09:47
lizmat hopes that woolfy is back in time from shopping 09:48
vendethiel oooh I hate these websites that think shift+? is a good thing to override for they help stuff. IM FRENCH AND I HATE YOU 09:49
cognominal real programmers use QWERTY : all the good stuff without shift. 09:51
vendethiel real programmers don't use the family computer...
cognominal you can configure your profile to QWERTY. My laptop is really AZERTY. 09:53
vendethiel I know, but then I have to change it every time 09:54
lizmat woolfy postponed until 14:00 10:19
cognominal r: say (class C {}).HOW ~~ Perl6::Metamodel::ClassHOW 10:26
camelia rakudo-moar e9e842: OUTPUT«===SORRY!===␤Could not find symbol '&ClassHOW'␤»
..rakudo-jvm e9e842: OUTPUT«Could not find symbol '&ClassHOW'␤ in method <anon> at gen/jvm/CORE.setting:12847␤ in any find_method_fallback at gen/jvm/Metamodel.nqp:2627␤ in any find_method at gen/jvm/Metamodel.nqp:948␤ in any at gen/jvm/BOOTSTRAP.nqp:1684␤ in block at…»
..rakudo-parrot e9e842: OUTPUT«Could not find symbol '&ClassHOW'␤ in method <anon> at gen/parrot/CORE.setting:12838␤ in any find_method_fallback at gen/parrot/Metamodel.nqp:2710␤ in any find_method at gen/parrot/Metamodel.nqp:949␤ in any at gen/parrot/BOOTSTRAP.nqp:1696…»
jnthn m: say Metamodel::ClassHOW 10:27
camelia rakudo-moar e9e842: OUTPUT«(Perl6::Metamodel::ClassHOW)␤»
cognominal ok 10:29
nwc10 t/spec/S32-io/IO-Socket-Async.t sometimes fails:
not ok 4 - Echo server
(that was on MoarVM, and on the inline branch, so might be especailly special) 10:30
sergot hi #perl6 o/ 10:31
masak \o :) 10:38
colomon \o 10:53
dalek kudo/nom: 46b9d27 | (Elizabeth Mattijsen)++ | src/core/CompUnitRepo/Local/ (2 files):
Normalize .gist and add .perl for roundtripping
11:06
sergot Polish Perl Workshop 2014, only Saturday for now: www.youtube.com/playlist?list=PLf0...du3lHbqGz- 11:18
colomon used git-svn-migrate on his main $work repo last night... 11:23
masak sergot++ 11:46
lizmat m: CompUnitRepo::Local::File.new(".").WHAT # works fine 11:47
camelia ( no output )
lizmat m: CompUnitRepo::Local::File.new(".").WHAT.say # huh? 11:48
camelia rakudo-moar 46b9d2: OUTPUT«Cannot look up attributes in a type object␤ in method gist at src/gen/m-CORE.setting:20843␤ in sub say at src/gen/m-CORE.setting:13797␤ in method say at src/gen/m-CORE.setting:1057␤ in block at /tmp/xcsZ8spQJz:1␤␤»
lizmat apparently, the say is trying to .gist the output of WHAT
and that fails, because the WHAT returns a CURL::Local::File object, rather than a Str ? 11:49
banging my head trying to figure out what makes this .WHAT special
:-(
dalek kudo/nom: 1ce594c | (Elizabeth Mattijsen)++ | src/core/CompUnitRepo/Local/ (2 files):
Add some typing, to be sure
11:50
tadzik oh, when sunday's up I will know how much time did my talk really take :) 11:51
masak .oO( it took 3 hours, but we were all riveted by that hand controller, so we didn't want to tell you ) 11:52
tadzik heh
I actually did absolutely nothing with steroids since then
but I got sort of sucked into the bachelors thingy 11:53
masak what's that?
tadzik the thesis I write
well, wrote, basically :)
masak oh, that kind of bachelor's. 11:54
tadzik oh yes 11:55
I still like the "engineer" title better
vendethiel notices that masak's slides are plain basic. Whew, still got a chance ! 12:00
masak "plain basic"? 12:02
vendethiel masak: blank background 12:03
tadzik GOTO 10
vendethiel masak: the container, not the content ;)
masak yes, form is important. 12:04
vendethiel saw the camels Woolfy++ showed him 2 days ago
cognominal Woolfy is live btw 12:06
vendethiel oh :)
cognominal: the sound is terribly low
cognominal they can't do anything about it. 12:07
you know, computers...
vendethiel damn these computers.
ooh, much better 12:08
cognominal asymmetric marketting 12:09
vendethiel cognominal: may I show you my slides, a bit later :) ? You'll tell me what you think 12:12
cognominal sure 12:13
[Coke] "But this doesn't: > my %rh = { rx/abc/ => 1 }; $rh.perl;" <- you changed sigils, btw. 12:28
masak also, if you use the % sigil, then you don't need the {} 12:29
lizmat gives up trying to understand why CURL::File.new(".").WHAT.say bombs 12:33
masak m: class C {}; class C::D {}; say C.WHAT; say C::D.WHAT 12:53
camelia rakudo-moar 1ce594: OUTPUT«(C)␤(C::D)␤»
masak so there's something that distinguishes CURL::File from C::D. 12:59
m: class CURL::File {}; say CURL::File.WHAT
camelia rakudo-moar 1ce594: OUTPUT«(CURL::File)␤»
masak ...and it's not the name ;) 12:59
atroxaper There is C::D and D::C (i.e. CURL::File) 13:03
lizmat jnthn: would it be an idea to write a Lock class that would allow .protect(code), but would just execute the code 13:22
(and have that available in parrot)
so that we can easily protect some sensitive code (like pushing to *@INC) transparently on all backends? 13:23
dalek kudo/nom: e030a7b | (Elizabeth Mattijsen)++ | src/core/CompUnitRepo/Local/ (2 files):
Make sure we use absolute paths internally
13:27
dalek kudo/nom: f412f8a | (Elizabeth Mattijsen)++ | src/core/ (3 files):
Only store in @*INC what actually exists

Please note that this is just runtime, it doesn't change anything in the configuration.
13:33
[Coke] ^^ so if someone dyanmically creates that path after the program starts, it won't be used? 13:40
lizmat that's the idea... 13:41
there's nothing stopping you creating a path and shoving an entry in @*INC at runtime 13:42
for that path
vendethiel is almost done writing his slides
lizmat [Coke]: does that alleviate your worries ?
vendethiel I still don't know when I'm due :D.
vendethiel wrote more than he thought he {w,c}ould 13:43
lizmat vendethiel: passed your worry to elbeho
vendethiel++
vendethiel ha, thanks
(it's totally in french though, I don't speak english :P)
lizmat pas de probleme 13:44
vendethiel: you're on at 17:30 tomorrow
[Coke] lizmat: what if the path is created outside of the perl process? 13:45
lizmat as long as you add the @*INC entry *after* the path is created, you're fine 13:46
vendethiel lizmat: eh, but there's somebody at 17h20 !
lizmat vendethiel: I'm just telling you what elbeho told me
:-)
I guess the program will change :-)
vendethiel is a bit lost
lizmat vendethiel: why? if elbeho says it's at 17:30, it will be (or a close approximation of) :-) 13:47
vendethiel lizmat: I sure hope so :P
vendethiel Okay, at some point I'm just gonna drop my slides and start talking "normally". 13:48
lizmat that would be best, and don't forget to breathe inbetween :-) 13:49
vendethiel did I do that ? 13:50
woolfy vendethiel: and remember that most people in the room are in awe of you, because you have the guts to go on stage and present slides, and they don't dare to, or don't know how to... 13:50
vendethiel woolfy: I certained wouldn't dare or know how to. 13:51
vendethiel this is all just an accident. Probably good one, though. 13:51
(as opposed to head-hitting accidents)
timotimo the last time i did a talk - a lightning talk about Lojban - i used the "illusion of transparency" trick to become calm and present well
vendethiel oh, I'm not afraid of speaking :). I'm far too talkative to be scared :D. 13:52
as lizmat, she had to listen to me for so long her hair grew below her shoulders.
ask* lizmat
lizmat hehe, I'm used to listening a lot :-)
[Coke] lizmat: how do you know to add the INC entry if you didn't create the dir? 13:54
(I'm not saying this is a common usage, but isn't this a change from p5?) 13:55
lizmat it *is* a change from p5
but S11 changes in a lot of ways from p5
[Coke] ok. 13:56
lizmat I'm not even sure we need to expose @*INC as such
that by itself feels very p5ish
in any case, that change reduces the number of @*INC entries on my machine from ~10 to 2 13:57
lizmat if it should be possible to add a non-existing path to @*INC, we can always add a flag to the constructor for it 13:59
woolfy I am sure we will applaud ventethiel for giving a briliant presentation! 14:03
lizmat jnthn: is there a reason why Promise.vow is not just using a simple $lock.protect( {} ) structure ? 14:13
vendethiel Okay, talk is ready. I tried on my sis' and I talked for 20min (and 35 seconds, but I'm sure you guys will forgive me :p) 14:20
lizmat yes, we will :-) 14:22
moritz typically my actual presentation speed is higher than when I practise, 'cause I'm a bit more excited
that might remove the extra 35s :-)
[Coke] S99 glossary says: 14:35
Last Modified: 30 June 2014
^^ let's use metadata instead of text to figure this out. :P
FROGGS .oO( But what describes the metadata? ) 14:37
dalek kudo/nom: d8cd804 | (Elizabeth Mattijsen)++ | / (2 files):
Give parrot basic $lock.protect(&code) facility
14:41
vendethiel to talk about a method, do you write Array#[]? Array::[] ?
lizmat_ Array.method
vendethiel alrighty 14:42
lizmat if it is a sub: Foo::sub
vendethiel yea, I guess you need :: to talk about packages
lizmat jnthn: if Promise.vow uses $lock.protect, it deadlocks some spectests, does that make sense? 14:43
[Coke] I have never heard our glossary def of edsel. for me it's "old tech" 14:47
lizmat WP calls if an alias for "failure" 14:52
geekosaur in the US it's something of an idiom for somethingt hat was pushed hard and flopped hard 14:52
lizmat because it tried to be everything to everybody, but in the end was not special enough for anybody 14:53
the product of market research gone awry
dalek ecs: dbfaf58 | coke++ | S99-glossary.pod:
minor fixes, updates
14:58
lizmat [Coke]++ 15:04
dalek ecs: a93489e | coke++ | S99-glossary.pod:
add twigil
15:10
[Coke] perlcabal.org/syn/S28.html#Secondar...wigils%22) doesn't mention OO twigils of ., ! 15:11
... which makes sense given the wrapper, I suppose. Perhaps we need a better place to doc twigils.
... like the place in S02. 15:12
S28 should just link to that, then, IMO.
dalek ecs: 2b04097 | coke++ | S99-glossary.pod:
fix twigil link
15:33
rurban_ perl5 MAD is now being removed 15:57
timotimo what is this MAD thing?
geekosaur a badly bitrotted thing that was at one point intended to help with p5 to p6, iirc 15:59
geekosaur bitrotted enough that it makes more sense to kill it and try again later, than to try to fix it now 15:59
tadzik I didn't know Perl 5 had Perl6-related things 16:01
tadzik MAD = Misc Attribute Decoration; unmaintained attempt at preserving 16:02
the Perl parse tree more faithfully so that automatic conversion to
Perl 6 would have been easier.
ooops
here though: perl5.git.perl.org/perl.git/commit/...4c8f67d072
47 files changed, 1590 insertions(+), 14338 deletions(-)
geekosaur considering how many things added to recent p5 came from (or were at least inspired by) p6...
vendethiel :) 16:03
lizmat no wonder jhi remains #1 in the number of lines changed in p5
vendethiel jhi ? 16:04
lizmat Jarkko Hietaniemi 16:05
perl 5.8 pumpkin (among other things)
vendethiel doesn't know what a perl pumpkin is 16:06
[Coke] release manager, basically.
geekosaur "patch pumpkin", woth the "pumpking" being the gatekeeper / release manager
[Coke] (but much more so than a rakudo release manager) 16:07
lizmat www.perlmonks.org/index.pl?node_id=813451
Patrick Michaud (pmichaud) is the Perl6 pumpkin 16:09
which basically means that if we can't decide about the implementation of a Perl 6 feature, he has the final word
dalek kudo-star-daily: e0d3110 | coke++ | log/ (13 files):
today (automated commit)
lizmat [Coke], geekosaur, jnthn, masak: agree with that definition in Perl 6 context? 16:10
geekosaur it's reasonable; the historical aspects don't apply, but then they don't really apply to perl 5 any more either 16:11
[Coke] lizmat: I'm happy to defer to pmichaud most times. I don't know that he's still pumpking, though. 16:20
lizmat [Coke]: github.com/rakudo/rakudo at the bottom still says so 16:23
:-)
FROGGS he's the project manager, that is how I understand it 16:24
lizmat end of day one at the FPW, socializing commences... 16:27
afk&
dalek rl6-roast-data: 466852e | coke++ | / (6 files):
today (automated commit)
16:45
dalek ast: f7da720 | rurban++ | S32-list/roll.t:
Parrot-fudge tests that rely on $*EXECUTABLE_NAME
16:58
ast: 3dd009a | (Tobias Leich)++ | S32-list/roll.t:
Merge pull request #42 from rurban/master

Parrot-fudge tests that rely on $*EXECUTABLE_NAME
FROGGS r: say "\c[LINE FEED (LF)]".ord 18:37
camelia rakudo-jvm d8cd80: OUTPUT«(timeout)»
..rakudo-{parrot,moar} d8cd80: OUTPUT«10␤»
vendethiel FROGGS: with numbers :P 18:39
FROGGS hmm?
vendethiel oh no, I read the pugs one :)
BenGoldberg r: say "\c[PILE OF POO]".ord; 18:40
camelia rakudo-jvm d8cd80: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unrecognized character name PILE OF POO␤at /tmp/tmpfile:1␤------> say "\c[PILE OF POO⏏]".ord;␤»
..rakudo-{parrot,moar} d8cd80: OUTPUT«128169␤»
btyler benscheirman.com/2014/06/regex-in-swift/ I hadn't realized that swift could declare operators ("func =~ infix { <stuff to wrap ugly regex and present it like perl/ruby> }") 18:44
er, sorry, messed it up. you predeclare the operator (operator =~ infix {}) and attach a func to it later 18:46
FROGGS why do they implement the old syntax? :P 18:49
arrgggg!! Unmarshallable foreign language value passed for parameter 'module_context' 18:54
vendethiel FROGGS: the question is : why did no other language get it right before ? 18:56
FROGGS vendethiel: they do not want to scare off users I suppose 18:57
vendethiel FROGGS: mmh ?
FROGGS so, these older languages would need to change a lot to do what Perl 6 has now 18:58
and that would perhaps drive users away
but I dunno, I'm just a hacker :o)
vendethiel Syntax is not that relevant, really. 18:59
rurban_ FROGGS: which icu version does camelia use?
vendethiel I'm talking about reusability
FROGGS rurban: no idea
rurban_ had to kill my browser for 10 minutes to get better benchmark results
I can try it icu 4.8 and 4.4 also for the parrot whitespace issues. Maybe I have a too new one 19:00
FROGGS rurban: I have icu 4.8.1.1, and the tests work for me too
rurban_ I was testing with 5.2
FROGGS hmmmm
we'd need to work around these icu changes 19:01
rurban_ It could be unicode 6.0 - 6.2 which my parrot supports now
yes
FROGGS I'm glad that MoarVM has the unicode database built-in...
timotimo m: say (1+2i, 2+3i, 4+4i, 1+1i).classify({ $_.re, $_.im }); 19:02
camelia rakudo-moar d8cd80: OUTPUT«p6listitems may only be used on a List␤ in method classify-list at src/gen/m-CORE.setting:9550␤ in method classify at src/gen/m-CORE.setting:1577␤ in block at /tmp/lmYCkyzzt1:1␤␤»
timotimo m: say [1+2i, 2+3i, 4+4i, 1+1i].classify({ $_.re, $_.im });
camelia rakudo-moar d8cd80: OUTPUT«p6listitems may only be used on a List␤ in method classify-list at src/gen/m-CORE.setting:9550␤ in method classify at src/gen/m-CORE.setting:1577␤ in block at /tmp/f59yfRmHSM:1␤␤»
timotimo ... oh?
p: say [1+2i, 2+3i, 4+4i, 1+1i].classify({ $_.re, $_.im }); 19:03
camelia rakudo-parrot d8cd80: OUTPUT«Can not get attribute '$!items' declared in class 'List' with this object␤ in method classify-list at gen/parrot/CORE.setting:9481␤ in method classify-list at gen/parrot/CORE.setting:9461␤ in method classify at gen/parrot/CORE.setting:1581␤ i…»
timotimo p: say (1+2i, 2+3i, 4+4i, 1+1i).classify({ $_.re, $_.im });
camelia rakudo-parrot d8cd80: OUTPUT«Can not get attribute '$!items' declared in class 'List' with this object␤ in method classify-list at gen/parrot/CORE.setting:9481␤ in method classify-list at gen/parrot/CORE.setting:9461␤ in method classify at gen/parrot/CORE.setting:1581␤ i…»
timotimo p6: say List.new(1+2i, 2+3i, 4+4i, 1+1i).classify({ $_.re, $_.im }); 19:04
camelia rakudo-jvm d8cd80: OUTPUT«().hash␤»
..niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Excess arguments to List.new, used 1 of 5 positionals␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (List.new @ 1) ␤ at /tmp/tmpfile line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4595 (ANON @ 3) …»
..rakudo-parrot d8cd80: OUTPUT«Can not get attribute '$!items' declared in class 'List' with this object␤ in method classify-list at gen/parrot/CORE.setting:9481␤ in method classify-list at gen/parrot/CORE.setting:9461␤ in method classify at gen/parrot/CORE.setting:1581␤ i…»
..rakudo-moar d8cd80: OUTPUT«p6listitems may only be used on a List␤ in method classify-list at src/gen/m-CORE.setting:9550␤ in method classify at src/gen/m-CORE.setting:1577␤ in block at /tmp/tmpfile:1␤␤»
timotimo m: say [1+2i, 2+3i, 4+4i, 1+1i].categorize({ ($_.re, $_.im) }); 19:07
camelia rakudo-moar d8cd80: OUTPUT«("1" => [Complex.new(1, 2), Complex.new(1, 1), Complex.new(1, 1)], "2" => [Complex.new(1, 2), Complex.new(2, 3)], "3" => [Complex.new(2, 3)], "4" => [Complex.new(4, 4), Complex.new(4, 4)]).hash␤»
rurban_ I've added the missing parrot unicode charcater names as github.com/parrot/parrot/issues/1075 19:18
[Coke] we need to be clear about which version of unicode is being tested/supported. 19:35
[Coke] (will help avoid cross-version test failures) 19:35
rurban_ I checked the UnicodeData.txt versions. LINE FEED always was "LINE FEED (LF)" (from 4.0 until 6.3) 19:36
www.unicode.org/Public/
unicode 2.0 - 3.0 used "LINE FEED" only
unicode 1.0 had no name 19:37
FROGGS this might be to blame/check also: nqp/src/vm/parrot/ops/nqp.ops:3183:inline op is_uprop(out INT, in STR, in STR, in INT) :base_core {
rurban_ I'll check now what's up with icu
rurban_ Oh, good catch FROGGS 19:38
FROGGS: But didn't you say your nqp/perl6-p passes these tests? 19:40
FROGGS it does 19:41
rurban_ So I can only think of icu
FROGGS things is that we can perhaps still query icu in a way to get at that information
rurban_ I'll try to get at the bottom of this
FROGGS rurban_++
rurban_ It's parrot already failing in find_codepoint "NEXT LINE (NEL)" => -1 20:03
rurban_ icu refuses to resolve "LINE FEED (LF)". tchrist against for it bugs.python.org/issue12753, python was against it as they "are not defined in the Unicode standard" 20:38
... tchrist argued for it 20:39
timotimo i wonder what raydiak is up to these days 20:42
colomon masak: I'm puzzled by Text::Markdown
rurban_ Oh I understand now. "LINE FEED (LF)" is indeed not the proper unicode name, <control> is. "LINE FEED (LF)" is just the name alias. that's why icu fails. need to find this API now 20:49
FROGGS yay! I fix my hang in v5's statmentlist rule! 20:53
rurban_: that is what I was thinking
we put a lot of effort in parsing the unicode database to get all names and aliases right for MoarVM 20:54
rurban_ I wonder why everybody else does this too. perl5, python, moar, ... does ibm really not provide this API?? 20:55
FROGGS rurban: I see it that way: when I have code that uses unicode stuff, and I know it works with the compiler of my choice version 1.2.3, I don't wanna see it broken because somebody has a newer libicu 20:57
FROGGS that is why Perl 6 is meant to let you choose your unicode version for your part of your program 20:57
(not that this is supported right now, but this will get important some day) 20:58
rurban_ I don't see that any icu version ever could produce a correct result for control chars so far. They refused to support these names. Looking now how to search for Name_Alias 20:59
timotimo how much ram does a single copy of the database cost?
FROGGS good question 21:01
[Sno] Holland:Spain 5:1 - gz Oranje :) 21:09
FROGGS m: Holland:Spain 21:11
camelia rakudo-moar d8cd80: OUTPUT«===SORRY!=== Error while compiling /tmp/Oxd22DiwHr␤Undeclared name:␤ Holland:Spain used at line 1␤␤»
[Sno] big issue 21:12
that must be supported
FROGGS ahh, I don't know :o)
I don't even like Tennis
[Sno] Holland:Spain must produce "eliminated" or "weggefegt"
FROGGS *g* 21:13
[Sno] btw FROGGS - you tell me when p6 can support native binding - I'd like to add support like Unix::Statgrab to p6, too 21:16
or tell Liz and she tells me next niederrhein.pm 21:17
FROGGS [Sno]: we have NativeCall that should do the trick 21:18
[Sno] nope
FROGGS no?
why not?
[Sno] I tried to explain that to you in Lyon and to someone in Kiev
FROGGS ahh, I remember some weird discussion :o) 21:19
but sadly not too many details :/
[Sno] because NativeCall want eg. to know about bitwidth of parameters
FROGGS yes, that is something that needs to get better
[Sno] I have some experience with native binding in several "VM"'s 21:20
the concept of native call don't work for API's like libstatgrab
SDL is written for special bitwidth, iirc - for portable data types 21:21
FROGGS problem is when we do not have a piece of code that needs some feature, it is hard to implement it
no, not really
[Sno] so if you need piece of code, check out libstatgrab ;) 21:22
FROGGS you also have to care about endianess and graphic card hardware etc
[Sno] but in SDL you can control all that, can't you?
FROGGS how have are about that when making the bindings, and for some bits the "user" has to care 21:23
s/how/you/ 21:24
grrr
you have to care about*
(I'm tired)
[Sno] "you" in sense of "you as the author of the C library"?
FROGGS you as the author of the Perl module that provides the bindings 21:25
[Sno] we shouldn't mix to much side-discussions in there
the Perl module can't guess the bindings - we tried in Kiev and it failed and dumped always
FROGGS you usually can't guess, correct 21:26
[Sno] what is needed is some kind of registering as XSUB in p5 provides (newXSproto_portable ...) 21:27
C code can guess easily 21:28
FROGGS well, you have more information at that point, information you cannot obtain by just looking at a lib 21:29
[Sno] precisely - and p6 should provide a way to get the "more of information" in some way 21:31
anyway - tired, too
FROGGS yeah 21:32
[Sno] but let's keep in touch regarding that
FROGGS perl6-m -MNativeCall -e 'sub get_cpu_totals() returns Int is native("libstatgrab") { * }; say get_cpu_totals()' 21:33
140576014886592
[Sno] long running monitoring appliances isn't a worst early adopter scenario for p6 ;)
FROGGS now we'd need to unpack that mem to cpu_percent_t :o)
[Sno] but it doesn't return in - it returns a pointer to a list of structs
while sizeof(int), sizeof(long) and sizeof(long long), size_t, time_t and void * are surprisingly different here and there (depending on compiler settings etc.) 21:35
padding of structures is interesting, too
FROGGS yes, these are things that are hard to implement, but still possible 21:36
[Sno] I think, having an API like all other VM's provide to C side would be sufficient 21:37
jnthn I suspect NativeCall should export c_int, c_long, c_long_long, c_size_t and so forth.
[Sno] jnthn: and how code the padding? enums?
FROGGS perl6-m ../statgrab.pl 21:38
cpu_percent_t.new(user => 2.80321910516779e-39, kernel => 0e0, idle => 7.00820190575056e-40, iowait => 0e0, swap => 2.63626055885674e-38, nice => 0e0)
jnthn Struct padding is already computed by the alignment of the system you're doing the calls on.
FROGGS does not look that correct yet
[Sno] FROGGS: call it twice
wait a second between the calls
FROGGS perl6-m ../statgrab.pl
cpu_percent_t.new(user => 2.80491607760809e-39, kernel => 0e0, idle => 7.0124898790514e-40, iowait => 0e0, swap => 2.64180325480253e-38, nice => 0e0) 21:39
[Sno] jnthn: the passing might change depending on compiler flags or __attribute__()
passing => padding
FROGGS perl6-m ../statgrab.pl 21:40
cpu_percent_t.new(user => 9.8447437286377e0, kernel => 2.46111631393433e0, idle => 87.6699752807617e0, iowait => 0.0959397628903389e0, swap => 0e0, nice => 0.0241753086447716e0)
that's better
[Sno] rtfm helps ;)
FROGGS I used the wrong C function before
[Sno] how? which wrong one? 21:41
FROGGS %Cpu(s): 9,8 be, 2,5 sy, 0,0 ni, 87,6 un, 0,1 wa, 0,0 hi, 0,0 si, 0,0 st
first I called get_cpu_totals, and the latter was cpu_percent_t *cpu_percent_usage(void);
but you see, the numbers are correct 21:42
the %Cpu line is from `top`
that is the script: gist.github.com/FROGGS/ab192c9eac80bcd1b3c0 21:43
[Sno] but those cpu percent is just gaming ;)
jnthn Well, I don't think [Sno]'s point is "can we get it correct on one system", it's "can we get it correct portably"
[Sno] jnthn: correct
and cpu_percent is finally double[6] - so it's easy
FROGGS all I can say it that it looks like it is working for my little case here 21:44
[Sno] fs_stats is more difficult
network_iface_stats isn't to easy, either 21:45
FROGGS [Sno]: but you see you can play around with it... and when you hit a bug when trying to make fs_stats work, then we have something we can solve
IMO that is a better approach then waiting for me to tell you that it works when it works 21:46
[Sno] FROGGS: it's not worth the time, because it doesn't work portable
FROGGS [Sno]: how do you know? 21:47
[Sno] FROGGS: because we tried in Kiev ;)
FROGGS can you provide the script?
[Sno] p6 only know about int32 or int64 etc.
FROGGS: we didn't keep it after it only dumps 21:48
FROGGS :/
[Sno] but jnthn was around, he might remember
jnthn FROGGS: I already have cases where this happens on Windows vs Linux, fwiw. A C "long" can mean something different between those two.
[Sno] I told you what I think what is required - some native API
jnthn "native API" is kinda underpsecified... 21:49
FROGGS [Sno]: I cannot implement or fix something with that vague sentence, sorry
[Sno] I might have not much experience in writing new languages - but I have strong experience in binding native code into VM's in a portable way
FROGGS I'd prefer to have some specific code that cannot work right now, like calling a specific C-function and handling its return value 21:50
[Sno] let's start with: need to allocate and free VM variables (scalar, arry, hash) 21:51
need to assign values to scalars
jnthn [Sno]: Uh, you *don't* every free things explicitly at a VM level in anything Perl 6 runs on.
*ever
That's Perl 5 thing, assuming ref counting.
But it sounds like you'd like us to recreate XS.
[Sno] jnthn: nope - there're other ways doing that 21:52
jnthn uh, Perl 5 think.
[Sno] but finally any kind of marshalling needs to define a way to exchange data structures ;)
jnthn Yes, that's the point of the CArray and CStruct REPRs.
FROGGS [Sno]: why do you want to alloc+free a scalar? isnt it enough to pass stuff to C function and get proper Perl 6 values back? 21:53
jnthn And there's no reason we can't parameterize them on layout strategy.
[Sno] FROGGS: there're thing you cannot control (lack of information) when calling from perl6 -> native 21:53
jnthn: it's a runtime (link time) thing 21:54
FROGGS still, allocating a Perl 6 variable won't help you there
[Sno] it's a start
jnthn [Sno]: Most things in Perl 6 are :P
[Sno] to many special cases (enum, attribute(packed), attribute(aligned), ...)
so what you need is code a mapping where you know value range of src and tgt 21:55
XS (perl5 api) is little bit over-complex
so no need to repeat 21:56
jnthn Yes, my point in this is specifying the mapping should be *declarative*, not imperative.
[Sno] I don't get the sematic finesse of this sentence ;)
how can you specify a declarative mapping when you don't know the compiler settings for default values of sizeof(enum), attribute(packed), attribute(aligned) 21:58
in C, changing enums might change their size - but once created mapping at C level isn't affected 21:59
and think about binding Go libraries, Fortran code or C++ classes 22:00
with a native api (as Lua, Perl5, Python, ... provide) one can easily register objects and methods and have small facades/proxies calling the native objects 22:01
c++ exported functions name mangeling can be "interesting" - at least when you never seen the compiler before 22:02
jnthn For the cases where we can't reaonably have NativeCall work out, there's absolutely nothing stopping you writing such an adapter. It's just that it's this time a things NativeCall understands => the library adapter. 22:03
In fact, I think people already did this.
[Sno] yes, it's the last fallback 22:04
but always prefer better solutions
jnthn Asking for a "native API" to "the VM" in a Perl 6 context doesn't make a lot of sense. Which VM? 22:04
[Sno] it's a several step request
JVM supports it - and it's likely possible to define in Perl6 to call "external JVM functions/methods" 22:05
otherwise it wouldn't be possible to call Java code
jnthn Link me the thing you're referring to with "JVM supprots it".
jnthn (So I've actually got a concrete example of what you're after.) 22:06
[Sno] a few years ago in a Project we played with that
I have to dig, but I always assumed there was a way
FROGGS okay, one problem with sg_get_fs_stats is that the returned structure starts with the char*, and I don't know how to build up my CStruct class 22:07
[Sno] we finally abondoned JVM for Perl5, because XS suits our requirements much better
FROGGS jnthn: how would I declare an 'is native' sub when the C function looks like: foo(&bar) { ... } ? 22:10
[Sno] jnthn: quick google search results in stackoverflow.com/questions/903530/...dlinkerror being something we played with (I cannot swear - it's a 70% chance)
but maybe NativeCall with some extensions as FROGGS suggest with a "compiler" for loader would be sufficient 22:12
so a "h2p6 statgrab.h" creates the loader for the system it runs on 22:13
FROGGS perl6-m ../statgrab.pl 22:19
cpu_percent_t.new(user => 9.68340015411377e0, kernel => 2.42127728462219e0, idle => 87.8722076416016e0, iowait => 0.0930133536458015e0, swap => 0e0, nice => 0.0231136325746775e0)
sg_fs_stats.new(device_name => "/dev/sda1", fs_type => "ext3", mnt_point => "/")
that CArray bit is ugly: gist.github.com/FROGGS/e61246c87d9b01998fd0 22:20
FROGGS but it works nicely here... last time I used NativeCall it did not supported sized ints at all :o) 22:23
gnight
[Sno] FROGGS: show 2nd entry from fs_stats ;) 22:24
dalek c/redesign-sketch: c04689e | Mouq++ | sketch/ (21 files):
Change colors and create menu in the header

Begin sketching redesign based on imgur.com/a/y1dHo .
This commit changes the colors of the index page to match and adds the menu items and the css to make the header look decent from many sizes.
22:34
Mouq (I've wanted to work on this for mooonths) 22:35
FROGGS Checking for library containing sg_get_process_stats_r... no 22:37
*******************************************
Couldn't find libstatgrab (at least 0.90)
:o(
xenoterracide can do generics in p6? 23:12
Mouq has no idea what generics are 23:14
flussence Duck typing? 23:15
segomos_ typless variables?
+e 23:16
Mouq If it's related to msdn.microsoft.com/en-us/library/vs...00%29.aspx 23:18
, we do have parametric roles 23:19
Which I believe are the same thing?
xenoterracide generics are actually more like compiletime templates 23:21
you put parameters in place of class/interface, and it becomes strict typed 23:22
not sure on parametric roles though
basically it's a template for types 23:25
Mouq xenoterracide: huh. I'm sure masak knows :) 23:28
xenoterracide Mouq: reading s14 yes I'd say parametric roles achieves basically the same thing 23:38