»ö« 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.
timotimo can you profile that any further? 00:04
timotimo can you break that into stages? 00:10
timotimo like reading the file in, parsing it with the grammar, working with the results? 00:11
timotimo lue: can we spec something that'll let me query the complete unicode database? 01:03
things like "give me all the unicode characters whose full name matches this" 01:04
[Coke] timotimo: didn't TimToady just implement that? 01:10
timotimo ISTR it's all just the other way around 01:11
dalek kudo-star-daily: 0bf81c6 | coke++ | log/ (5 files):
today (automated commit)
01:13
rl6-roast-data: 5b87670 | coke++ | / (6 files):
today (automated commit)
TimToady timotimo: that is not worth supporting in the internals of Perl 6, but a module that greps the unicode database would be fine 01:17
BenGoldberg something like @matches = uniname-like(qr/.../) would be cool :)
TimToady in P5 it's sufficient to open the database like: my @names = split /^/, do 'unicore/Name.pl'; 01:18
timotimo having it as a module seems entirely fair; can we get the module to be usper effective on moarvm by using the internal unicode database? 01:19
TimToady we don't have a comparable file to open (yet)
m: .base(16).say if uniname($_) ~~ /COMBINING/ for 0..0x10ffff 01:20
camelia rakudo-moar a24091: OUTPUT«(timeout)300␤301␤302␤303␤304␤305␤306␤307␤308␤309␤30A␤30B␤30C␤30D␤30E␤30F␤310␤311␤312␤313␤314␤315␤316␤317␤318␤319␤31A␤31B␤31C␤31D␤31E␤31F␤320␤321␤322␤323␤324␤325␤326␤327␤328␤3…» 01:21
TimToady there's always that way
japhb__ m: my $c; $c++ if uniname($_) ~~ /COMBINING/ for 0..0x10ffff; say $c; say now - BEGIN now; 01:22
TimToady um, you'll notice it timed out 01:22
camelia rakudo-moar a24091: OUTPUT«(timeout)»
japhb__ TimToady: I wanted to know if that was just I/O
m: my $c; $c++ if uniname($_) ~~ /COMBINING/ for 0..0xffff; say $c; say now - BEGIN now;
camelia rakudo-moar a24091: OUTPUT«296␤3.8940747␤»
timotimo hm. i wonder why we're doing that so slowly 01:23
TimToady grepping a file that leaves out all the unnamed codepoints is quite a bit faster
timotimo oh, we're probably decoding the names every time we find them
TimToady m: say uniname('擬') 01:24
timotimo but that shouldn't take terribly long
camelia rakudo-moar a24091: OUTPUT«<CJK Ideograph>␤»
TimToady it has to think a while to figure out that's a CJK Ideograph
because we don't store the name for every character, to save space
timotimo ah, it has to do a search
i remember that 01:25
TimToady we sprinkle the "name" every 25 chars or so in that area, as a speed/memory tradeoff 01:25
timotimo so if we had an iterator for the unicode database, we may end up saving a lot of time for that
TimToady but it's a hack
timotimo but only for this exact use case
TimToady which is really fast when you're usually just reimplementing grep badly :) 01:26
s/fast/fast in grep/
my P5 program runs in .15 seconds to scan the whole list
timotimo the one that opens unicore/Name.pl? 01:27
TimToady yup
timotimo is perl5's "do" somewhat like an eval?
well, an eval + slurp
TimToady yes, it evals a file
it's more primitive than 'require' 01:28
timotimo OK. so i can't really ask you to try the equivalent with Perl 6 ;)
BenGoldberg m: say uniname first { uniname($_) ~~ /COMBINING/ }, 0 .. 0x10ffff;
camelia rakudo-moar a24091: OUTPUT«COMBINING GRAVE ACCENT␤» 01:29
TimToady well, the P5 parser is still considerably faster than P6's
BenGoldberg m: say uniname first { uniname($_) ~~ /ARROR/ }, 0 .. 0x10ffff;
m: say uniname first { uniname($_) ~~ /ARROW/ }, 0 .. 0x10ffff;
camelia rakudo-moar a24091: OUTPUT«(timeout)»
rakudo-moar a24091: OUTPUT«MODIFIER LETTER LEFT ARROWHEAD␤»
TimToady I'll bet you didn't know an arrowhead was a leter :)
*letter
timotimo sometimes arrows have letters stuck to them near the arrowhead 01:30
TimToady hopefully exclusive with the burning arrows, if they expect you to read it
BenGoldberg . o O (what an odd way of delivering mail)
timotimo mostly.
anyway, i think i'll go to sleep now 01:31
BenGoldberg I'll just stick to pigeons. Or maybe magical owls.
timotimo likes using photons to transfer mail
TimToady m: say uniname('🔂') 01:32
camelia rakudo-moar a24091: OUTPUT«CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY␤»
TimToady arrows get way out of hand in Unicode :)
BenGoldberg m: say uniname max { length uniname($_) }, 0 .. 0x4ffff; 01:33
camelia rakudo-moar a24091: OUTPUT«===SORRY!=== Error while compiling /tmp/6M9Er0QoEQ␤Undeclared routine:␤ length used at line 1. Did you mean 'elems', 'chars', 'graphs', 'codes'?␤␤»
timotimo hehe.
BenGoldberg m: say uniname max { uniname($_).chars }, 0 .. 0x4ffff;
camelia rakudo-moar a24091: OUTPUT«(timeout)»
BenGoldberg m: say uniname max { uniname($_).chars }, 0 .. 0xffff;
timotimo yeah, that's hard
camelia rakudo-moar a24091: OUTPUT«<unassigned>␤»
timotimo huh. 01:34
BenGoldberg m: say uniname max { uniname($_).chars }, 0x10000 .. 0x1ffff;
camelia rakudo-moar a24091: OUTPUT«<unassigned>␤»
BenGoldberg m: say uniname max { uniname($_).chars }, 0x20000 .. 0x2ffff;
camelia rakudo-moar a24091: OUTPUT«<unassigned>␤»
BenGoldberg hrm
timotimo m: say uniname min { uniname($_).chars }, 0 .. 0x4ffff; 01:35
BenGoldberg Is that not the right way to use max?
timotimo m: say uniname min { uniname($_).chars }, 0 .. 0x2ffff;
camelia rakudo-moar a24091: OUTPUT«(timeout)»
timotimo m: say uniname min { uniname($_).chars }, 0 .. 0xffff;
oh wait
camelia rakudo-moar a24091: OUTPUT«(timeout)»
timotimo max and min are infix operators, no?
BenGoldberg m: say uniname [max] map { uniname($_).chars }, 0x20000 .. 0x2ffff; 01:36
camelia rakudo-moar a24091: OUTPUT«Too many arguments in flattening array.␤ in sub infix:<max> at src/gen/m-CORE.setting:1803␤ in sub at src/gen/m-CORE.setting:16933␤ in block at /tmp/lfQ6CxcZyA:1␤␤»
Mouq m: say uniname max(:by({ $_.chars }), 0x20000 .. 0x2ffff);
camelia rakudo-moar a24091: OUTPUT«<CJK Ideograph Extension B>␤»
BenGoldberg Aha! Success
Mouq m: say uniname max(:by({ $_.&uniname.chars }), 0x20000 .. 0x2ffff);
timotimo is there actually a max routine?
camelia rakudo-moar a24091: OUTPUT«CJK COMPATIBILITY IDEOGRAPH-2F800␤»
timotimo m: say &max
camelia rakudo-moar a24091: OUTPUT«sub max(*@args, :by(&by) = { ... }) { ... }␤»
timotimo m: say &infix:<max> 01:37
camelia rakudo-moar a24091: OUTPUT«Sub+{<anon>}.new()␤»
timotimo oh well.
Mouq m: say uniname max :by({ $_.&uniname.chars }), 0x20000 .. 0x2ffff;
timotimo m: say uniname
camelia rakudo-moar a24091: OUTPUT«CJK COMPATIBILITY IDEOGRAPH-2F800␤»
rakudo-moar a24091: OUTPUT«===SORRY!=== Error while compiling /tmp/i0mUpYnwp_␤Calling 'uniname' requires arguments␤ Expected any of: :(Str $str) :(Int $code)␤at /tmp/i0mUpYnwp_:1␤------> say ⏏uniname␤»
timotimo that can't have been parsed as an infix operator up there
m: say uniname "a" 01:38
camelia rakudo-moar a24091: OUTPUT«LATIN SMALL LETTER A␤»
timotimo ... that took a while o_O
BenGoldberg m: say uniname 0xa24091 01:39
camelia rakudo-moar a24091: OUTPUT«<illegal>␤»
BenGoldberg m: say uniname( "\U{a24091}" )
camelia rakudo-moar a24091: OUTPUT«===SORRY!===␤Unrecognized backslash sequence: '\U'␤at /tmp/6MWpKnzKYb:1␤------> say uniname( "\⏏U{a24091}" )␤Undeclared routine:␤ a24091 used at line 1␤␤␤»
Mouq m: say "\x[a24091]" 01:40
camelia rakudo-moar a24091: OUTPUT«Error encoding UTF-8 string near grapheme position 0 with codepoint 10633361␤ in method print at src/gen/m-CORE.setting:13550␤ in method print at src/gen/m-CORE.setting:13548␤ in sub say at src/gen/m-CORE.setting:13349␤ in block at /tmp/0qD6Uo…»
timotimo that codepoint could be printed in hexadecimals additionally, imo.
timotimo goes to bed finally
BenGoldberg m: say uniname 128258
camelia rakudo-moar a24091: OUTPUT«CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY␤»
Mouq o/ timotimo 01:41
BenGoldberg m: say uniname 64505
camelia rakudo-moar a24091: OUTPUT«ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM␤»
Mouq BenGoldberg: That's the longest I've found too 01:42
BenGoldberg m: say uniname first { uniname($_) ~~ /WITH.*WITH/ }, 0 .. 0x10ffff; 01:44
camelia rakudo-moar a24091: OUTPUT«LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON␤»
BenGoldberg m: say uniname for grep { uniname($_) ~~ /WITH.*WITH/ }, 0 .. 0x10ffff;
camelia rakudo-moar a24091: OUTPUT«===SORRY!=== Error while compiling /tmp/5ertxIyzX3␤Calling 'uniname' requires arguments␤ Expected any of: :(Str $str) :(Int $code)␤at /tmp/5ertxIyzX3:1␤------> say ⏏uniname for grep { uniname($_) ~~ /WI…»
BenGoldberg m: say .uniname for grep { uniname($_) ~~ /WITH.*WITH/ }, 0 .. 0x10ffff;
camelia rakudo-moar a24091: OUTPUT«No such method 'uniname' for invocant of type 'Int'␤ in block at /tmp/BUnhnZ8wR9:1␤␤»
BenGoldberg m: say uniname $_ for grep { uniname($_) ~~ /WITH.*WITH/ }, 0 .. 0x10ffff;
camelia rakudo-moar a24091: OUTPUT«(timeout)LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON␤ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH␤ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA␤ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA␤ARABIC LETTER WAW W…»
BenGoldberg m: say uniname $_ for grep { uniname($_) ~~ /WITH.*WITH.*WITH/ }, 0 .. 0x10ffff; 01:45
camelia rakudo-moar a24091: OUTPUT«(timeout)» 01:46
Mouq begins to suspect the only reason &uniname exists is because of how fun it is to play with ;) 01:47
TimToady smirks
dinner & 01:48
jajaja Found Rakudo on MoarVM installation README less than clear. Can anyone offer a set of steps? 01:53
Mouq jajaja: perl Configure.pl --gen-moar --gen-nqp --backends=moar 01:56
jajaja: make install
jajaja: Happiness 01:57
jajaja: (Assuming you have a copy of rakudo/ and are cd'd into that directory) 01:58
jajaja Great. Thanks
Mouq np :)
jajaja So I don't need to download MoarVM src separately? 01:59
Mouq jajaja: Nope. You can, and if you have a MoarVM you update seperately you just need a slightly different config line:
jajaja How will I know if my perl6 binary is using Moar or NQP? 02:00
Mouq jajaja: Yes.
:P
jajaja Sorry, full Rakudo or NQP?
Mouq Moar runs NQP which runs Rakudo
Mouq decides not to type out a bunch of config lines if it's not necessary, as it'll probably just be confusing 02:01
jajaja OK, I mistook NQP for a cut-down version of (full) Rakudo
Mouq jajaja: It is, mostly; the point of it being cut down so that we can write Rakudo in something that approximates simple Perl 6, instead of MoarVM or Parrot or JVM bytecode. 02:03
Well
MoarVM bytecode, Parrot and JVM have their own languages :P
Building Rakudo off NQP also means that we can have all these backends easily, 'Just' by porting NQP 02:04
jajaja Advanced wWizardry to me, I'm afraid. At least I can now get Rakudo on MoarVM. Not knowing all the details, it sounds like Perl 6 has a brighter future on MoarVM than Parrot 02:05
Mouq Does anyone object to having both a README (txt file) and a README.md? 02:15
JimmyZ -1 02:18
Mouq JimmyZ: Why? 02:19
JimmyZ It's not hard to read .md file. It's hard to sync two files(hard to maintain) 02:20
Mouq Basic conversion: github.com/Mouq/rakudo/blob/nom/README.md 02:25
JimmyZ Yeah, it's not hard to read the raw file. 02:26
But keeping two files consistent will be always hard to others. 02:27
Mouq JimmyZ: So +1 to Markdown?
JimmyZ yeah, +1 to keep markdown only 02:28
Mouq JimmyZ: Cool
JimmyZ :P 02:29
lue Mouq: it's fun, but having an inverse to \c[] is useful too :)
lue afk-ish again
woosley Just noticed that Perl6 is a new language on github ~~ 02:36
dalek kudo/nom: 633d1fa | Mouq++ | README (2 files):
Convert README to Markdown
02:40
kudo/nom: 40b3315 | (Alexander Moquin)++ | README.md:
Formatting updates for README.md
kudo/nom: 0710b9b | Mouq++ | / (6 files):
Merge branch 'nom' of github.com/rakudo/rakudo into nom
Mouq People can revert it if they don't like it
dalek kudo/nom: df94eb0 | (Alexander Moquin)++ | README.md:
Factor out some installation information
03:00
kudo/nom: 6751dd9 | (Alexander Moquin)++ | README.md:
Simplify build instructions
03:08
dalek kudo/nom: 741dcbf | (Alexander Moquin)++ | README.md:
Move note about different backends and features to top
03:13
kudo/nom: 8713b8b | (Alexander Moquin)++ | README.md:
Make some links more pleasant
03:16
kudo/nom: 5253f56 | (Alexander Moquin)++ | README.md:
Clarify JVM memory limit instructions
03:21
dalek kudo/nom: eb8c97c | (Alexander Moquin)++ | README.md:
Formatting and clarification on `--backends`
03:28
kudo/nom: 2fb9f3c | (Alexander Moquin)++ | README.md:
Formatto
Mouq These edits should probably be more batched.. but I blame the ease of Github's "Edit" feature 03:30
Mouq Someone could probably update this: github.com/rakudo/rakudo/blob/nom/...erview.pod 03:32
The last serious update was 3 years ago :/ 03:33
dalek kudo/nom: 91fe419 | (Alexander Moquin)++ | README.md:
At least mention a file we *do* keep updated

  (as opposed to the poor, neglected docs/compiler_overview.pod)
