»ö« 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.
TimToady rosettacode.org/wiki/Bernoulli_numbers is an interesting task. I couldn't figure out how do to it with folds and rotates, so for a second solution I used a self-destroying/reconstructing sequence operator :) 00:10
colomon !!!! 00:11
TimToady if anyone else wants to add solutions using other equations, feel free :)
Bernoullis are weird beasties
TimToady colomon++ for making sure Rats and FatRats work :) 00:13
Mouq 's small Perl 6 contribution of the night codegolf.stackexchange.com/a/23787/15012 (sorry xfix++) 00:15
benabik Mouq: You could make it shorter and remove the note about associativity simply by removing support for exponents. :-D 00:17
Mouq: It takes you 10 characters to include it anyway. ;-) 00:18
colomon TimToady: self-destroying sequence operator hurts my head. 00:19
TimToady Mouq: this seems like it's solving a more complicated problem than is given at the top of the page 00:20
Mouq colomon: Done 00:22
TimToady: .eval works too, but you get bonus negapoints for not using eval or similar 00:23
Mouq That should probably say 'points' not 'characters' come to think of it 00:23
Mouq I don't think the "accepted" Perl 5 solution gets anywhere close to actually solving it.. :/ 00:28
TimToady the task at the top of the page says nothing about expressions 00:30
so maybe it's solving a different 'it'
benabik It does mention expressions, under Scoring. (poorly organized, IMHO) 00:31
Mouq TimToady: "-50 Bonus if your code can handle simple expressions, for example 55*96-12" 00:31
TimToady okay 00:31
Mouq But I agree, it says otherwise in the beginning 00:31
Anywho
The task is closed :) 00:32
And I have homework to do
o/ #perl6
jeffreykegler re Bernoulli numbers: this is in fact the problem Lovelace and Babbage solved for her 1843 paper 01:26
TimToady indeed 01:42
LootingLemur looking to build rakudo 2014.02 but does proxy does not allow git. Since no star distribution, which do I need to build first: nqp & parrot? 01:52
skids Are you specifically looking for rakudo-parrot rather than rakudo-moar or rakudo-jvm? 02:01
In any case, VM first then NQP then rakudo, I imagine.
LootingLemur thanks 02:11
timotimo rakudo star is only available for parrot so far 02:24
colomon fears he is going to have to translate this $work code to p5 for speed. 02:35
timotimo colomon: not terribly long now and we'll be fast, too 02:36
timotimo beds
colomon hope so!
colomon hmmm, 27 seconds forming and printing out a .perl of a large data structure... 02:38
japhb__ colomon: Yeah, the string performance is right now one of the most frustrating things for me -- partially because I'm used to (for perl5) only having to care if I was using an asymptotically horrid algorithm on a really big dataset. 03:59
I big part of what makes perl ... well ... "Perlish" for me is that I expect it is generally safe performance-wise to do things very idiomatically, rather than having to specify every little detail. Perl 6 helps me think even more abstractly than Perl 5, and yet Rakudo forces me to think about implementation more than perl5. That's jarring. 04:01
But as timotimo says, hopefully that will be getting much better soon. :-) 04:02
.ask jnthn Is there an operation similar to Promise.then that allows me to say I'm not going to fork the execution path, so please just keep it scheduled in the same thread, rather than pessimistically spinning up a new thread to schedule the 'then' code on? 04:05
yoleaux japhb__: I'll pass your message to jnthn.
japhb__ .tell jnthn I'm fine with something like the .vow semantics that would *enforce* the non-forking execution path. 04:06
yoleaux japhb__: I'll pass your message to jnthn.
BenGoldberg n: my @b := gather { my @a; for 0 .. * -> $m { push @a, FatRat.new(1, $m+1); for reverse 1..$m -> $j { @a[$j-1] = (@a[$j-1] - @a[$j]) * $j }; take $m => 0+@a[0] if @a[0] } }; say @b[^61] 04:16
camelia niecza v24-109-g48a8de3: OUTPUT«0 => FatRat.new(1, 1) 1 => FatRat.new(1, 2) 2 => FatRat.new(1, 6) 4 => FatRat.new(-1, 30) 6 => FatRat.new(1, 42) 8 => FatRat.new(-1, 30) 10 => FatRat.new(5, 66) 12 => FatRat.new(-691, 2730) 14 => FatRat.new(7, 6) 16 => FatRat.new(-3617, 510) 18 => Fat…»
BenGoldberg ^ a much faster technique for calculating Bernoulli numbers, for the RosettaCode task :) 04:17
TimToady well, except that then we only want about 30 of them :) 04:21
but yeah 04:22
TimToady that's a heck of a lot faster :) 04:27
TimToady BenGoldberg++ for noticing the duplicated work, the new RC entry is much, much faster, so I ran it up to B(100) :) 04:50
BenGoldberg :) 05:03
TimToady though I'm sure some Haskeller is going to look at how I destroy @a every time through and say "ick" :) 05:06
but it was so convenient getting $j from the remaining size of @a
I suppose I should write the point free version some time just for the good of my immutable^Wimmortal soul 05:09
BenGoldberg When I saw the way your code destroyed @a each time, my thought was... 'wtf?' :) 05:10
TimToady yeah, it's sort of a phoenix algorithm :) 05:12
LootingLemur compiling src/main.o In file included from src/main.c:4: src/moar.h:19:16: uv.h: No such file or directory src/moar.h:25:21: dynload.h: No such file or directory 06:03
trying to compile moar from source
Timbus_ have you cloned the cubmodules 06:12
submodules*
TimToady that's a buglette that jnthn++ left in his latest patches, I think 06:13
you probably want to use the versions picked by rakudo for the moment
rather than using HEAD
see irclog.perlgeek.de/moarvm/2014-03-11#i_8419288 06:15
or figure out how to get the right include directory installed maybe 06:16
moritz \o 06:30
LootingLemur thanks 06:46
perl007 hi 07:18
is there a number larger than any other number but itself, aka Inf? 07:19
not for range construction, just simple assignment, comparison 07:21
Timbus_ .. you mean Inf ? 07:22
perl007 where could i read about it? 07:24
Timbus_ perlcabal.org/syn/S02.html#Infinity_and_NaN 07:26
perl007 thanks 07:27
Timbus_ theres not much there,
brrt people are still talking about 2048 08:43
awesome
moritz still only got to 1024 08:46
brrt only got to 256 or so before giving up… :-) 08:47
yakudza 512 ): 08:48
tadzik hm. The game didn't appeal to me at all 08:49
cosimo_ what game? 08:51
moritz cosimo_: gabrielecirulli.github.io/2048/ 08:52
masak_ morning, #perl6 08:59
huh. someone seems to have taken my nick. or something.
-!- Irssi: Your nick is owned by Martin Rychlovsky [~masak@20.38.broadband15.iol.cz]
tadzik huh
masak_ I didn't know that could happen. I'm pretty sure I needed to identify with NickServ every time, and so on. 09:00
anyone know what the prudent thing to do in this case is?
tadzik go to freenode #staff
they fix problems
masak_ oki
tadzik++
tadzik they're the reason I'm not tadzik_ :) 09:00
on the other hand: tadzik was registered, tadzik_ wasn't, and thanks to freenode #staff I conquered tadzik 09:01
because it was unused for a year or two
masak phew. 09:03
moritz masak: you can /msg identify nickserv masak <yourpass> and then /ghost masak 09:04
oh, I see you already were successful
masak yes, #staff did indeed help me quickly. 09:04
moritz: the incantation I used, btw, was 'regain masak <pwd>' 09:05
(to nickserv)
moritz masak: oh nice, a shortcut
jnthn .tell japhb__ We don't have such introspection yet, sadly. Agree its needed. Also at some point the scheduler should start tuning itself based on throughput...
yoleaux 11 Mar 2014 23:43Z <japhb__> jnthn: Is there any way from Rakudo to see how many threads are actively running tasks, how many are blocked on e.g. IO, how many tasks *could* run if there was a thread available, etc? I'm at the point now that I'm wanting to optimize the use of my thread pool to keep all my cores busy, and it would help to be able to introspect the states.
11 Mar 2014 23:47Z <japhb__> jnthn: A sample use case: I have an app that starts up chewing CPU in one or two cores, launches a bunch of tasks in different threads, they all start communicating with external processes, all cores max out briefly, some tasks finish, others go to low-CPU state and machine drops to only a core or two used for another 20 seconds before finishing. And now I want to know why. :-)
04:05Z <japhb__> jnthn: Is there an operation similar to Promise.then that allows me to say I'm not going to fork the execution path, so please just keep it scheduled in the same thread, rather than pessimistically spinning up a new thread to schedule the 'then' code on?
04:06Z <japhb__> jnthn: I'm fine with something like the .vow semantics that would *enforce* the non-forking execution path.
jnthn: I'll pass your message to japhb__.
masak and then 'set enforce on', so it's less likely to happen again.
jnthn .tell japhb__ It will not spin up a new thread for "then" if there's already a free one, though I guess the current doesn't count as free. The right API design is to make .then take a scheduler to use to schedule the then, though. Then you'd just pass it CurrentThreadScheduler and be done. 09:09
yoleaux jnthn: I'll pass your message to japhb__.
tadzik oh, I thought the regular masak was re-registered by someone 09:10
masak not sure what happened. 09:11
but it was easy to undo.
jnthn TimToady: The "doesn't build" issue was about Rakudo's extops not building against latest Moar HEAD, nto Moar itself not building...that one looks like a separate issue... 09:19
timotimo o/ 11:11
masak \o 11:12
colomon |o| 11:24
perl007 perl6: ([7, 0], [9, 1], [14, 2], [Inf, 3], [Inf, 4]).min.perl.say; 11:27
eh
camelia niecza v24-109-g48a8de3: OUTPUT«[7, 0]␤»
..rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«[14, 2]␤»
perl007 how do we paste code here and what this should print? 11:28
timotimo you can put code onto gist.github.com and then write r: and_so_on/... to execute it 11:29
masak perl007: I don't remember reading anything about how arrays should sort wrt each other.
perl007: arrays aren't really value objects, they're reference objects, so it's not clear to me they should even be orderable.
timotimo aye. it would probably be wise to use a .sort with a custom metric and just get the [0] 11:30
masak perl007: what timotimo said.
perl007 well, min : {$_[0]} works, so no sorting, ok, thanks 11:31
timotimo oh, i didn't realize min had that. cool.
masak r: say [[1, 2, 3], [4, 5, 6], [-7, 5]].min( *[0] ) 11:43
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«-7 5␤» 11:44
masak perl007: *[0] is a shorter way to write { $_[0] }
timotimo r: my %foo of Hash; %foo<bar><baz> = 1; say %foo; 11:58
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«("bar" => {"baz" => 1}).hash␤» 11:59
timotimo i'm wondering if we should warn if the user types "my Hash %foo" or "my Array @a", as that means "hash of hashes" or "array of arrays" respectively, even though it *looks* like "my %foo is a hash" instead 12:01
we could then suggest to either use "my %foo of Hash" or "my %foo is Hash" instead to make it more clear
moritz *finally* won 2048 12:03
time to close the browser tab, and forget the URL
timotimo a friend of mine also told me he won and is now free to be productive again
timotimo masak: there's a rakudobug for you to report in #moarvm :) 12:06
_sri is the graal and truffle stuff for the jvm as exciting as it sounds here? www.chrisseaton.com/rubytruffle/how...y-truffle/ 12:14
masak moritz: so, what's the trick? :) 12:20
moritz masak: the trick is to order the big-numbered tiles in ascending order, for example on the bottom row 12:21
masak r: sub z of Int { }; say &z ~~ Callable
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«True␤»
masak r: sub z of Int { }; say &z ~~ Callable[Int]
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«False␤» 12:21
masak submits rakudobug
moritz: ooh
moritz and then row above that contains tiles with smaller numbers, with the biggest in right corner
moritz in fact I had the bottom two rows ordered 12:22
and then once you get a tile that's big enough, it can be propagated along the (2) bottom row(s)
masak r: multi x(Int &y) { say 1 }; multi x(Str &y) { say 2 }; sub z of Int { }; x &z 12:23
camelia rakudo-moar 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤ in sub x at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤ in any at gen/parrot/BOOTSTRAP.nqp:1219␤ in any at gen/parrot/BOOTSTRAP.nqp:1210␤ in sub x at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-jvm 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤ in any at gen/jvm/BOOTSTRAP.nqp:1212␤ in any at gen/jvm/BOOTSTRAP.nqp:1202␤ in sub x at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
moritz it's not quite trivial to actually keep it up, but with a few trials, I made it 12:24
masak ...how come the stacktrace of moar is different from JVM and Parrot, above? 12:27
moritz seems the stacktrace filtering only filters out BOOTSTRAP on moar 12:28
might be a bug
masak that's what I was thinking...
sergot hi o/ 12:30
masak sergocie! \o/ 12:31
colomon r: my $a = "this is a test".comb.set; for $a -> $elem { say $a; }; 12:38
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«No such method 'set' for invocant of type 'List'␤ in block at /tmp/tmpfile:1␤␤»
colomon r: my $a = "this is a test".comb.Set; for $a -> $elem { say $a; };
camelia rakudo-parrot 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«set(t, h, i, s, , a, e)␤»
..rakudo-jvm 1aeb7c: OUTPUT«set(a, e, , h, s, i, t)␤»
colomon could have sworn it was supposed to be .set rather than .Set... 12:39
tadzik the output from jvm almost says "shit" :) 12:40
masak colomon: no, it's .Set because it coerces to a Set. 12:45
colomon: as far as I know, only the subs are lower-case.
colomon but it's .hash rather than .Hash?
masak yeah :/
and .list rather than .List 12:46
timotimo oh, huh.
colomon I foolishly expected consistency.
colomon is pretty sure he did try .Hash first, earlier this week
colomon is using Set operations in his code for $work, btw. ;)
himanshu hello 12:50
tadzik hello
himanshu how are you tadzik?
tadzik pretty well
himanshu I am glad to see so many people here... 12:51
how is perl 6 going on?
masak himanshu: it's going very well! 12:52
moritz it's progressing fine, unless when I distract #perl6 with addictive games :-)
masak himanshu: Rakudo now has three very mature backends, each with its own superpower. 12:53
himanshu: Parrot has All The Modules, JVM has Really Quite Fine Threading Support, and moar is Quick and Nimble.
yakudza masak, So if I use parrot I can use all perl5 modules ? 12:55
timotimo masak: well, moar is still a little immature 12:56
himanshu so, when will it release? I was thinking of starting to use Rakudo
hoelzro good morning #perl6!
himanshu: I've been using it for a while 12:57
I haven't used it for
*all* of my stuff, but it's fun to work with!
you do encounter the occasional bug, though
and performance is still improving
on a side note, I saw this article on JRuby last night: www.chrisseaton.com/rubytruffle/how...y-truffle/ 12:58
thought others here might find it intersting
timotimo currently the kinds of bugs you're going to encounter are usually easily workaroundable
hoelzro interesting, even
himanshu I want to create crawlers using Perl 6, will be crawling shopping site more
hoelzro timotimo: that's a good point
timotimo and "is still improving" is a nce way to spell "still sucks" :)
timotimo (and bugs you find are mostly fixed soon rather than late) 12:58
gotta run now 12:59
hoelzro timotimo: you saw right through me ;)
but it's made *huge* strides since I started playing
timotimo aye
timotimo kicks himself for still procrastinating so heavily on that block inlining optimization for nqp
AFK for real now.
himanshu bye bye 13:00
tadzik yakudza: nah, that doesn't work 13:02
masak meant all Perl 6 modules:)
masak timotimo: "is still improving" does not necessarily mean "still sucks"... "good" and "improving" are mostly orthogonal concepts. 13:27
JimmyZ it's good but needs to be better 13:29
jnthn Note that .hash/.list don't give you exactly Hash or List. .list on an Array gives you back the Array. 13:34
masak yeah, that's a good point. 13:47
they're... "fuzzy casts" or something like that.
moritz they are more like .positional and .associative 13:56
masak right. 14:05
masak type casting is hard. 14:06
[Coke] what does the "of Int" in "sub z of Int {} " indicate? 14:34
masak [Coke]: that the return value has to be Int.
[Coke]: which, now that I think about it, is a weird, isn't it? because that empty sub obviously doesn't live up to that contract. 14:35
AFAIR, 'of Int' and 'sub z(--> Int)' are the same.
moritz and 'returns Int' 14:36
[Coke] -1 for timtoady there.
at least lets collapse of/returns into one. 14:37
[Coke] m: sub z of Int {}; say z.WHAT 14:38
camelia rakudo-moar 1aeb7c: OUTPUT«Type check failed for return value; expected 'Int' but got 'Any'␤ in any return_error at src/vm/moar/Perl6/Ops.nqp:596␤ in sub z at /tmp/A973PQEEQX:1␤ in block at /tmp/A973PQEEQX:1␤␤»
masak now of/returns I'm pretty sure are/used to be different.
[Coke] masak: we get a runtime check, anyway.
m: sub z of Int {return "eek"}; say z.WHAT
camelia rakudo-moar 1aeb7c: OUTPUT«Type check failed for return value; expected 'Int' but got 'Str'␤ in any return_error at src/vm/moar/Perl6/Ops.nqp:596␤ in sub z at /tmp/qnviywe5Y7:1␤ in block at /tmp/qnviywe5Y7:1␤␤»
[Coke] ^^ seems like we could compile time catch that one, at least. 14:39
timotimo there's "sub foo of Int (signature) { body }" and there's "sub foo (signature) returns Int { body }" 14:42
timotimo if you have a bunch of attributes, like "will post" and "will pre", you may find the "returns" form more readable 14:42
if you have a complex/smart signature, you may want to put a --> in there, since it's already a big thingie
if it's just a little thing, the "of" form seems prettiest, i guess
moritz kindas likes the 'returns' form, and --> Int is valuable in a non-routine signature, where 'returns' or 'of' aren't an option 14:44
*kina
*kinda
whatever
[Coke] so --> Int is the bare minimum, and of and returns are both sugar?
moritz aye 14:45
timotimo what's the current spelling of "return nothing"? "returns Nil"? 14:47
r: sub foo returns Nil { 1 }; say foo; 14:48
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c: OUTPUT«Type check failed for return value; expected 'Any' but got 'Int'␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-moar 1aeb7c: OUTPUT«Type check failed for return value; expected 'Any' but got 'Int'␤ in any return_error at src/vm/moar/Perl6/Ops.nqp:596␤ in block at /tmp/tmpfile:1␤␤»
colomon Is there a p6 module for handling (english) pluralization and punctation in lists?
tadzik I don't know of any 14:49
colomon will put up with his report lacking proper grammar for a bit. 14:50
[Coke] colomon: that seems like a portable p5 module. 14:54
colomon "portable"?
[Coke] (not that you want to port it, but I bet it would be doable by someone looking to get dirty with P6)
able to be ported.
colomon oh, as in a non-lazy person could port it?
tadzik if you find me a Perl 5 module, I can do this 14:54
[Coke] Yes. not implying you, you're busy. :)
tadzik for now, I'm not exactly sure what you need :)
turning 1 into 1st etc? 14:55
colomon no, turning attribute into attributes if there is more than one
and then a list into A
[Coke] metacpan.org/pod/Lingua::ENG::Inflect ?
colomon or A and B
or A, B, and C
[Coke]: yes, like that for the first part. though that is seriously overkill for my current needs. 14:56
WORDLIST there is the second bit 14:57
masak I think the 'of' form is defendable as well -- because it occurs for list and map types, where 'returns' doesn't make much sense. 15:11
don't ask me what the subtle difference was between 'of' and 'returns', though -- ISTR there was one, but I'm drawing a complete blank on what it might've been.
timotimo still wondering how best to work against the massive duplications of strings in rakudo 15:12
like __lowered_param_$n for example; there I can just have a little list of strings to cache these, since it definitely seems to be worth it 15:13
but what about other cases?
like OPER being crazy common
jnthn OPER we should look into where it's coming from 15:26
Some of the others, though, we could have a %*INTERNS declared in TOP or comp_unit, and then write a sub intern in Actions.pm that we call in various places. 15:27
timotimo mhm
i wasn't quite sure where OPER came from; it must be something non-constant, but it's not a composite of two, so it must be the result of some substring? 15:28
jnthn maybe, yeah...
Well, it's the ones that make it into gen2 that we really want to worry about rather than those that just exist in the nursery for a bit.
was OPER one of the gen2 ones
?
timotimo yes
incredibly common there
Ven (what's gen2 ?) 15:29
timotimo where old objects come to live after they've proven that they're going to stick around longer
garbage colllector terminology
huh. 15:31
Ven (ooh :D)
timotimo my install/include contains dyncall/, but there's only dynload.h and dynload_alloc.h in there
xfix Interesting. I just installed Perl 1, and Perl 5 removes deprecated Perl 1 syntax, like do call()... 15:33
timotimo oh, ouch
modules.perl6.org shows "YAML Ainât Markup Language" 15:34
xfix Yet do call() still works in Perl 6.
timotimo we are perlers, we ought to know better than that! :)
< Content-Type: text/plain; charset=utf-8
moritz timotimo: yes, know better than that!
timotimo that's for raw.github.com/ingydotnet/yaml-pm6.../META.info
jnthn timotimo: OK, curious... 15:35
huf ingy, helping people debug unicode bugs since forever ;)
timotimo :3
well, the html claims to be utf8
Ven never believe the html 15:36
timotimo well, the http header doesn't give a content encoding, only the content-type text/html
and then <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 15:37
and then YAML Ainâ<U+0080><U+0099>t Markup Language</dd>
sergot Is there one vm we should focus on or should we develop all of them? :) 15:39
huf usual wtf8
timotimo my $json = $ua->get($proj)->res->json; ← this is how the Info.pm in P6project of modules.perl6.org/web/lib fetches that; $ua is a Mojo::UserAgent
i don't see how to tell mojo::useragent to do anything with encoding 15:42
_sri timotimo: encoding? 15:44
timotimo maybe we should replace my $json = $ua->get($proj)->res->json; with my $json = decode_json($ua->get($proj)->res, binmode => ':encoding(UTF-8'))
oh, hold on
_sri wtf?
timotimo that binmode came from read_file, not from decode_json
my bad
_sri json is always utf-8
ingy huf: :D
ingy huf: sorry ☺ 15:45
timotimo okay, i have no clue of perl5. this is where i get off and someone else can hop on :)
huf ingy: huh? you provide a vital service!
xfix JSON is any UTF.
_sri not true
huf ingy: this is also why my name on certain sites is hüftlb cícáfős 15:46
xfix _sri, RFC 4627
ingy
_sri JSON is only UTF-8 now... the latest RFC revision made that pretty clear 15:46
xfix To be exact, "3. Encoding"
_sri xfix: RFC 7159
_sri RFC 4627 is obsolete 15:46
_sri the whole check the first two bytes to detect the encoding stuff is gone for good 15:47
a bare "null" is now valid JSON too... fun times
huf timotimo: this works fine: perl -Mstrict -Mwarnings -MData::Dumper -MMojo::UserAgent -E 'binmode STDOUT, ":encoding(UTF-8)"; say Mojo::UserAgent->new->get("raw.github.com/ingydotnet/yaml-pm6...cription}' 15:48
xfix Makes sense... considering that now the first two characters aren't guaranteed to be ASCII.
If you can return string directly.
moritz fwiw the Mojolicious version might just be Very Old
huf so either your module versions are old and this is an already fixed bug OR someone isnt setting encoding layers properly
timotimo moritz: that may be an easy fix in that case :)
layers and layers and layers ...
xfix _sri, even in the newest JSON, UTF-16 and UTF-32 are allowed. 15:49
"JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32." 15:50
timotimo and JSON5? :)
xfix (by the way, I don't consider UTF-7 to be UTF)
_sri moritz: don;t think that matters here, it's just STDOUT not handling characters by default
xfix JSON5 doesn't exist.
timotimo it does not?
xfix Besides, it's not that JSON is compatible with JS.
moritz Jackson Five exists
huf well, used to 15:51
xfix ES5 has JSON object, but JSON5 doesn't exist.
_sri timotimo: welcome to perl5 :)
timotimo xfix: you're not up to date then :)
masak xfix: what does 'doesn't exist' mean?
Juerd I've never encountered any UTF-16 or -32 JSON.
xfix Because it's waste of space, perhaps?
masak xfix: did you mean that you haven't heard of it?
xfix Possibly.
_sri xfix: yea right... except there is no official way to signal any encoding other than UTF-8 now ;) 15:52
timotimo it's not really all that official, to be fair
xfix Anyway, JSON is not compatible with JS, because it allows \u2028 directly in strings, when JS doesn't.
masak right. not a strict subset.
timotimo what character is that?
xfix That could be as well a mistake, but it stays.
Juerd I think it'd be silly to have a JSON library handle anything other than UTF-8. It'd be spec-correct, but UTF-8 is the de facto standard for JSON.
masak m: say "\x2028".uniname
camelia rakudo-moar 1aeb7c: OUTPUT«No such method 'uniname' for invocant of type 'Str'␤ in block at /tmp/1ucLVVadpe:1␤␤»
xfix .u 2028
masak dang. :)
yoleaux U+2028 LINE SEPARATOR [Zl] (
)
xfix .u 2029 15:53
masak m: say "\x2028".uni
yoleaux U+2029 PARAGRAPH SEPARATOR [Zp] (
)
camelia rakudo-moar 1aeb7c: OUTPUT«No such method 'uni' for invocant of type 'Str'␤ in block at /tmp/1RJpZrQgGi:1␤␤»
masak m: say "\x2028".uniprop
camelia rakudo-moar 1aeb7c: OUTPUT«No such method 'uniprop' for invocant of type 'Str'␤ in block at /tmp/bubYgHm9id:1␤␤»
xfix Those two characters are disallowed in strings.
JS considers those to be new lines.
timotimo masak: .&uniprop
xfix But JSON doesn't.
Juerd _sri: UTF-16 or UTF-32 JSON can very easily be detected because there will be known plain text. The first character of JSON is always within the ASCII range.
masak timotimo: oh, right.
m: say "\x2028".&uniprop
camelia rakudo-moar 1aeb7c: OUTPUT«Zl␤»
TimToady m: say "\x2028".&uniname
camelia rakudo-moar 1aeb7c: OUTPUT«LINE SEPARATOR␤»
_sri Juerd: not anymore! ;p
Juerd _sri: ?
_sri Juerd: see RFC 7159
xfix The first character is still in ASCII range. 15:54
masak oh, so JSON is *finally* a strict subset? phew!
timotimo the first character still has to be ", doesn't it?
_sri Juerd: like i said before... a bare "null" is now valid JSON too :)
xfix null is in ASCII range.
timotimo is that a bare "null" or a "\"null\""?
xfix To write anything non-ASCII, you have to type " first.
huf who cares, " and n are both in ascii
_sri timotimo: bare
timotimo but not a null byte, yeah? 15:55
_sri bare strings and numbers are valid too now
Juerd _sri: It explicitly defines null as %x6e.75.6c.6c so that's definitely within the ASCII range.
string = quotation-mark *char quotation-mark 15:56
xfix Second byte may not be in ASCII range, but first has to be.
Juerd quotation-mark = %x22 ; "
No bare strings.
xfix I mean, character.
Talking about bytes doesn't make sense here.
Juerd xfix: First non-whitespace character.
timotimo huh. 15:57
Juerd But it will still be one of less than two dozen allowed characters, each of which don't clash with any UTF-8 encoding of whitespace :)
timotimo my local ADT folder contains a .work with a bunch of subfolders (probably from when i installed it via "panda install .", and all of them include an "ogotype" directory
note the missing l from the beginning
how did that happen? %)
Juerd But still, nobody actually uses JSON with UTF-16 or -32 so why bother. 15:58
huf hahahahah how sure are you?
xfix Also, JSON has at least one byte.
The second doesn't have to exist.
Juerd huf: Incredibly.
huf .... just for that, lemme make one ;) 15:59
Juerd huf: It wouldn't change the fact that nobody uses JSON with UTF-16 or -32. It would redefine "nobody" to include you :)
xfix JSON parser is easy.
JSON writer is even easier.
Juerd xfix: And still there's so much "JSON" with unquoted keys... 16:00
huf Juerd: well, i'm no scotsman :)
xfix Unquoted keys is not JSON.
huf it's jsonesque
xfix It could be JS5N, or whatever the JSON based on ES5 would be called, but I don't care.
Juerd xfix: Indeed it isn't. But unlike UTF-16 and UTF-32 JSON, illegal unquoted keys JSON does actually exist.
xfix And people parse it using eval(). 16:01
Juerd It makes more sense to support bare keys than to support UTF-16 :)
xfix Well, as long they don't call it JSON, it's fine.
It could be YAML easily.
Juerd I hate the semantic indents of YAML. 16:02
And Python.
xfix Nothing stops you from writing {a: "b", c: "d"} in YAML.
Juerd Sigh
Oneliners aren't a solution :)
xfix Or even {a: b, c: d}
Or even {name: YAML, description: Does stuff because why not.} 16:03
Also, Python isn't that bad. Yes, it requires indentation. But at least it doesn't enforce whitespace any other way. b +c is perfectly fine, for example. 16:05
CoffeeScript is more annoying. It cares about whitespace everywhere.
And if you mistake whitespace position it won't make syntax error... no, it would be too easy - it will guess incorrectly what you mean. 16:06
brrt but coffeescript is totally self inflicted
Juerd This is what keeps me from using coffeescript 16:07
xfix coffeescript.org/#try:call%28%29%20...f%28%29%0A 16:08
Deindent stuff(), and it will be parsed completely differently.
At least some of this nonsense was fixed. For example, if you started the program indented, if you tried to deindent it, the lines simply disappeared. Now it simply complains about "missing indentation". 16:10
For example, int main() {} is completely valid CoffeeScript. 16:13
tadzik reading this discussion makes me never want to touch coffeescript :) 16:16
Ven xfix: That's an issue we're trying to solve ;) 16:17
but the BDFL doesn't want to 16:18
timotimo fixed ADT and wonders why it even worked in the mean time
Ven timotimo: how do you know it worked ;) ?
xfix And there are stupid design decision. ? is defined or operator.
`a ? b ? 42` will complain about `b` not existing, because it's left-associative. 16:19
decisions*
Ven xfix: Backwards compatibility issue
xfix Reminds me of ?: operator in PHP.
Ven I believe we all agree on the team that it'd be better the other way
xfix github.com/jashkenas/coffee-script/issues/2199 - it's wontfix. 16:20
Ven xfix: I removed the wontfix :) 16:21
TimToady it's very difficult to recover from early stupid design decisions when people are using your language :) 16:22
Ven Yes. It's fixed in coffee's popular fork(s), though
xfix I actually wonder what would fixing this break.
Ven Even "Coffee 2.0" has it right
Ven xfix: Maybe corner cases of `and` & `or`, but these would probably be very very poor taste and discouraged in the first place 16:23
Some people abuse or/and to mean `if else`
xfix Alternatively, it could be chain operator, like certain operators in Perl 6.
Ven xfix: chain operator ?
xfix 1 < 2 < 3 16:24
Ven We have that too
You mean `a?.b?.c` ?
xfix I mean a ? b ? c. 16:25
?. is fine.
Ven xfix: would work with right precedence
TimToady wonders if this is quite the right forum for redesigning coffescript :)
xfix Design mistakes happen. 16:26
Ven Haha, sorry. But you're definitely right on one point : changing stuff *after* is hard
xfix For example, it would be nicer if in fish shell () doesn't interpolate in "".
Ven Isn't even perl6 in that case ? 16:26
xfix But fixing it would break the compatibility. 16:27
masak Ven: isn't even perl6 what?
Ven masak: somewhat restricted due to bc breakages
masak Ven: well, yes, in the sense that we have users and code already.
Ven: but not nearly to the same degree as Perl 5, say.
Ven Yeah, that goes without saying ... 16:28
xfix Perl 5 just removed in Perl 5.20 the old syntax deprecated in Perl 5.
do stuff();
masak \o/
xfix That syntax existed in Perl 1, and it was a mistake. It was removed long time later.
Ven I remember reading TimToady saying something like "Perl 6 is like what Perl 5 could evolve after decades of deprecation warnings"
s/evolve/evolve into/ 16:29
masak Ven: "Think of Perl 6 more as Perl 16" :) 16:29
Ven: that's from a perlmonks post somewhere.
xfix Features were removed, even with bc concerns.
Ven masak: Definitely :)
xfix The biggest example I can think of are pseudo-hashes.
Ven xfix: what are these ?
xfix It's the feature that let you access array keys as hash keys. 16:30
perldoc.perl.org/5.8.8/perlref.html...-as-a-hash
Ven xfix: Thanks -- I never actually used perl 5
xfix It was removed in Perl 5.10, because it was problematic to support in the code.
nwc10 that wasn't the story that I was told. :-) 16:31
xfix It was added in Perl 5.005, but even then it was a bad idea.
xfix They were* 16:31
nwc10 It (also) slowed down all (regular) array accesses
or was it hash accesses. I forget. But it hurt all the code that wasn't using it 16:32
xfix Everything could be a pseudo-hash.
could have been*
masak that's like the lithmus test of a bad feature.
Ven uh yeah, I can see why people may call it a hack :p
TimToady well, it woulda worked out much better if Perl 5 actually dispatched based on a type system, rather than oddles of 'if' statements once you're past the opcode dispatch
masak does it punish people who are not using it?
Ven masak: the doc says it does 16:33
TimToady we could easily put pseudohashes into Perl 6 as a type, and it would have very little effect on the built-ins
nwc10 masak: yes, because in Perl 5 everyone else still gets to execute the "if it's not this funny thing" check
TimToady just look at the typical opcode implementation in P5, it's a maze of nested ifs and elses
masak fails to find TimToady's perlmonks post, and only finds a comment by chromatic old enough to sound optimistic: www.perlmonks.org/?node_id=861690 16:33
masak by the way, I'm glad @people++ are digging into the concurrency bits. 16:34
Ven masak: is that ++ concurrent :) ?
xfix github.com/fish-shell/fish-shell/issues/159 16:35
masak @people»++ :)
xfix This is one of most requested features in fish shell.
But backwards compatibility is backwards compatibility.
And $() is against fish shell design guidelines. 16:37
masak ooh, here www.perlmonks.org/?node_id=861950 is a *list* of things that constitute "ready" for Perl 6.
from *2010*.
I don't know about all y'all, but if I/we ever get around to make that isperl6readyyet.com page, then we should probably consider the things on that list. 16:38
xfix Does Perl 6 have logging framework now?
TimToady 'of' and 'returns' were always just synonyms
masak xfix: you can override $*OUT and $*ERR :)
TimToady but we probably would not have added 'returns' if '-->' had existed at that point 16:39
masak srsly, though. no, I don't think it does have a logging framework.
xfix Something at least comparable with "console" object in JavaScript?
masak xfix: that's $*OUT.
m: say $*OUT.^name
camelia rakudo-moar 1aeb7c: OUTPUT«IO::Handle␤»
masak m: say $*OUT.^methods
camelia rakudo-moar 1aeb7c: OUTPUT«open close eof get getc lines read seek tell write opened t print slurp spurt copy chmod IO path flush encoding d e f s l r w x z modified accessed changed say Str gist perl <anon> <anon>␤»
xfix $*OUT doesn't even print timestamps. 16:40
Ven masak: I actually got to that post :p 16:41
TimToady: what would be 5 things you would remove out of perl 6 if it still was only a spec (and somebody would do the editing part for you) ? 16:44
TimToady there is nothing in there that I would not change based on backward compat 16:45
I still reserve the right to change anything till 6.0.0 comes out
xfix The features that were considered to be bad were already removed.
masak sometimes to the dismay of some of us... :)
(in reply to TimToady)
Ven TimToady: well, you mentioned "returns"
TimToady well, a case could be made for removing 'returns' at this point 16:46
masak maybe we should ditch 'returns'.
'of' is shorter.
and I'm not aware of any big uses of 'returns', knock on wood.
Ven likes `of` but it not quite used to `-->`
xfix This is like join() and implode() in PHP.
Ven I'm too used to "argument lists"
TimToady after --> it's just reverse arguments :) 16:47
masak the thing I feel is weird about '-->' is that signatures are all about parameters... *except* for the '-->' bit, which is about return values.
TimToady it's describing in parameters and out parameters
masak it doesn't make any sense in the var-decl/routine unification of signatures, for example.
Ven masak: same feeling
xfix But what else it could be? sub Int factorial(Int $value) { return [*] 1..$value; } looks quite ugly. 16:49
TimToady it's my Int sub
std: my Int sub factorial(Int $value) { return [*] 1..$value; } 16:50
camelia std 09dda5b: OUTPUT«ok 00:01 129m␤»
TimToady std: my Int sub factorial(Int $value --> Num) { return [*] 1..$value; }
camelia std 09dda5b: OUTPUT«ok 00:01 130m␤»
TimToady hmm, that used to catch the error 16:51
std: my Int sub factorial(Int $value --> Num) returns Str { return [*] 1..$value; }
camelia std 09dda5b: OUTPUT«===SORRY!===␤Extra 'of' type; already declared as type Int at /tmp/JG3AlSaNnb line 1:␤------> ctorial(Int $value --> Num) returns Str ⏏{ return [*] 1..$value; }␤Check failed␤FAILED 00:01 130m␤»
TimToady std: sub factorial(Int $value --> Num) returns Str { return [*] 1..$value; }
camelia std 09dda5b: OUTPUT«ok 00:01 129m␤»
TimToady coulda sworn that one "worked" 16:52
n: sub factorial(Int $value --> Num) returns Str { return [*] 1..$value; }
camelia niecza v24-109-g48a8de3: OUTPUT«Potential difficulties:␤ &factorial is declared but not used at /tmp/o83DNsk0Pb line 1:␤------> sub factorial⏏(Int $value --> Num) returns Str { retur␤␤»
TimToady hmm 16:52
[Coke] coming from java, I'd be happy with "Int sub foo" to mean "sub foo returns Int" 16:53
xfix The thing is it's quite ugly. Integer subroutine foo? 16:54
Anyway, whatever the option will be choosed, don't choose TypeScript method. It's just awful - gist.github.com/xfix/9511216 16:55
Or perhaps it's not, if I think of ":" as "is"...
sub factorial($value is Int) is Int { } 16:56
Of course, backwards compatibility is backwards compatibility. It's not that such huge changes could happen. 16:57
And well, "is" is already used for traits.
TimToady std: sub factorial($value of Int) of Int { [*] 2..$value } 16:59
camelia std 09dda5b: OUTPUT«ok 00:01 128m␤»
perl007 For hash indexes <> is like {''}, shouldn't it be like {""}? For indexing hash of hashes with variable, different brackets look ugly.
xfix perl007, if you need variable, just use {} directly. 17:00
TimToady or «»
xfix Why have both $a<$b> and $a{$b}.
TimToady because they're different 17:01
xfix Exactly.
perl007 <var><string> or {var}<string> which one would be better?
xfix <var><string> is indexing a list as a hash. Obviously it won't work.
variable<> is just a syntactic sugar, if you need a literal key. 17:02
So you don't have to write $_GET['stuff'].
perl007 just sugar with double quotes
why not? 17:03
TimToady because then $a<$b> would mean the wrong thing
it's supposed to mean $a{'$b'}
xfix If you don't like it, you are free to modify language from language itself, or use $a«$b».
And don't propose making single quotes interpolate. There is a reason why they don't. 17:04
perl007 no no, just that one :)
xfix < is single, « is double. It's consistency.
TimToady right, and then we have exactly the same kind of kludge that Perl 5 has with $hash{key} 17:05
xfix Which I hate.
Why I cannot simply type $hash{shift} = 42, or something like this.
Juerd I'm entirely happy with that kludge.
I've learned to write $hash{+shift}
TimToady + as a no-op is another kludge :) 17:06
xfix I also hate this + prefix operator. It's hack.
It's a hack in my opinion*.
Juerd TimToady: I'm entirely happy with that one too, because I need it to cancel the other kludge out :)
xfix: I'm a hacker. I don't mind hacks.
TimToady Physics teacher: Don't tell the mathematicians I said this, but you can just cancel out all these dx's and dy's... 17:07
Juerd :)
xfix Another one is | & ^ behaving differently depending on the variable internal type that can change when you do something as basic as adding zero to it.
Juerd xfix: That I can't stand. 17:08
It's like The unicode bug, but worse.
TimToady well, now, that's the thing, everyone wanted about 361 different things to be fixed, but nobody wanted the same set of things to be fixed :)
xfix xfix@pear ~> perl -E 'my $x = "1"; print $x | "a"; $x + 0; say $x | "a";' 17:09
q1
Juerd TimToady: I'm aware :)
xfix Why adding zero to variable, and doing nothing to it would do something. Because it's Perl.
Juerd xfix: Yes. This is just broken, but most people don't notice because they don't use this part of the language that much. 17:10
TimToady but that's okay, because today is Everyone's a Language Designer Day :)
Juerd TimToady: Sweet! I'll begin this beautiful day by swapping => and : to make Perl 6 look more like Javascript 17:11
metatodon ELDDAY!
Juerd (The real reason is, of course, to drive everyone nuts.)
xfix And I'm going to begin this by removing $ from variables, and adding automatic semicolon insertion.
To make this look more like... JavaScript, you guessed it.
my variable = 42 17:12
Juerd s/my/var/, s/sub/function/ and they'll wonder who added classes, junctions and grammars to JS... :)
metatodon xfix: automatic semicolon insertion? That way lies chaos.
xfix I actually prefer my to var.
var is ugly, but whatever.
Juerd xfix: So do I
xfix And function. Couldn't they have made a shorter keyword? 17:13
Juerd Although I still like "a" better :P
moritz also, 'my' is shorter
Juerd moritz: "a" is even shorter!
metatodon checks if it's April 1 today...
xfix metatodon, I like ASI.
Juerd xfix: fun'd be fun.
xfix github.com/xfix/python-format/blob...-format.js
moritz Juerd: '' is even shorter 17:14
Juerd moritz: Yes, but very hard to see. 17:14
xfix But that would make more bugs. 17:15
I don't want Python.
Or CoffeeScript.
Where you declare new variable without wanting to make a new variable.
Juerd xfix: Of course you don't want any of those. They're all so entirely not Javascript!
TimToady
.oO(and '' is shorter than 'script')
17:16
xfix I actually dislike $ in Perl.
Juerd TimToady: In fact, "" is shorter than almost every "$anything".
huf a 0byte source file has 0 bugs, therefore any shortening is worth it
Juerd huf: Except in Java
xfix: I tried $ sigils in Javascript and found out that I really don't like how they look, but do like being able to tell the difference between things. 17:17
typing-speed-test.aoeu.eu/ is one experiment from that time, that's still online. 17:18
xfix Perl source codes could be cleaner without $@%& noise, but well, it makes Perl feel like Perl.
Juerd Written in 2005 iirc.
[Coke] realizes that xfix is not some new person.
xfix: if you don't like sigils in Perl 6, you can avoid them. 17:19
Juerd [Coke]: New persons (often called "babies") often can't type yet.
xfix [Coke], GlitchMr, just mentioning. 17:20
Juerd: Anyway, 435CPM. QWERTY, lame laptop keyboard.
Juerd xfix: Now try it with a sigil in front of every word ;) 17:21
(Don't... Waste of time!)
xfix This keyboard typing test wouldn't allow me to pass with $ before each word. 17:22
Oh wait, I can.
ok, afk for one minute. 17:23
Juerd It will give you the "raw cpm" at the end of the test.
A typing test, afk?
What are you... Jedi?
428 CPM with $, 625 CPM without. 17:24
xfix 37 CPM.
I mean, 378 CPM.
Juerd 37 would have been worrying.
xfix It's not that I have to type really quickly while programming.
400CPM is reasonable, to be honest.
Juerd I can't program as fast as I can copy words, anyway. 17:25
xfix True.
Juerd But I bet Java programmers can.
xfix Nice job on 625 CPM. 17:25
I never bothered learning how to type on the keyboard.
Juerd Thanks. My high score of 666 was almost a year ago :|
xfix I also often press Backspac. 17:26
Backspace*
Juerd I have something for that too. learn.dvorak.nl/
xfix I use QWERTY.
Juerd That's okay, the javascript will remap it for you ;-)
And once you've learned how to type properly, you can change your system wide settings. 17:27
It'll save you more finger movement than a lack of sigils could ever do.
xfix Is it worth it? I mean, I have lame laptop keyboard that simply cannot be typed on well.
I get better results than 428 CPM when not being on laptop.
Juerd Yes. It's about the distance between keys.
And that's the same for practically all keyboards.
As for laptops: stick to higher end laptops, like Thinkpads, Apples and high-end Dells. 17:28
tadzik laptop keyboard can't be typed on well? Pfeh
Juerd My typing high score was on a Thinkpad keyboard.
tadzik I bought a thinkpad keyboard to my work computer, so I can have a trackpoint and not have to use a mouse 17:29
xfix Well, I guess I'm lying now, considering I have Lenovo laptop.
Juerd tadzik: I found the external ones to be of a lousy build quality.
xfix And the keyboard looks similarly to that in Thinkpads, even if it's not Thinkpad.
Juerd xfix: Oh, but it's different. 17:29
tadzik Juerd: well, it's about as bad as the laptop ones, imo
although the external one didn't lose a key yet 17:30
dalek kudo-star-daily: 9066eed | coke++ | log/ (5 files):
today (automated commit)
17:30
tadzik and I lost my S after.... 2 weeks on a top-tier ThinkPad?
xfix I'm still a student. I don't have money for some expensive computer, lol.
tadzik it took about 2-3 years on a low-tier thinkpad too :P
Juerd tadzik: My external thinkpad keyboard had a few wobbly keys and it bent rather easily. 17:31
tadzik I must say, I didn't try to bend mine :P But it doesn't bend by itself when I type on it, at least I don't notice it
Juerd I get angry. Well, not anymore, but I did.
tadzik it still uses the "old keys" though, I've read bad reviews on the "new keys" externals
but I mostly didn't by the "new keys" because it was wireless 17:32
Juerd I could smash the actual Thinkpad without causing any real damage, but the external Thinkpad-ish keyboard couldn't take hat.
s/hat\./that./
tadzik heh, truee
I don't think the external keyboard has a magnesium skeleton inside, or whatever it's made of
Juerd Yeah, it was the non-island style.
tadzik non-chickens 17:33
Juerd Indeed it doesn't.
Chickens?
tadzik I like island style, makes hair removal So Much Easier
people called them "chicklets", so I changed that to "chickens
"
Juerd I see
tadzik makes all those boring keyboard conversations a lot more interesting
Juerd Hair... yes. Nail clippings however become a new issue.
tadzik (no, I'm not relating it to this one)
(I mean the "omg mechanical keyboards" thing :)) 17:34
metatodon tadzik: you mean flatbeds?
Juerd I have mechanical keyboards. I like them, but not as much as the Thinkpad laptop keyboards.
tadzik I never heard that work before
er, word
Juerd Flat beds, those are image scanners, right? :)
metatodon yep :P 17:35
dylanwh someone was like "Woah, a thinkpad. is that new? they still make those?"
xfix My leopard works, why should I change it?
Juerd dylanwh: It's taken them 4 years to make another high end Thinkpad, and they suck.
metatodon They get hot and I think of them as flatbeds. :P 17:35
Juerd dylanwh: I have an X240 now, and the X201s was better. I've used the T440, and the previous T (I forgot the number) was better.
Juerd But, I need the upgraded hardware, like USB3. 17:36
tadzik I have T430, it's nice
dylanwh yeah. I have a x230. I had an T420 but the screen was *shit*
Juerd Thinkpad screens are always shit 17:36
dylanwh 1600x900 but horrible colors and hard to see
tadzik but even on lenovo.com people rant on x40 series in reviews
Juerd The X240 has ghosting that takes minutes to go away.
dylanwh the x230 has a very nice screen. 17:36
Juerd dylanwh: Low-res.
dylanwh well, yes
Juerd Low res screens are never very nice. 17:37
I don't want my laptop to have a lower resolution than my phone, for crying out loud.
tadzik hmm. I have a 14" 1600x900 in a laptop, and 1680x1050 22" next to it
I hardly see the difference :)
Juerd (Not replacing the phone.)
dylanwh I would've asked for a chromebook pixel except that would've been awkward to ask @mozilla it... ;)
Juerd My external screen is 2560x1440, my laptop does 1920x1080. I'm addicted to high res displays.
tadzik I mean, the difference is extremely visibl 17:38
I'm not sure if it's worth it. It doesn't impact me in any way
Juerd Well, the past few years I've been doing web dev again
dylanwh I find my eyes are bad enough where I have to increase the font size so the extra real-estate isn't much
Juerd And I usually have a .css, a .js, a .html and a .pm open at the same time.
Sometimes extra .pm's or extra .js'es 17:39
Juerd And at the same time, I need a vertically huge browser window for debugging the javascript crap. 17:39
[Coke] lwp-simple is failing tests on R* candidate. 17:49
jsonrpc still failing 17:50
dalek ast: 6ef36a7 | (David Warring [email@hidden.address] | integration/advent2013-day08.t:
adding basic tests for advent 2013 day
18:42
dwarring ... day 08 18:43
[Coke] is warring here?
ah, hi.
are you on questhub?
dwarring hi Coke
yes and no
good idea, put it up on questhub
[Coke] I have some quests you can steal for advent coverage. 18:44
what's your ID?
dwarring checking questhub been a while
[Coke] eh no big deal, you can create your own quests. :) ^H 18:45
dwarring [Coke]: I've created account dwarring on questhub 18:48
[Coke] questhub.io/player/dwarring -> internal http error 19:02
timotimo yeah, rather than "no such player" it gives that 19:04
dwarring rechecking questhub 19:05
dwarring ok, looks like I just signed up then on questhub.org which is a knock-off of questhub.io !?? 19:09
I've got a very old account on questhub.io 19:10
the id is 'david' 19:11
timotimo yeah, it would appear to be pretty cheap. 19:13
dwarring yeah and misleading
i don't think I can change my questhub id easily, so david it is 19:14
timotimo berekuk hangs out here sometimes, he could do it for you i'm sure
dwarring would prefer dwarring but can live with david 19:15
lue Is it normal to get errors like "Missing or wrong version of dependency 'src/Perl6/Actions.nqp'" when running the spectest after making changes to rakudo, but before running make install? 19:16
timotimo yes, though it's far from optimal.
masak is typing on a en.wikipedia.org/wiki/Model_M_keyboard 19:17
masak force feedback, aah. 19:17
lue timotimo: alright, that explains all the new failures I got from Moar and JVM (but strangely no new ones from Parrot ☺)
timotimo did anybody want to look at why modules.perl6.org has busted characters in yaml's description? 19:19
[Coke] dwarring: invited you to the roast/advent quests. Steal all the points!
lue masak: lucky :) I still want a Space Cadet, or something just like it. 19:21
timotimo a friend of mine bought a keyboard for advanced cash registers
and re-ordered the buttons and re-programmed the firmware
now he's running a modified neo2 layout on it
vendethiel r: 5 +| 6 19:33
camelia ( no output )
vendethiel r: say 5 +| 6
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«7␤»
vendethiel I don't remember seing these in S03, but I probably missed it
timotimo perlcabal.org/syn/S03.html#Additive_precedence - here they are 19:36
well, at least +| and +^ 19:37
lue timotimo: +& , +< , and +> are here: perlcabal.org/syn/S03.html#Multipli...precedence 19:39
timotimo yup
i figured ven could do that much work by himself :P
dwarring has signed up to roast/advent quests 19:41
vendethiel timotimo: I don't remember reading anything of that :o. I might've either been really tired or skipped over some stuff
timotimo mhm
vendethiel I probably went "meh I know the maths stuff, let's skip over it" 19:43
timotimo :D
lue
.oO(come to think of it, I'm not sure the ~* family of ops could/should be used on strings. Such low-level-ness for a more abstract concept feels wrong)
timotimo well, strings are unicody 19:44
so you'll be getting quite strange results that depend on the normalisation form and everything
[Coke] for declaring multidim arrays, we have [4;2] - what about indexing them?
lue ~& and friends have to work on a specific encoding by their nature, so they currently coerce Strs to Bufs. (the spec even says such coercion is a design smell, fwiw ☺)
timotimo same deal, [Coke]
[Coke] same, yes? 19:45
timotimo++
timotimo lue: fair enough
[Coke]: but you can also do [2][1]
lue I personally think someone who needs to do bitwise ops on strings will know best what kind of buffer to convert to :)
timotimo "but strings are just series of numbers from 0 to 127!" 19:46
[Coke] timotimo: I have a fiver ranting at me that [2][1] is too much syntax. :) 19:47
masak [Coke]: I look forward to [4;2] landing and me getting used to it. 19:48
lue
.oO( @a[2][4]{'custom idx'}{7}[7] )
timotimo [Coke]: i had a branch at some point that turned LoL inside [ ] into "the right thing" - almost 19:49
IIRC i was told to rather wait for the list respec before tackling an actual merge
timotimo r: my %foobar; %foobar<hi> = "goodbye"; %foobar<bye>:delete; say %foobar; 19:52
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«("hi" => "goodbye").hash␤»
masak m: say flat [1, [2, 3, [4, 5]]]
camelia rakudo-moar 1aeb7c: OUTPUT«1 2 3 4 5␤»
timotimo sergot: you don't need to check for the existence of an element in a hash to use :delete, re github.com/sergot/http-headers/blo...rs.pm6#L28
masak timotimo: you're probably right, but that line *doesn't* check for existence -- it checks for truthiness. 20:00
timotimo masak: huh?
oh
masak m: my %h = foo => 0; %h<foo> :delete if %h<foo>; say %h.perl
camelia rakudo-moar 1aeb7c: OUTPUT«("foo" => 0).hash␤»
timotimo that may very well be a bug, too, though
masak I assume so.
timotimo m: my %h = foo => 0; %h<foo>:exists:delete if %h<foo>; say %h.perl 20:01
camelia rakudo-moar 1aeb7c: OUTPUT«("foo" => 0).hash␤»
timotimo m: my %h = foo => 0; %h<foo>:exists:delete; say %h.perl
camelia rakudo-moar 1aeb7c: OUTPUT«().hash␤»
timotimo er, that was nonsense :)
dalek kudo/nom: a0a5990 | lue++ | src/core/ (2 files):
Rename .ast to .made, as per S05.

The .ast method is still around, though now it's deprecated.
20:06
timotimo nqp: my %foo := nqp::hash("bar", 1, "baz", 2); my %frob := nqp::clone(%foo); say(%frob<bar>); 20:10
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«1␤»
timotimo neato
vendethiel Also, I'm (almost ! 2 to go) done with the synopsis and I'm wondering : why do we need so many declarators ? `let` `my` `temp` `our` etc 20:14
also local and others?
timotimo well, they all do different things
skids scoping and state can get complicated, is why.
timotimo i didn't know "local" is a thing in p6?
vendethiel timotimo: probably confused `state` 20:15
timotimo ah, probably
well, all i can do is go through the list and say what each does and why it's not the same as something else
other than that: that's just the way it is 20:16
i have written some code. now is the time to try it and see if it b0rks horribly 20:17
timotimo oh, huh 20:18
how did that happen: Error while compiling op copy (source text: "nqp::copy(%antifilter)"): Arg count 1 doesn't equal required operand count 2 for op 'copy_f'
skids
.oO(All those declarators and I still have to write $a++; $b = sub { my $a2 = $a; $a2 + $^arg } to capture value-at-closure-creation-time, is what gets me.)
20:19
erm. missed a closure in that. 20:20
$a++; $b = { my $a2 = $a; { $a2 + $^arg } }
or whatnot.
timotimo hmm, something like ENTER doesn't do it? 20:21
actually, shouldn't state do it?
d'oh. i *tested* nqp::clone in this channel and i'm wondering why nqp::copy doesn't work 20:25
skids timotimo: yes, you can use state, but the problem is you have to introduce a new name even so. 20:29
Or use OUTER
Really just a prettiness issue though, you can do it, it's just not poetry. 20:30
masak vendethiel: technically `temp` and `let` aren't declarators. 20:38
vendethiel r: my temp $a; #? 20:39
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«===SORRY!===␤Type 'temp' is not declared␤at /tmp/tmpfile:1␤------> my temp⏏ $a; #?␤Malformed my␤at /tmp/tmpfile:1␤------> my ⏏temp $a; #?␤ …»
masak vendethiel: also, after so many years with Perl 6, the only one I don't really care for is `our`.
skids What, not into sharing? :-) 20:40
masak m: my $foo = 5; say $foo; { temp $foo = 42; say $foo }; say $foo
camelia rakudo-moar a0a599: OUTPUT«5␤42␤5␤»
masak vendethiel: `temp` above is not a declarator, because the variable $foo is already declared.
timotimo same with let, no? 20:42
masak aye.
(and it's still the "same" variable, even when its value is being temporarily overwritten)
or, as with `let`, hypothetically overwritten.
xfix rn: my %statuses = (normal => 1,sleep => 2.5,frozen => 2.5,paralyzed => 1.5,poisoned => 1.5,burned => 1.5,); 20:43
camelia ( no output )
..niecza v24-109-g48a8de3: OUTPUT«Potential difficulties:␤ %statuses is declared but not used at /tmp/tmpfile line 1:␤------> my ⏏%statuses = (normal => 1,sleep => 2.5,fr␤␤»
xfix hm, ok
lue masak: ooc, what's your issue with 'our'?
xfix Weird, it considers this hash to have odd number of elements, but I'm not quite sure why. 20:44
rn: gist.github.com/xfix/9515886
camelia rakudo-jvm a0a599: OUTPUT«("burned" => 1.5, "poisoned" => 1.5, "normal" => 1, "frozen" => 2.5, "sleep" => 2.5, "paralyzed" => 1.5).hashCannot unbox a type object␤␤»
..rakudo-parrot a0a599: OUTPUT«("normal" => 1, "sleep" => 2.5, "frozen" => 2.5, "paralyzed" => 1.5, "poisoned" => 1.5, "burned" => 1.5).hashOdd number of elements found where hash expected␤ in method STORE at gen/parrot/CORE.setting:9064␤ in sub MAIN at /tmp/tmpfile:24␤ in an…»
..niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤In parameter declaration, typename 'uint' must be predeclared (or marked as declarative with :: prefix) at /tmp/tmpfile line 21:␤------> uint⏏ :$max-hp,␤␤Parse failed␤␤»
..rakudo-moar a0a599: OUTPUT«("normal" => 1, "sleep" => 2.5, "frozen" => 2.5, "paralyzed" => 1.5, "poisoned" => 1.5, "burned" => 1.5).hashCannot unbox a type object␤ in sub MAIN at /tmp/tmpfile:20␤ in sub checker at src/gen/m-CORE.setting:3117␤ in method cando at src/gen/m-CO…»
xfix Any idea what I'm doing wrong? 20:45
timotimo what's with "where %statuses = "normal"?
skids trailing comma?
timotimo trailing comma should be allowed
xfix Oh...
timotimo i'd write { } instead, though
[Coke] look at the syntax highlighting.
xfix I want to have a default value, but this is a valid syntax.
timotimo ah, right
sorry, that always gets me
xfix is not*
Hm, how can I have where with default value? 20:46
timotimo er, didn't we fix that?
skids Try adding some newlines IIRC having run into that bug.
timotimo worst case, you have subset types "BallType" and "StatusType"
[Coke] again wishes p6 had /* */ ;P
lue [Coke]: but it does! :) 20:47
xfix #`()
[Coke] not quite the same, but ok. :)
jnthn evening, #perl6 20:48
lue o/ jnthn
[Coke] jnthn: O/!
xfix Also, yes, I've noticed syntax highlighting on GitHub. 20:49
lue ( Of course, if you want to do embedded comments the Cool Way™, you should go for things like #`⦃⦃⦃ ... ⦄⦄⦄ or #`﴾ ... ﴿ or #`☃ ... ☄ )
xfix .perl sorta confused me. If it assigned new value, why it has old value?
timotimo lue++ # snowman comet comment 20:50
xfix: what now?
xfix ("burned" => 1.5, "poisoned" => 1.5, "normal" => 1, "frozen" => 2.5, "sleep" => 2.5, "paralyzed" => 1.5).hashCannot
Apparently, it's being written to, but it has old value.
tadzik I see pokemons
xfix Because this script is Pokeball capture rate calculator. 20:51
timotimo you mean %statuses is being assigned to with the = "normal"?
xfix I think this happens.
I want both where and default value.
I tried Str :$ball = "poke" where %balls, but it's a syntax error.
timotimo yes
have you tried a subset declaration?
xfix I guess I should try.
timotimo otherwise, an enum could also work 20:52
xfix Seems to work.
vendethiel r: my $a = 0; say $a; { temp $a = 5; say $a; }; say $a;
timotimo and the .perl outputs the "old value" because the where clauses are being called after the whole script has run through
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«0␤5␤0␤»
timotimo i mean the main body of the script itself 20:53
vendethiel ah yeah, I see. That's kinda like `my $*a;`
timotimo bleh. my new nqp-level optimization causes a Exception in thread "main" org.perl6.nqp.runtime.UnwindException during compilation of nqp itself :( 20:54
jnthn timotimo: Åhnejs! I think there's an envvar you can set to get more details. 20:57
timotimo Ohneins!
"Segmentation fault (core dumped)", well, that's interesting, too 20:59
jnthn Ooh! 21:00
Crash ALL the backends!
timotimo aye aye, sir 21:01
full steam ahead!
... wait
i'd have to go in reverse to crash the *back*end, right?
lue timotimo: the backend is the core of what makes this train run, so obviously the backend is the engine at the front :) 21:02
vendethiel what's the diff between `my $*a = 1;` and `temp $*a = 1;` ? 21:04
timotimo there isn't really one, as $* is already dynamically scoped
vendethiel mmh. `temp` gets to dynamically scope too ? 21:05
BenGoldberg 'temp' is how perl6 spells 'local' from perl5.
vendethiel r: my $a = 1; sub foo { say $a; }; foo(); { temp $a = 2; foo(); }
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«1␤2␤»
tadzik um, not really
vendethiel BenGoldberg: I never did perl5, sorry
tadzik $* is the new local
scope-wise
jnthn vendethiel: Essentially "none", but "my $*a;" and "temp $*a;" differ :)
The latter being kinda useful. 21:06
vendethiel jnthn: mind explaining ?
timotimo the latter assigns the current value of $*a from before to the temporary new one 21:07
jnthn vendethiel: If you write "temp $*a" then it keeps its value, but means any changes to the variable in the future will be reverted once you return from this routine.
vendethiel r: sub foo { say $*a; }; { my $*a = 1; }; foo(); { my $*a = 2; foo(); } foo(); 21:08
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> a = 1; }; foo(); { my $*a = 2; foo(); } ⏏foo();␤ expecting any of:␤ …»
vendethiel r: sub foo { say $*a; }; { my $*a = 1; }; foo(); { my $*a = 2; foo(); }; foo();
camelia rakudo-parrot a0a599: OUTPUT«Dynamic variable $*a not found␤ in method gist at gen/parrot/CORE.setting:12402␤ in method gist at gen/parrot/CORE.setting:1056␤ in sub say at gen/parrot/CORE.setting:13335␤ in sub foo at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-jvm a0a599: OUTPUT«Dynamic variable $*a not found␤ in method gist at gen/jvm/CORE.setting:12381␤ in method gist at gen/jvm/CORE.setting:1053␤ in sub say at gen/jvm/CORE.setting:13293␤ in sub foo at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-moar a0a599: OUTPUT«===SORRY!===␤Dynamic variable $*a not found␤»
vendethiel r: sub foo { say $*a; }; my $*a = 1; foo(); { my $*a = 2; foo(); }; foo(); 21:08
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«1␤2␤1␤»
vendethiel so, `temp $*a` is like `my $*a = $*a` ? 21:09
r: sub foo { say $*a; }; my $*a = 1; foo(); { my $*a; foo(); $*a = 5; foo(); }; foo(); 21:10
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«1␤(Any)␤5␤1␤»
vendethiel r: sub foo { say $*a; }; my $*a = 1; foo(); { temp $*a; foo(); $*a = 5; foo(); }; foo();
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«1␤1␤5␤1␤»
vendethiel alrighty :-).
r: sub foo { say $*a; }; my $*a = 1; foo(); { my $*a = $*a; foo(); $*a = 5; foo(); }; foo();
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«1␤(Any)␤5␤1␤»
vendethiel I guess the `my` comes first
(conjecture : which might be why `my Dog $a .= new` works ?) 21:11
BenGoldberg r: my $*b = 1; { ++temp $*b; say $*b; }' say $^b;
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> my $*b = 1; { ++temp $*b; say $*b; }⏏' say $^b;␤ expecting any of:␤ …»
BenGoldberg r: my $*b = 1; { ++temp $*b; say $*b; }; say $^b;
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Cannot use placeholder parameter $^b in the mainline␤at /tmp/tmpfile:1␤------> b = 1; { ++temp $*b; say $*b; }; say $^b⏏;␤»
BenGoldberg r: my $*b = 1; { ++temp $*b; say $*b; }; say $*b;
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«2␤1␤»
BenGoldberg r: my $*b = 3; { (temp $*b) *= 5; say $*b; }; say $*b; 21:11
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«15␤3␤»
vendethiel Don't worry BenGoldberg, I got it :p 21:12
tadzik mwahaha 21:14
eh, nevermind
jnthn ... 21:15
tadzik well 21:16
lue would anyone mind if I changed the custom 'say2's here to 'note's? github.com/rakudo/rakudo/blob/nom/...pm#L62-L71
tadzik I tried one of the Javascript game frameworks
tadzik compiling the empty source file with typescript makes rakudo-jvm's startup overhead look blazingly fast 21:16
jnthn o.O 21:17
tadzik it takes almost 3 seconds
tadzik and it's 2.5 even if I don't load any frameworks on the way 21:18
masak clearly they have some reducible overhead there. 21:19
dalek kudo/nom: b6e4a8e | lue++ | src/core/Deprecations.pm:
Deprecation messages now work on rakudo-moar