03:36
Mouq m: say pack("AAAA","abcd","x","y","z").decode 05:54
camelia rakudo-moar 91fe41: OUTPUT«abcdxyz␤»
Mouq ^^ Pretty sure that should be "axyz"
JimmyZ r: say pack("AAAA","abcd","x","y","z").decode 05:55
camelia rakudo-parrot 91fe41, rakudo-jvm 91fe41, rakudo-moar 91fe41: OUTPUT«abcdxyz␤» 05:55
JimmyZ n: a9e6eec70785f43f63ef17189fc2733d4ceb8446
camelia niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'a9e6eec70785f43f63ef17189fc2733d4ceb8446' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5) ␤ at /home/p6eval/ni…»
Mouq JimmyZ: Don't worry, &pack is in src/core :)
TimToady it's axyz in Perl 5
Mouq already needs to add the 'a' directive, so may as well fix that too 05:56
TimToady it's apparently defaulting to * rather than 1
not that this is exactly the cleanest area in Perl 5's design... 05:57
and we can change defaults in P6 if there is sufficient rationale 05:58
Mouq TimToady: No... if you can dream up an alternative to the pack/unpack sublanguage, that would be amazing :)
TimToady I'm afraid these days it would look a lot more like struct declarations... 05:59
in fact I've kinda proposed that classes that are amenable might compile down to something like the pack language for serialization, but that's not a well thought-out thing 06:01
nwc10 a significant pain point with the pack language as it has "evolved" in Perl 5 is that it (effectively) has letters for all 4 tranforms text -> binary, binary -> text *and* binary -> binary and text -> text 06:02
TimToady yeah, that's what you get for using a largely typeless language :P
nwc10 it was just "don't repeat that mistake" 06:03
TimToady the insanest bit was baking in uuencode/decode, I think 06:04
nwc10 yes, that's effectively a reverse binary->text when all the others go text->binary 06:05
but the P and p templates are binary->binary which doesn't help
TimToady well, that depends on what the pointers are pointing to :) 06:06
nwc10 and A a and z ended up being "defined" in terms of text->text when a text->binary definition would have been possible (but seemingly more ugly)
nwc10 I'd argue that memory is bytes, like files are bytes. You need to do something a bit more explicit to say what encoding to use to transform bytes to characters 06:06
TimToady well, hey, A for ASCII :) 06:07
nwc10 sadly what we ended up with never enforced that ASCII is 7 bits
TimToady but yeah, there were lots of irregularities in that design 06:08
Mouq Now that we have buffer types, a lot of this seems very strange
nwc10 yes. a bunch of the Perl 5 crazy would at least be easily detectable run-time errors with proper types 06:09
TimToady thing is, pack is a way of concatenating a bunch of rather heterogenous things into a buffer; with our Buf types, we need to figure out to what extend we want to support concatenating different kinds of buf 06:14
someone asked what the corresponding buf type to Cat was
Mouq
TimToady dunno, but ropes of bufs seem a lot like the old BSD scatter/gather IO syscalls
maybe they're Bats :) 06:15
.oO(maybe we're bats)
06:17
Mouq thinks there may be humanitarian issues with making Buf Bats out of Blobs
TimToady hmm, Blobs, Bats, Cats, and Rats all figure into a lot of horror movies 06:18
if they can make horror movies without harming them, perhaps we can make a horror language without...oh wait... 06:19
Mouq TimToady: I'm basically looking for a way to generalize github.com/Mouq/Image-GIF/blob/mas...IF.pm6#L36 06:20
TimToady the thing about bufs is sometimes you want them to behave a little more like strings, and other times, not so much 06:22
C lets you get away with a bunch by allowing you to cast buffer pointers to struct pointers and such 06:24
in some ways pack/unpack are rather more disciplined than C, oddly enough
TimToady it kind of all goes back to that named equivalence vs structural equivalence thing 06:28
type systems are nice until they're not 06:29
Mouq Hm 06:39
p6: rx:bin// 06:42
camelia niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤Unrecognized adverb :bin(1) at /tmp/tmpfile line 1:␤------> rx⏏:bin//␤␤Null pattern not allowed at /tmp/tmpfile line 1:␤------> rx:bin/⏏/␤␤Parse failed␤␤»
..rakudo-parrot 91fe41, rakudo-jvm 91fe41, rakudo-moar 91fe41: OUTPUT«===SORRY!===␤Null regex not allowed␤at /tmp/tmpfile:1␤------> rx:bin/⏏/␤Adverb bin not allowed on rx␤at /tmp/tmpfile:1␤------> rx:bin//⏏<EOL>…»
Mouq std: rx:bin// 06:43
camelia std 09dda5b: OUTPUT«===SORRY!===␤Unrecognized adverb :bin(1) at /tmp/sp2mSXNicP line 1:␤------> rx⏏:bin//␤Null pattern not allowed at /tmp/sp2mSXNicP line 1:␤------> rx:bin/⏏/␤ expecting colon pair (restricted)…»
TimToady S05:4670 waves its hands in that general direction 06:49
synopsebot Link: perlcabal.org/syn/S05.html#line_4670
TimToady and jnthn++ has done some work with bidirectional serialization using grammars 06:50
TimToady but the details are around the devil 06:51
TimToady there's no reason in principle that pattern matching has to be restricted to Unicode characters, anyway 06:52
Mouq gist.github.com/Mouq/9615015 07:14
dalek kudo/nom: 934c48a | Mouq++ | src/core/Buf.pm:
&pack: Add 'a' directive and be more frugal with 'A' and 'a'
07:45
jnthn waves a quick hello before teaching :) 07:51
kurahaupo o/ 07:51
jnthn well, at least I managed to backlog before I gotta begin... :) 07:56
&
sisar Unable to build nqp on jvm: gist.github.com/Siddhant/9616360 (Cygwin, 32-bit, & the JVM used is the Windows binary (JDK) provided by Oracle). 09:39
arnsholt o/ 09:50
masak: The Python compiler we discussed last night: github.com/arnsholt/snake/ 09:51
sisar arnsholt: what is it ? (the repo does not have a README :-) ) 09:52
arnsholt sisar: A very early attempt at a Python compiler based on NQP 09:55
So early that it still doesn't get the indentation stuff right yet =)
lizmat off to see TheDamian& 11:26
Timbus ThewonderfulDamian of oz 11:41
timotimo o/ 12:26
.tell sisar i think the problem is that the classpath on windows expects ; instead of : and thus it doesn't find the jar files? 12:27
yoleaux timotimo: I'll pass your message to sisar.
dalek kudo-star-daily: 540c7b8 | coke++ | log/ (5 files):
today (automated commit)
12:44
[Coke] rakudo-star candidates failing tests: 12:45
github.com/coke/rakudo-star-daily/...odules.log
FROGGS [Coke]: grammar-debugger shows: "Found a version control conflict marker" 12:48
that sounds like you have to clean that on your box
same for modules/perl6-lwp-simple
and also jsonrpc 12:49
[Coke] FROGGS: this is a fresh checkout every day
FROGGS but how can these three have all a vcs conflict in its repo?
that is highly unlikely
tadzik troo 12:50
[Coke] I do a fresh checkout, force all the submodules to master, then build.
moritz somebody could have committed ersion control conflict markers
that's easy to cehck
timotimo force the submodules to master with git pull or git reset? :)
FROGGS ohh, perhaps that is in a dep only
[Coke] so maybe there's a bug here: github.com/coke/rakudo-star-daily/...tar.sh#L27
timotimo yeah, a git pull will do a merge if it's not a fast-forward 12:51
i'd suggest a git fetch origin; git reset --hard origin/master instead
[Coke] Sure.
FROGGS seems like a conflict in your MIME::Base64 installation
FROGGS /home/coke/sandbox/rakudo-star-daily/star/rakudo-star-daily/install/lib/parrot/5.9.0/languages/perl6/lib/MIME/Base64.pm6:3 12:52
and /home/coke/sandbox/rakudo-star-daily/star/rakudo-star-daily/modules/Perl6-MIME-Base64/lib/MIME/Base64.pm6:3
[Coke] kicks off a timotimo build. 12:53
timotimo hah
wow. such mean-spirited words on Perl 6 on twitter 12:54
FROGGS where? 12:54
timotimo i don't feel like sharing it 12:55
it's probably not a good idea to waste time discussing or even looking. 12:56
dalek kudo/eleven: a24091e | jnthn++ | tools/build/NQP_REVISION:
Bump to an NQP with native call improvements.

Both MoarVM support, and JVM improvements.
12:56
colomon timotimo++ # not sharing 12:58
[Coke] goes digging but doesn't find anything too egregious. 13:04
[Coke] posts a "here, have some perl6" urls.
moritz
.oO( caring is not-sharing )
timotimo thought "crazy ass mofos" was uncalled for 13:05
slavik jnthn: moarvm ... :D (going to give it a go today) 13:09
where is that page that lists how many tests each compiler passes?
timotimo it's coke/perl6-roast-data on github
there's a .csv with an overview and log/ folder with all the details 13:10
slavik ty 13:10
[Coke] I love that Damian is trying to use junctions and we're telling him they don't work that way. 13:18
I feel that way whenever I try to use junctions for something. 13:19
latest star build is worse: lots of "No STable at index 1" 13:20
dalek kudo-star-daily: b54ccf8 | coke++ | bin/star.sh:
fix git submodule voodoo, timotimo++
13:24
kudo-star-daily: 1608460 | coke++ | log/ (5 files):
today (automated commit)
FROGGS [Coke]: that feels like a broken build, like an outdated moarvm or some such 13:25
[Coke] FROGGS: this is parrot. 13:27
FROGGS ohh
[Coke] and yes, I don't get the most recent parrot. For parrot, I get whatever the version picked by star is.
FROGGS even weirder
yeah
[Coke] I can switch the R* tester to use latest parrot, but we don't upgrade parrot often. 13:29
FROGGS no, do not upgrade, that won't make it better 13:30
[Coke] so, the two modules still failing are lwp-simple & jsonrpc
And it's a fresh build.
timotimo++ git magic.
hoelzro morning #perl6! 14:09
tadzik hey hey hoelzro! 14:10
hoelzro o/ tadzik 14:12
FROGGS hi 14:21
hoelzro ahoy FROGGS 14:27
FROGGS :o) 14:28
masak arnsholt: "snake". I like :) 15:17
pmurias so are there plans to reactivate snake? 15:32
dalek href="https://perl6.org:">perl6.org: 294e864 | raiph++ | source/community/index.html:
Delete mention of wikis
15:34
raiph pmichaud, #perl6ers: I see what look like dead repos in the perl6 account on gh (github.com/perl6/misc, github.com/perl6/modules, etc.); should I try delete them and if not can I help clean them up? are there other accounts to clean up? 15:50
timotimo seems like those are safe to delete 16:07
that digest module is parrot only, for example 16:08
dalek href="https://perl6.org:">perl6.org: e9b125c | raiph++ | source/community/index.html:
Clean ups