Additionally, replace the say2 sub here with note, which fulfills the same purpose.
21:23
timotimo good catch 21:25
lue I was just wondering why my shiny new .ast deprecation wasn't showing up in r-m is all :) 21:26
jnthn oh...we deprecated .ast in the end? :/ 21:27
timotimo meh :| 21:28
jnthn I'd really have rather not do such a drastic deprecation in the same month I'm hoping to prepare/cut a Star on Moar/JVM.
Given it'll likely involve chasing lots of modules for fixes.
So don't be surprised if I veto that deprecation ahead of release if things don't look how I want Star module wise.
lue jnthn: it's been in S05 for a while, just finally got annoyed enough that my future-looking attempts at using .made weren't working :) 21:29
jnthn lue: Making ".made" work now is fine. Making ".ast" report that it's deprecated is what I'm worried about. 21:30
Those two are independent.
lue jnthn: yeah, I can definitely see where that can cause undue annoyances. Commenting out the DEPRECATED or something would be just fine for the next release.
tadzik I liked .ast :(
masak too 21:31
timotimo too
masak don't really see why it's being deprecated.
tadzik because it's now .made
masak yeah, I know *that*.
lue make/made is a better pairing than make/ast, name-wise
masak but that doesn't make .ast wrong.
tadzik use Acme::BringBackDotAst 21:32
jnthn masak: Yes, I've argued for keeping both too :)
lue masak and others: check here: github.com/perl6/specs/commit/2437...931c720b4c 21:33
"Perhaps the .ast method should be kept as a synonym for .made, and may even have a check for AST-nodeness added, to give it additional implicit documentational value in the Perl 6 internals."
lue so there's nothing saying we can't have .ast, it's just currently no longer a part of the spec. 21:35
timotimo i have no idea what "ASTness" would be 21:37
especially since QAST isn't to spec.
lue Yeah, so I think we could just have .ast as a pure synonym. 21:39
lue (To be honest, I can't think of a time where you'd attach not-an-AST with make; in fact, it almost (almost) seems like make is the one that needs renaming) 21:40
jnthn lue: One of my recent talks had an example where .ast didn't really bi^H^Hfit 21:41
*fit
timotimo "astize" :P 21:43
astify?
lue jnthn: could it perhaps be the talk linked in that commit? :)
jnthn mebbe :P
lue timotimo: I was thinking &node or &nodify
timotimo .o( turn the result of this code into javascript code )
jnthn 'twas the one about temperature data I think :)
lue jnthn.net/papers/2014-fosdem-perl6-today.pdf is the one in the commit. 21:45
I wonder if it would be worth separating the concepts of "node in AST tree" and "annotation on Match object"
jnthn yeah, that's the one 21:46
timotimo i have a kinda strong feeling that you'd hardly ever see both
but you'll still have to pay for the extra storage, no?
jnthn Indeed...we don't want to make match objects any memory hungrier too :)
timotimo or mix in something
lue yeah, and I'm not sure "node in AST tree" could be much different from the other one. 21:47
The only real solutions I see is to just have .ast and .made as synonyms, or force people to give up .ast. I like the synonym one better. 21:49
timotimo agreed.
dalek p: 3ebb27f | jonathan++ | tools/build/MOAR_REVISION:
Bump to a MoarVM with NativeCall.
21:53
p: 2d19f41 | jonathan++ | t/nativecall/01-basic.t:
Make NQP nativecall tests robust on Win32.

At least, with MSVC. If we don't find standard C symbols, fall back to explicitly looking in the C library.
p: 05ab5cd | jonathan++ | tools/build/Makefile-Moar.in:
Run t/nativecall/01-basic.t on MoarVM backend.
jnthn So, that's the very simple native call tests that NQP has passing on Moar... 21:54
timotimo \o/
jnthn "just" need to do the rest of the stuff to have NativeCall.pm build and pass tests now :P 21:55
timotimo how much stuff is it actually? 21:56
jnthn Well, I think we at least need to stub CStruct to get NativeCall.pm6 to compile 21:57
timotimo ah, CStruct, aye.
did we have a good idea for how to make variables from C land reachable in perl6?
jnthn Then some more work to get the test harness to work out as it needs to be able to build the C libraries to test against.
jnthn And after that comes CStr, CArray and CPointer... 21:59
uh, s/CPointer/CStruct
CPointer we already have.
And finally callbacks.
So yeah, some work.
timotimo i'm getting really, really, really few lex-to-locals in rakudo as opposed to nqp 22:00
jnthn timotimo: Well, dlsym can be used to reach the variables
timotimo oh. well, that's a good start 22:02
can we have re-use CPointer for that? 22:03
jnthn That feels a bit off...
timotimo not really exactly sure how to reach variables 22:04
jnthn I'll ponder it a bit.
jnthn It's more an API design challenge than an implementation one, I think... 22:04
timotimo aye 22:05
jnthn I mean, "say get_cvar('lib', 'symbol', int32)" works...
timotimo and set_cvar as well, eh?
jnthn Yeah
But it sucks too. :) 22:06
'cus you have to resolve the symbol every time.
timotimo just exposing that is a good start; as far as i can tell people have been using Inline::C for the equivalent of that
jnthn nqp::nativevar('lib', 'symbol', int32) returning something appropriate is closer, I just need to ponder what the appropriate thinguymmy is :) 22:07
timotimo that's right
sergot timotimo: thank you very much :)
timotimo you're welcome 22:08
sergot timotimo: pushed :) 22:09
dalek osystem: db4499d | sergot++ | META.list:
HTTP::Response added
22:10
jnthn I wonder if it ain't the same problem as passing rw natives... :)
timotimo may very well be
timotimo i'm looking forward to that fix as well :) 22:11
lue Is it alright if I just spec .ast as a synonym of .made then?
timotimo jnthn: hm, how do i best figure out if my lexical-to-local stuff has any good effect?
except for writing code and looking at the resulting qast
jnthn timotimo: Well, that's one way. Also counting the number of MAST::Frames that show up if you disassemble NQP code..should be less after the opt if you are inlining 22:12
sergot timotimo: will be great if you check other my HTTP::* modules.
timotimo i don't even know that much about HTTP :) 22:13
jnthn: so i moar --dump the .moarvm and grep -c for what exactly? 22:14
timotimo ah, i just had a not so excellent example file 22:14
jnthn ^\s+Frame_\d+':' 22:15
timotimo thank you
timotimo hm. --dump segfault'd 22:17
at least it segfaulted in vm_destroy_instance 22:18
so that's not that terrible
gist.github.com/timo/eda741286aaa16a8a8b5
well, ww i guess
dalek ecs: 3795799 | lue++ | S05-regex.pod:
[S05] Reintroduce the .ast method.