Updated planetsix link
Removed link to problematic perl6.cz/wiki/Perl_6_and_Parrot_links
Removed link to problematic curated videos page of (currently disabled) wiki.perl6.org
Toned down marketese
16:09
moritz raiph++ 16:15
[Coke] raiph++ 16:35
arnsholt jnthn: In my JAST compiler, I come across a JAST::Method which has an @!cr_handlers where one of the elements has the P6num REPR. That's a bug, no, since it's parsed into an array of longs? 16:39
timotimo raiph: good work 16:40
amoquin hops on for a few minutes 16:48
timotimo ohai Mouq 16:49
Mouq o/
raiph++: Someone brought up that perl6.org doesn't actually explain what Perl 6 is to someone without prior knowledge 16:50
*about Perl/Perl 6
timotimo i brought that up, aye 16:51
or rather: a friend of mine did
Mouq suggests ss/the spokesbug for <(Perl 6)>/the Perl 6 programming language/ as a start 16:53
timotimo "i am camelia, the perl 6 programming language"?
oh
i see.
Mouq timotimo: :9 16:54
hoelzro .oO( Now I am become Perl 6, destroyer of worlds... )
timotimo takes on his multi-armed form
i'd like to build a pass into the minor collection that merges equal MVMStrings together by bending the forwarding pointer 16:59
Mouq doesn't know what bending a pointer is, but it sounds dangerous 17:00
m: say Buf.^methods 17:01
camelia rakudo-moar 934c48: OUTPUT«new elems bytes chars Numeric Int decode list subbuf unpack contents encoding of at_pos Bool Str Stringy gist perl␤»
Mouq m: say "abcd".encode.contents 17:02
camelia rakudo-moar 934c48: OUTPUT«97 98 99 100␤»
Mouq I was thinking maybe there should be an easy way to look at Bufs/Blobs at different sizes 17:03
like Buf.new[3]:bits<4> is the 4th half-byte 17:04
Mouq m: say Buf.new("abcd".encode[], :size<4>)[3] 17:05
camelia rakudo-moar 934c48: OUTPUT«100␤»
timotimo i wonder if it would be totally idiotic to try to do the allocation of the hash to be used for merging equal strings completely without the GC 17:05
Mouq Looks like :size is NYI...
timotimo could that be size in bytes? 17:06
what's the [] there for, ooc?
Mouq timotimo: Listifying 17:07
m: say Buf.new("abcd".encode.list, :size<4>)[3]
camelia rakudo-moar 934c48: OUTPUT«100␤»
Mouq Nope
timotimo mhm
Mouq o/ #perl6
timotimo m: say Buf.new("abcdefgh".encode.list, :size<2>).perl 17:07
camelia rakudo-moar 934c48: OUTPUT«Buf.new(97, 98, 99, 100, 101, 102, 103, 104)␤»
timotimo m: say Buf.new("abcdefgh".encode.list, :size<1>).perl
camelia rakudo-moar 934c48: OUTPUT«Buf.new(97, 98, 99, 100, 101, 102, 103, 104)␤»
timotimo m: say Buf.new([1024, 2048, 4096], :size<1>).perl 17:08
camelia rakudo-moar 934c48: OUTPUT«Buf.new(0, 0, 0)␤»
timotimo m: say Buf.new([1024, 2048, 4096], :size<2>).perl
camelia rakudo-moar 934c48: OUTPUT«Buf.new(0, 0, 0)␤»
timotimo m: say Buf.new([1024, 2048, 4096], :size<4>).perl
camelia rakudo-moar 934c48: OUTPUT«Buf.new(0, 0, 0)␤»
timotimo hm.
it's also strange to use <> there
m: say Buf.new([1024, 2048, 4096], :size(4)).perl
camelia rakudo-moar 934c48: OUTPUT«Buf.new(0, 0, 0)␤»
timotimo m: say Buf.new([1024, 2048, 4096], :size(16)).perl
camelia rakudo-moar 934c48: OUTPUT«Buf.new(0, 0, 0)␤»
timotimo m: say Buf.new([1, 2, 3, 4, 5], :size(1)).perl
camelia rakudo-moar 934c48: OUTPUT«Buf.new(1, 2, 3, 4, 5)␤»
timotimo m: say Buf.new([1, 2, 3, 4, 5], :size(2)).perl
camelia rakudo-moar 934c48: OUTPUT«Buf.new(1, 2, 3, 4, 5)␤»
timotimo m: say Buf.new([1, 2, 4, 8, 16, 32, 64, 128, 256], :size(2)).perl 17:09
camelia rakudo-moar 934c48: OUTPUT«Buf.new(1, 2, 4, 8, 16, 32, 64, 128, 0)␤»
raiph timotimo, Mouq, others: Imo p6 needs two faces. One targeting everyone (in particular, including non-contributing users) with suitable simplifications (lies-to-children -- but not marketing let alone marketese). (perl6.com; no camelia; I'm seriously suggesting we clone the python driven mozilla.com...) And another dealing with guts + gory details, 17:20
suitable mostly for contributors. (perl6.org; camelia; -Ofun).
dwarring lue: from advent day 10... 17:23
r: my $name = 'fred'; my @msgs = (1..12); q:c'Hello, $name. You have { +@msgs } messages.' 17:24
camelia rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«===SORRY!===␤Unrecognized adverb: :c'Hello␤at /tmp/tmpfile:1␤------> = 'fred'; my @msgs = (1..12); q:c'Hello⏏, $name. You have { +@msgs } messages.'␤Couldn't find terminator ,␤at /tmp/tmp…» 17:25
..rakudo-parrot 934c48: OUTPUT«␀␀␀[␀␀␀3␀␀␀1␀␀␀m␀␀␀=␀␀␀=␀␀␀=␀␀␀␀␀␀[␀␀␀0␀␀␀m␀␀␀S␀␀␀O␀␀␀R␀␀␀R␀␀␀Y␀␀␀!␀␀␀␀␀␀[␀␀␀3␀␀␀1␀␀␀m␀␀␀=␀␀␀=␀␀␀=␀…»
timotimo wow, yikes
dwarring r: q:c'hi there'
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Alphanumeric character is not allowed as a delimiter␤at /tmp/tmpfile:1␤------> q:c'hi ⏏there'␤ expecting any of:␤ …»
dwarring r q:c"hi there"
timotimo r: say q:c 'hi there'
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«hi there␤»
TimToady remember that we allow apostrophes in identifiers
dwarring ...seems to be a problem with single quiote + adverb 17:26
timotimo what TimToady said
dwarring ah
timotimo just an LTA error message
(in the case of parrot, pretty significantly LTA)
dwarring ok, then the advent example needs tweaking
will note it
pmurias raiph: what's wrong with camelia? 17:30
colomon hmmm, how to get a directory from p6? 17:33
dir? 17:34
pmurias raiph: currently perl6 is -Ofun so marketing it as a time tested, solid "production" could create disappointment
PerlJam colomon: you mean a list of files in a directory? That's dir() 17:34
colomon PerlJam++ 17:35
colomon is still p6 hacking for $work
raiph pmurias: camelia is great; please disregard my "no camelia" on perl6.com comment; I'll maybe return to what I meant by my "no camlia" comment later 17:36
pmurias maybe we need a more serious looking camelia variant ;) 17:37
timotimo camelia is getting close to that age when teenagers start rebelling and putting on dark makeup and clothes ;) 17:39
grondilu off-topic: do you guys know if there's any equivalent to '$ LANG=C someprogram' in Window's cmd.exe? 17:40
timotimo yeah, you reinstall windows with the language you want
vendethiel r: my $a' = 5; say $a';
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> my $a⏏' = 5; say $a';␤ expecting any of:␤ scoped declarator␤ …»
vendethiel r: my $'a = 5; say $'a;
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> my $⏏'a = 5; say $'a;␤ expecting any of:␤ scoped declarator␤ …»
timotimo apostrophe is only allowed in identifiers between alphabetical characters 17:41
just like the -
vendethiel r: my $a'b = 5; say $a'b;
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«5␤»
vendethiel timotimo++
I tried to do it using it as a "prime", haskell-style
timotimo heh.
i thought you wanted to have an identifier named $a' =5; say $a'
vendethiel I can do that, though, right ? 17:42
$INNER::<a' =5; say $a'> = 5;
or something like that
timotimo :
:P
r: ::<foo bar baz> = 5;
camelia rakudo-moar 934c48: OUTPUT«No such method 'STORE' for invocant of type 'Any'␤ in method STORE at src/gen/m-CORE.setting:7082␤ in block at /tmp/tmpfile:1␤␤» 17:43
..rakudo-parrot 934c48: OUTPUT«Cannot modify an immutable value␤ in method STORE at gen/parrot/CORE.setting:7029␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-jvm 934c48: OUTPUT«Cannot modify an immutable value␤ in method STORE at gen/jvm/CORE.setting:7025␤ in block at /tmp/tmpfile:1␤␤»
timotimo oh, wait, that'd be a list
vendethiel oh yeah, it should be {''}
timotimo r: ::{'$foo bar baz'} = 5;
camelia rakudo-moar 934c48: OUTPUT«No such method 'STORE' for invocant of type 'Any'␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 934c48, rakudo-jvm 934c48: OUTPUT«Cannot modify an immutable value␤ in block at /tmp/tmpfile:1␤␤»
timotimo r: MY::{'$foo bar baz'} = 5;
camelia rakudo-moar 934c48: OUTPUT«No such method 'STORE' for invocant of type 'Any'␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 934c48, rakudo-jvm 934c48: OUTPUT«Cannot modify an immutable value␤ in block at /tmp/tmpfile:1␤␤»
timotimo hm.
moritz nah, you can't declare variables at run time
timotimo oh, of course not 17:44
FROGGS r: $::{'$foo bar baz'} = 5;
camelia rakudo-moar 934c48: OUTPUT«===SORRY!===␤MVMArray: Index out of bounds␤»
..rakudo-parrot 934c48: OUTPUT«===SORRY!===␤QRPA: index out of bounds␤»
..rakudo-jvm 934c48: OUTPUT«===SORRY!===␤VMArray: Index out of bounds␤»
FROGGS at least it is nicely aligned :o)
vendethiel o// 17:44
but parrot's "index" is not capitalized
timotimo hahaha
FROGGS hehe
raiph pmurias: I agree that p6 dev is about -Ofun and that marketing it as a time tested, solid "production" years before it could possibly be is inappropriate. I'm comfortable with the perl6.com site making it clear just what P6 is ready for (and if the answer is "still nothing yet", then saying so, and if the answer is "it's complicated", providing a c
onservative lies-to-children version (maybe "nothing yet unless you're willing to get in to guts + gory details" with a link to perl6.org).
timotimo that's amazing.
vendethiel that triggers my not-actually-ocd. 17:45
but I still don't get the error :-)
colomon what's the p6ism for shelling to a command? 17:52
(interested in the return value)
system doesn't work. shell? 17:53
FROGGS qx?
rurban1 return string or exit value? qx gives the string
FROGGS shell and run give the exit status
colomon shell returns Proc::Status.new(exit => 127, pid => Any, signal => 0), which looks promising. 17:54
FROGGS yes, shell(...).status if you are just interested in that numeric value
colomon now I just need to figure out what the different possible values are...
rurban1 so far qx doesnt set $!
I just gave up on that today
FROGGS yes, there is a run/shell/qx refactoring in the queue 17:55
raiph pmurias: I'm now thinking there's an existing good solution for the site split I was thinking of, with rakudo.org playing the role I was describing as perlt.com. Thanks for leading me to that happy conclusion. :) 17:56
raiph s/perlt/perl6/ 17:57
colomon and I would get more interesting results if the command I passed to shell had spaces in it. 18:05
\o/ 18:07
is there documentation for shell somewhere? 18:12
S29 18:15
ack for the win
dalek ast: 5fbf43c | (David Warring [email@hidden.address] | integration/advent2013-day10.t:
adding advent 2013 day 10
18:23
rindolf Hi all. Where is the Perl 6 Advent Calendar article about Perl 6 piping (like ====> or <==== IIRC). 18:34
I cannot find it using Google or DuckDuckGo web searches
timotimo "feeds" is the word you're looking for 18:35
PerlJam rindolf: and it's just ==> and <==
raiph Anyone know how can I delete or request deletion of github.com/perl6/misc et al?
timotimo yup
rindolf PerlJam: OK. 18:36
perl6advent.wordpress.com/2009/12/...r-of-eden/ - it seems to be here.
PerlJam rindolf: well, there's perl6advent.wordpress.com/2010/12/1...operators/ :-) 18:37
rindolf PerlJam: ah, I see, yes. 18:38
timotimo .u full block 18:40
yoleaux U+2588 FULL BLOCK [So] (█)
pmichaud good afternoon, #perl6 18:45
raiph: ping
raiph pmichaud: hi 18:46
pmichaud just got your email about rakudo.org 18:46
I didn't even realize the how-to-help page still listed Andy as the contact :) 18:47
raiph yeah ;) also, please search for my name in today's irc log to see couple related comments
pmichaud looking
nwc10 good pm, Pm 18:49
pmichaud I can delete the perl6/misc repo.
colomon o/ 18:50
pmichaud perl6/misc is now gone 18:51
raiph: I can get you an account on rakudo.org 18:52
pmichaud raiph: account created, you should get email with details 18:55
and I updated the contact info on how-to-help 18:56
rindolf PerlJam: thing is I'm looking for something like that for Perl 5 on CPAN. 18:57
FROGGS hi pmichaud
Geo_ twigils.com 19:42
perlfan just ignore that guy 19:43
he's a php developer
rurban1 :) 19:46
vendethiel perlfan: I'd say "just ignore that guy, he's as good at constructed criticism as a 5 years old" 19:49
timotimo i've never seen such a good display of why perl is not a good language 20:11
rurban1 LICENSE question. jnthn's 6model files are copyright The Perl Foundation, right? 20:11
FROGGS nqp is AL2.0, and that should apply to 6model as well, no? 20:18
pmichaud iirc, 6model was developed under a TPF grant, so yes, the work is copyright by TPF 20:20
grondilu twigils.com may be a stupid troll, but at some point I think it's fair to look at it frankly and wonder why such a website even exists. It's no secret that Perl has popularity issues. Are sigils the main cause? Is it completely blasphematory to imagine that Perl6 would allow sigiless, read-and write variables? I mean, if we want to overcome a very big popularity issue, you may have to take very drastic measures. 20:30
I don't think it would be a very big change in the grammar either. 20:31
moritz in some sense therE's already a perl dialect without sigils: ruby 20:33
but you have to ask yourself if the result is stil perl
huf does it have contexts?
moritz also, it's not just a matter of grammar 20:34
sigils form micro namespaces, so if you abolish them, you need some other mechanism for disambiguating constructs
grondilu I'm not talking about abolishing them. 20:35
moritz keywords vs. terms vs. type names vs. variables vs. subs
grondilu couldn't it be some kind of "zero-length" sigil? 20:35
I mean, a sigiless symbol that would not be a sub would be a sigiless variable. 20:36
and it would be declared by an initialization 'x = foo' as in other languages. 20:37
without "my"
huf you want to support that bug too? 20:38
grondilu well, on the other hand once macros are defined, it should be possible to implement this in a "sigiless" module, I guess. That would be fine. 20:39
s/defined/implemented/
moritz no variables without declarations
(unless in "no strict" mode)
it makes scoping very unclear
huf well, unless it's always a new variable :) 20:40
grondilu a 'use sigiless' mode could be an other kind of relax, un-safe mode.
huf all assgnment is declaration
grondilu and yes, an assignement to a previously unseen symbol could stand as a declaration. 20:41
That's what other languages do.
moritz and all languages that do it regret it eventually 20:42
vendethiel grondilu: I don't believe it, people will always hate
I can understand why people are frustrated if they have to use PHP /troll
moritz all serious js guides recommend against doing it, because it creates global variables that contaminate the global namespace 20:43
segomos moritz++
vendethiel Definitely agree with moritz.
PerlJam indeed.
vendethiel `my`-less variable creation is the death of lexical scoping
moritz and the implicit scoping is one of the most serious points of criticisms against python 20:44
vendethiel ^
PerlJam and ruby
moritz I'm slowly collecting a list of language features that, over time, have proven to work much better than the alternatives
PerlJam moritz: isn't that collection called Perl 6 ;) 20:45
FROGGS hehe
moritz among them are the closure cloning model used in perl, js, and lots of other dynamic languages, C3 MRO, and explicit variable declarations
vendethiel hahaha
moritz PerlJam: Perl 6 is superset of that :-) 20:46
FROGGS and regexes that are not just strings that get evaluated (Yes, I mean you! preg_match!)
grondilu as far as I'm concerned, I do see one caveat with sigils. To me, it does not overturn the advantages, but sometimes, not very often, it does indeed annoy me just a bit. And I suspect that's why people in other languages don't like them. 20:47
FROGGS I like sigils, because this way I can easily distinguish vars from subs, especially when you do not have/use parens 20:48
PerlJam sub foo(\no-sigil) { say "I've got {no-sigil}" } # :-)
vendethiel grondilu: have you read c2.com/cgi/wiki?TheProblemWithSigils ? 20:49
PerlJam (sigils do make interpolation a bit easier, though with the generalization of {} interpolated as code, the advantage is weakened slightly
)
raiph I think all newbies should be exposed to sigil-less terms near step 1 of a P6 101, and P6BP ought encourage use of (sigil-less) SSA terms, constants, and so on ahead of variables. 20:51
moritz vendethiel: somehow that doesn't list any problems with sigils, really 20:51
segomos it's also a pain in the ass to go back and read someone else's code if they didn't use sigils
vendethiel moritz: it lists differences
moritz aye 20:52
raiph segomos: presumably you're OK with things like (sigil-less) constants and Enums? what about SSAs/terms? 20:53
moritz grondilu: I agree that Perl has serious problems, but I don't think sigils are anywhere near the top of the problem list 20:55
segomos raiph: sure, i'd prefer it to be uniform, variables are easier to read with sigils. p6 does a better job with them for sure 20:56
grondilu oh, ok. What is it then, if you can sum it up quickly? (I don't want to waste your time or anything) 20:57
moritz the problems being mostly that perl 5 is full of warts and missing features (like subroutine signatures (I know, not for long), sane built-in OO), and Perl 6 isn't production ready for most applications 20:57
dag moritz: I believe sigils are pretty close to the top of the list of *perceived* problems with Perl 20:59
PerlJam That's weird 20:59
grondilu you know, that makes me think of a saying in finance. "There is no point of being right against the market".
PerlJam perhaps because oof sigil variance in P5
nwc10 a guy at work seems to be struggiling with that. He's used to C++ and PHP 21:00
dag On the (admittedly rare) occation that I write elaborate mathemathical expressions in Perl, I have to agree with the people who go on about "line noise".
itz__ if you don't like sigils don't use perl 21:01
surely its one of the things which makes perl be perl
grondilu dag: yes, writing math expressions in perl is annoying.
dag itz__: Very constructive...
moritz there's also some kind of bootstraping problem about perl not being popular, perl not being taught, low availabilty of perl programmers, and perl not being popular 21:02
dag grondilu: Yes! However otherwise I'm fine with it, I guess. 21:02
grondilu that's also why I never felt comfortable doing linear algebraic stuff in Perl. And I suspect that's why Perl is not popular in academics and numerical analysis. It just does not look like maths at all. 21:03
dag moritz: I'm just lurking here, but IMHO you really are working on a great language. It jus *has* to be the next cool thing :-) 21:04
grondilu When I do linear algebra, I usually prefer octave.
segomos nwc10: i struggled with it years ago too, i'm glad it's there now
lue r: my \foo = "If you really want sigilless..."; say foo;
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«If you really want sigilless...␤»
dag grondilu: We seem to have some things in common :-) 21:05
grondilu lue: that should prove that implementing sigiless, read-and-write variables should not be too hard in Perl 6, since it is almost aleady available. 21:06
dag grondilu: I haven't picked up much of Perl 6 yet, but can't sigilless variables be declared using "my \var" ? Or does that mean something else?
grondilu dag: they are then read-only.
dag grondilu: Oh. Bummer :-/ 21:06
grondilu and I think we should consider getting rid of the 'my \' for those cases. 21:07
moritz grondilu: not going to happen. We won't repeat other language's obvious mistakes.
grondilu basically whenever you assign a previously unseen symbol, that would mean 'my \'
lue r: my $foo = "A"; my \bar = "B"; say $foo.VAR.WHAT; say bar.VAR.WHAT 21:07
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«(Scalar)␤(Str)␤» 21:08
dag moritz: What is not going to happen, sigilless writable variables or "my var" ?
lue both, I'd guess
dag moritz: ^^ instead of "my \var"
moritz dag: implicit declarations of variables on first assignment 21:09
segomos grondilu: it's a pita to read other people's code that implicitly defines variables
grondilu moritz: again, "being right against the market". At some point if we want Perl to be popular, we may have to accept other people's bad taste. And again, it would be a degraded mode, just as the "no strict" mode.
dag moritz: Uha, no, please don't allow that!
lue grondilu: \vars are non-writable because they don't have a scalar or anything mutable to them (they specifically don't impose any kind of context)
moritz grondilu: I don't want to a fucked-up perl to be popular. PHP already exists. 21:10
retupmoca personally, implicit declaration on first assignment would drive me away from the language 21:10
moritz s/to//
segomos retupmoca++
dag lue: I think that would be a real shame, since mathematical expressions in Perl are *ugly* and *hard to read* as it stands.
moritz there must be bounds to adopting other languages mistakes
lue dag: there are plenty of examples on RosettaCode using the magic of Unicode, etc. to do mathy things. 21:11
grondilu retupmoca: that's already how perl works in no strict.
segomos and it's a pita to read
moritz and guess what, all good tutorials start with 'use strict;'
dag lue: Yes, I have caught earlier that "my \var" can be used, but now I hear that such variables are read-only?
retupmoca grondilu: Indeed it is. I write perl 5 code for $work, and use strict everywhere 21:12
the old stuff that isn't strict is a PITA to work with
grondilu even for one-liners?
lue dag: I imagine assigning a Scalar (or some other mutable) to it would make it mutable.
timotimo you can still := a \var, can't you?
segomos i wouldn't rewrite that piece just to accomodate one liners
lue r: my \foo = 42; say foo; foo := 21; say foo; 21:13
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Cannot use bind operator with this left-hand side␤at /tmp/tmpfile:1␤------> my \foo = 42; say foo; foo := 21⏏; say foo;␤…»
retupmoca grondilu: Yes, even for one-liners. I may skip the actual 'use strict', but I still explicitly declare everything with my
lue timotimo: guess not.
segomos r: my $a = 5; my \foo = $a; foo.say; $a = 6; foo.say;
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«5␤6␤»
timotimo interesting
grondilu I wrote a few example of math code on RosettaCode. I could feel the pain and uglyness sometimes. 21:14
pmichaud r: my \foo is Scalar = 5; foo.say; # curious
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Term definition requires an initializer␤at /tmp/tmpfile:1␤------> my \foo ⏏is Scalar = 5; foo.say; # curious␤ expect…»
timotimo so, what exactly is the problem with math in Perl 6 now?
dag lue: How about you guys make your example above work in Perl 6? ;-)
grondilu The example I have in mind is Runge-Kutta.
moritz grondilu: but the pain comes from the sigils, not from the need for declaration. Right?
raiph grondilu: I agree that Perl has made a tradeoff with its use of symbols that has strengths and weaknesses, with the latter including a visual impact on newbies that can be experienced as "unfriendly" and unsettling symbol compaction in some cases (a lot of math?); but both of those can be controlled near 100% by means other than changing the langua
ge
dag moritz: At least to me there is zero pain in declaration. 21:15
segomos r: my $a = 5; my \foo = $a; foo.say; $a = 6; foo.say;
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«5␤6␤»
segomos works just fine
lue sigils just aren't that big of a deal in terms of issues with Perl (and Bash, and...). I'll also remind you that the joke website was named for *twi*gils, not sigils :)
dag segomos: But is a workaround aka a hack.
moritz dag: yes, we agree violently on this point :-) 21:16
pmichaud maybeweshouldhavealanguagethatdoesntuseanypunctuationorwhitespace
dag moritz: :-)
segomos r: my $a = 5; my \foo = $a; foo.say; foo = 6; foo.say;
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«5␤6␤»
grondilu moritz: yes, the pain came from the sigils.
segomos also works fine
lue pmichaudiguesswecangetridofsigspaceinregexesnowhuh 21:17
segomos lueyespleasesoitistotallyambiguous
moritz grondilu: then don't hurt your argument by also doing a senseless ralley against declarations at the same time
grondilu I don't do any such thing.
lue I personally love that I can just do my $new without ever worrying that I accidentally a reserved name.
pmichaud r: my \foo = my $foo = 5; foo.say 21:18
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«5␤»
segomos r: my $a = 5; my \foo = $a; foo.say; foo = 6; foo.say; foo = 7; foo.say;
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«5␤6␤7␤»
segomos works on moar too
dag moritz: So, you can already do "my \var = 5; var.say" - what's stopping you from allowing "my \var = 5; var = 6; var.say" ?
pmichaud an interesting syntax might be: my \$foo = 5; which declares both $foo and "foo"
pmichaud dag: my \var = 5; declares a symbol "var" that is bound to a constant 5 21:19
lue [14:07:49] <grondilu> basically whenever you assign a previously unseen symbol, that would mean 'my \'
pmichaud it doesn't declare a scalar variable
grondilu lue: I meant, a previously sigiless symbol
dag pmichaud: OK, so how about changing the meaning of it? ;-)
timotimo my \var = Scalar.new... :P
pmichaud dag: that would change the meaning of declaring \var in subroutine signatures... which is really the point of the \ in the first place. 21:20
segomos timotimo: that errors
r: my \foo = Scalar.new; foo = 5; foo.say;
camelia rakudo-jvm 934c48: OUTPUT«java.lang.NullPointerException␤ in method bless at gen/jvm/CORE.setting:858␤ in method new at gen/jvm/CORE.setting:843␤ in method new at gen/jvm/CORE.setting:841␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 934c48: OUTPUT«(signal SEGV)»
..rakudo-moar 934c48: OUTPUT«Cannot call method 'BUILDALL' on a null object␤ in method bless at src/gen/m-CORE.setting:858␤ in method new at src/gen/m-CORE.setting:843␤ in method new at src/gen/m-CORE.setting:841␤ in block at /tmp/tmpfile:1␤␤»
timotimo i know :)
lue grondilu: segomos' reply would indicate you worded that poorly. It plainly meant ... implicit_dec = 42; ... by my (and probably most others') interpretation.
segomos r: my \foo = (my $a); foo = 5; foo.say;
grondilu if the point of sigil-less less is to spare some typing, I would like to spare typing 'my \' as well.
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«5␤»
dag pmichaud: Ok. So could simply "my var" be made to work out?
pmichaud dag: you run into other issues pretty quickly there, since what follows "my" can be a typename. 21:21
dag pmichaud: Yes, I understand.
lue grondilu: 'my \' was invented to avoid imposing a context on a variable's contents, not for sigilless. 21:21
moritz dag: in Perl 6, $ implies scalar, @ implist list, % implies hash, & implies code. Sigilless variables impose no context at all
pmichaud std: my \$var = 5; # curious to see what std says 21:22
camelia std 09dda5b: OUTPUT«===SORRY!===␤Malformed my at /tmp/diO1Q4I5J6 line 1:␤------> my ⏏\$var = 5; # curious to see what std s␤ expecting any of:␤ name␤ scoped declarator␤ statement end␤ statement list␤Parse failed␤FAILED 00…»
moritz dag: which means, there's no scalar container into which you could assign things, unless you take extra care that there is such a scalar 21:22
dag: so my \var = 5; var = 8; can only work out of you overthrow that rule
dag: and find something else which implies no context
certainly thinkable 21:23
my |var = 5; # maybe
dag moritz: OK. So, how about allowing "my $var = 5; var = 6" ?
grondilu lue: just checked. Indeed I worded that poorly. We're on IRC it's not easy to be accurate. I did mean a previously uness sigil-less symbol. Again, the point of sigil-less would essentially to avoid some typing. So for them I would like to avoid typing 'my \' as well. 21:24
lue grondilu: that's implicit declaration, and that would only happen in 'no strict' land :)
grondilu *previously unseen
timotimo { use MathematicalLanguage; a = b + c; }
grondilu well, yes indeed. I had not realized that. 21:25
segomos dag you can already reasonably do that
dag moritz: Or "my_no_sigil var = 5" ;-)
segomos r: my \foo = (my $a); foo = 5; foo.say;
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«5␤»
pmichaud r: my \var = $(5); # also curious
camelia ( no output )
pmichaud r: my \var = $(5); var = 6; var.say 21:25
camelia rakudo-moar 934c48: OUTPUT«No such method 'STORE' for invocant of type 'Int'␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 934c48, rakudo-jvm 934c48: OUTPUT«Cannot modify an immutable value␤ in block at /tmp/tmpfile:1␤␤»
dag segomos: Yes, but don't you agree that it's a hack? 21:26
moritz dag: my $var = 5; var = 6 would make no sense at all with the current concept
dag moritz: OK. Please bear with me :-) 21:26
moritz dag: other options (like a special syntax for declaration or a different declarator) would
segomos i agree it's a hack. i think it's a hack to demand sigil-less expressions in a language that uses sigils 21:26
grondilu though we could consider that only sigil variables have to be explicitely declared.
itz__ if you don't want sigils write a DSL in perl6 without them
dag segomos: Well, Perl *is* multi-paradigm ;-) 21:27
lue moritz: waitaminute, if \var isn't designed for sigilless explicitly, then why is it my \a = 5; say a; instead of my \a = 5; say \a; ? potential for prefix:<\> ?
pmichaud grondilu: that feels like going completely the wrong way, fwiw.
dag grondilu: Please don't!
lue grondilu: yeah, I'm with pmichaud, that feels like the inverse of what would be OK.
moritz lue: who says \var isn't designed for sigilless?
lue moritz: my preferences? I thought is was principally a no-context thing. 21:28
moritz dag: but sigilless variables come at a readability cost too
TimToady nothing in Perl 6 is there for only one reason
pmichaud afaict, \var in perl6 serves much the same purpose as &var in C++
segomos dag: true, but it's still a hacky request
pmichaud i.e., it's a reference
moritz dag: for example scalars never flatten in list context
TimToady it's a temporary constant 21:29
dag segomos: Maths is a hack? ;-)
moritz dag: so you know that for $foo { } will always be one iteration, regardless of what $foo contains
pmichaud I better re-read spec before commenting any further.
moritz dag: and you know that for @foo { } will always iterate over the elements of @foo
segomos dag: saying Math is p vague
moritz dag: but if you say for sigiilles { } you have no idea if it'll flatten that list on iteration, or not 21:30
moritz and even if sigillest.^name says List, it could still be inside a scalar container, and not flatten 21:30
grondilu r: my \a = <foo bar>; for a { .say } 21:31
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«foo␤bar␤»
grondilu rakudo knows what to do here.
dag grondilu: He he.
lue moritz wasn't talking about rakudo, but the reading programmer, I think.
segomos r: my \a = (my $b); a = <a b>; for a { .say} ;
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«a b␤»
segomos r: my \a = (my $b); a = <a b>; for a { .say}; a = ('a','b'); for a { .say}; 21:32
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«a b␤a b␤»
grondilu lue: nobody denies that sigil variables are easier to read and interpret. But some programmers like sigil-less variables anyway.
just let them have their crap
dag moritz, lue: Of course, if you want to shoot yourself in the foot, but that's not a place where I'd use sigilless variables. I'd just like to have the choice.
grondilu there's no point being right against the market, and there's more than one way to do it. 21:33
segomos if i were reading that i'd suspect the latter 'for' loop to go twice
TimToady sigilless names are intended to simple aliases, so aliasing them to something complicated like a variable kinda defeats the purpose, from a compiler's point of view
pmichaud grondilu: there's not just one market, either.
TimToady *to be
pmichaud I always remember that Southwest Airlines does incredibly well by defining their market as being something entirely different from what other airlines consider to be "the market". 21:34
segomos finance makes a poor simile for programming languages
TimToady same for Craigslist
grondilu pmichaud: so you're answer to Perl's lack of popularity is that it just does not matter or something?
s/you're/your/ 21:35
pmichaud grondilu: from where I sit, Perl still looks reasonably popular.
lue grondilu: it's that sigils are ultimately not the One True Issue™.
pmichaud also, I doubt that taking sigils out of Perl will suddenly make it "popular". :)
rurban1 it will look better for sure 21:36
segomos an ide that does everything for the 'programmer' is a more likely problem than anything in the language
lue wants semicolon-less line terminators now!
rurban1 for the novice programmer
moritz grondilu: as a data point of "the market", Go, the new hawtness, uses := for declaration-on-first-use
so little typing, but still explicit
jnthn home :)
dag TimToady: Perhaps you can come up with a clean syntax for segomos' hack: "my \a = (my $b); a = 5;" ? ;-)
pmichaud lue: You can have semicolon-less line terminators now in p6.
grondilu moritz: I'd be satisfied with that.
segomos dag: it's not possible to do reliably for the example i had above 21:37
r: my \a = (my $b); a = <a b>; for a { .say}; a = ('a','b'); for a { .say}; # if i were reading this i'd suspect the latter 'for' loop to iterate twice
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«a b␤a b␤»
lue pmichaud: o_o or should I have said "statement terminators"?
TimToady dag: I don't want aliases to be reassignable particularly. I want the compiler to know it's basically readonly for the rest of this iteration
segomos perl6 on eclipse would make all the girls scream
TimToady it's as much for the folks who want an SSA style as it is for anything else 21:38
segomos visual studio for perl6
dag TimToady: Ok. So no writable sigilless variables for mathematical expressions on the horizon?
lue Microsoft VP6 2015 Express
TimToady dag: the perception that those are varables is usually false 21:39
segomos dag: what kind of math are you doing
TimToady usually they're rebound every time through the loop
rurban1 I'm working on 6model (MMD) in parrot now. I guess we could add some more ops for that.
lue afk
rurban1 sort_signatures also needs to be cached in multi_dispatch
segomos r: my @data = <1 2 3>; for \a (@data) { a.say; }
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ a used at line 1␤␤»
dag segomos: It doesn't have to be more than basic arithmetic expressions before my eyes begin to hurt from all the dollar signs.
segomos r: my @data = <1 2 3>; for my \a (@data) { a.say; }
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Term definition requires an initializer␤at /tmp/tmpfile:1␤------> my @data = <1 2 3>; for my \a ⏏(@data) { a.say; }␤ …» 21:40
itz__ dag: just write a DSL
pmichaud fwiw, I think that anyone that says "just write a DSL" needs to have first written a DSL.
:-)
dag pmichaud: :-D
FROGGS r: my @data = <1 2 3>; for @data -> \a { a.say;
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unable to parse expression in block; couldn't find final '}' ␤at /tmp/tmpfile:1␤------> data = <1 2 3>; for @data -> \a { a.say;⏏[…»
FROGGS r: my @data = <1 2 3>; for @data -> \a { a.say }
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«1␤2␤3␤»
TimToady does that mean I can say it?
segomos FROGGS: there we go
FROGGS segomos: we are in #perl6, you know :o) 21:41
segomos yea i forgot lol
let's change that -> to =>
pmichaud TimToady: yes, you can say it. Although the languages you come up with seem to not be so DS.
although they do apparently miss "the mark(et)" :-) :-)
segomos pmichaud: nice 21:42
TimToady is this another one of those Everyone's A Language Designer days? :)
pmichaud Everyone's a Language Designer, yes. But not Everyone's a Good Language Designer. 21:43
segomos dag: it's fairly easy to work around
dag TimToady: He he, sorry about that. But who knows, perhaps some day you'll really want sigilless variables in a Rosetta Code program ;-)
FROGGS dag: there are already examples that way 21:44
pmichaud actually, I think that Rosetta Code is one of the reasons TimToady introduced the current \ syntax :) 21:44
moritz you can always fall back to recursion instead of iteration if you want to re-use a \foo variable :-) 21:45
segomos why does panda modules have a slash through s11 ?
dag segomos: Yes, I realize that. I just think that Perl 6 seems to turns out so *nice*, that I would hope for less hacky solutions.
TimToady actually, the really nice thing is that once you realize how \a works, it's a readability thing, and you can rely on the fact that it won't be redefined 21:46
dag pmichaud: Now I'm just waiting for him to come over a Rosetta Code task where he'd like to write to a sigilless variable ;-)
TimToady then the $var instances stand out even more as non-FP warts :)
pmichaud dag: I think you're in the wrong universe for that.
FROGGS segomos: mostly because the META.info misses the "provides" section
dag TimToady: Understood.
pmichaud I mean, asking TimToady to drop sigils is like asking Guido to make whitespace insignificant.
segomos FROGGS: thank you 21:47
dag pmichaud: No no no, I'm not asking anyone to drop sigils!
rurban1 I thought TimToady was pro js
segomos js is p dope
pmichaud dag: okay, sigilless vars, then.
dag pmichaud: I just think it would be nice to allow skipping them on occation. As TimToady already does :-)
pmichaud dag: you want to skip them on MORE occasions. :) 21:48
dag TimToady: I guess I'll just have to think more FP :)
pmichaud dag: I'm not saying you're wrong for wanting that... just that it introduces other issues. (more) 21:49
for anyone that really wants sigiless, branch a copy of Rakudo and see what happens when you introduce them.
I think you'll quickly find the parsing conflicts that lead to where things are now.
dag pmichaud: I don't think I'm about to go down that road, no. Please don't get me wrong, I'm just asking whether it would be possible. If not, well, touch luck. 21:50
*tough
TimToady sees little benefit in allowing a syntactic variation without making it also carry some semantic weight to distinguish it from other syntax 21:51
dag And now I'll stop pestering you all with ramblings about sigilless variables!
lue TimToady: considering you use \foo in rosettacode for mostly math-related stuff (at least what I've seen), how about banning ASCII alphanumerics from \var names? :P
TimToady is not much into banning things 21:52
jnthn rurban1: If you touch anything Perl 6 multi-dispatch related, please do it as a pull request. I want to review changes there carefully.
TimToady not unless there's some important reason like future extensibility on the line
dag gives all Perl 6 people a pat on the back
dag goes to bed 21:53
TimToady o/
segomos fixing my CSV::Parser for p6 to handle binary ops 21:54
oops
pmichaud ooc, I just did a "make spectest" on my machine (first time in months) and I'm getting test failures... known? 21:56
FROGGS pmichaud: about three test files? yes
pmichaud t/spec/S32-exceptions/misc.rakudo.parrot (Wstat: 0 Tests: 709 Failed: 2) Failed tests: 10, 647 21:57
FROGGS yes, I've seen that too a few hours ago, but had no time yet to look at it
itz__ what about line numbers in perl6? 22:01
:)
FROGGS itz_: what about line numbers? 22:02
lue what about $?LINE ?
pmichaud itz__: line numbers are no problem, you just use the special #`(20) circumtwigils
r: #`(10) print "HELLO WORLD\n"; #`(20) print "This is line 20\n"; 22:03
camelia rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«HELLO WORLD␤This is line 20␤»
FROGGS hopes that itz__ is not proposing `goto 20`
pmichaud although at some point the L10: syntax will work
std: L10: print "HELLO WORLD\n"; goto L10 22:04
camelia std 09dda5b: OUTPUT«ok 00:01 122m␤»
FROGGS m: L10: print "HELLO WORLD\n"; goto L10
camelia rakudo-moar 934c48: OUTPUT«===SORRY!=== Error while compiling /tmp/Qvl99GcYgZ␤Undeclared name:␤ L10 used at line 1␤Undeclared routine:␤ goto used at line 1␤␤»
FROGGS m: L10: print "HELLO WORLD\n";
pmichaud p6: L10: print "HELLO WORLD\n"; goto L10
camelia rakudo-moar 934c48: OUTPUT«HELLO WORLD␤»
rakudo-parrot 934c48, rakudo-jvm 934c48, rakudo-moar 934c48: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared name:␤ L10 used at line 1␤Undeclared routine:␤ goto used at line 1␤␤»
..niecza v24-109-g48a8de3: OUTPUT«(timeout)HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELLO WORLD␤HELL…»
pmichaud ta-daa! niecza FTW 22:05
lue pmichaud: is L10: special from any other kind of label?
FROGGS pmichaud: there is a branch that makes labels work for nqp loops
pmichaud lue: technically no. Although I can argue that "L" is the line number sigil. :-P
FROGGS lue: it is just a label
hehe
lue imagines that the L10: label could conceivably change the meaning of $?LINE ...
FROGGS >.< 22:06
tadzik interesting discussion back in the backlog
pmichaud I'm afk, robotics meeting
FROGGS o/ 22:07
lue tadzik: and all brought about by a very childish attempt at insults :) We didn't even talk about twigils, too.
tadzik I don't mind occasional low-tier trolling if it provokes a good discussion with good people afterwards 22:08
tadzik has a new guitar :) 22:10
for a test run anyway
timotimo is it already nearing release day again? o_O 22:31
tadzik oh, is it? :) 22:33
sounds like a job for release-man
yep, thursday :)
timotimo it's you, isn't it?
rurban1 It's Util today. Already on its way 22:35
oops, wrong channel
timotimo that's fine, too :) 22:37
can someone who knows a bit of MarkDown magic look at the release_guide.md file in the moarvm/moarvm repository's docs/ folder? 22:43
the 5th step is rendered as being all one line
anything else that desparately needs to go into nqp, rakudo or moarvm before the release the day after tomorrow? :P 22:44
retupmoca timotimo: Like so? github.com/MoarVM/MoarVM/pull/83 23:08
(for release_guide.md) 23:09
timotimo that looks just like what i tried
but it does work
thanks
retupmoca I had to add an extra space to make it go into code-display mode for some reason 23:10
timotimo yeah
i tried more and less spaces and also using > at the beginning
seems like i just didn't hit the right amount of spaces ;)
segomos is there some doc somewhere that explains what i should have in META.info for panda 23:18
timotimo perl6.org/Create%20and%20Distribute%20Modules - this used to be it; but the wiki is now down 23:19
lue segomos: I *think* S22 may have what you want.
timotimo (got that link from "please read this guide" on modules.perl6.org)
but for now i'm going to bed
lue timotimo o/
segomos thanks guys
raiph segomos: we'll need to recover that page properly but for now: web.archive.org/web/20130927134706...%20Modules 23:59