Every good language has a few synonyms anyway :) .
22:25
timotimo my optimization is obviously not working, as it doesn't reduce the amount of frames at all. 22:26
jnthn yeah, then it's inlining nothing... 22:27
dalek kudo/nom: 5b109d6 | lue++ | src/core/Match.pm:
Undeprecate .ast
22:34
timotimo i think i may be doing it all rong. 22:44
FROGGS hello from france! 22:53
timotimo france from hello!
lue FROGGS: allô!
timotimo oh, maybe i'm close to the goal now 22:55
but i'm not treating the outermost blocks properly yet
good ol' special cases
timotimo :\ 23:04
not having too much success with this project
adu timotimo: oh noes 23:08
timotimo do i have to scrap half of it and start over? :\ 23:18
masak 'night, #perl6 23:21
lue masak o/
Mouq .tell colomon re: irclog.perlgeek.de/perl6/2014-03-12#i_8423436 There is github.com/perl-cldr/cldr-list-pm6/ by patch++, which solves half of your problem 23:38
yoleaux Mouq: I'll pass your message to colomon.
adu timotimo: half of what? 23:39
lue wonders what $*BORG in STD stands for; Block OR G... ? 23:43
timotimo adu: i'm trying to build proper block inlining for NQP so that we can have much fewer frames, fewer lexical variables (in favor of more locals) and smaller lexpads and stuff 23:53
adu I understand inlining 23:54
but what do you mean by "fewer lexical variables" 23:55