»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
FreezerburnV Hello all 00:12
timotimo hello mister burns :P 00:25
FreezerburnV timotimo, Smithers! Pull the lever to drop this man through the floor! ...what do you mean the inspectors had it removed for "safety reasons"? I guess you're safe for today 00:29
timotimo :3 00:30
flussence uhm, panda just took upwards of 50 minutes to install and strace showed it going crazy with unlink in .precomp dirs for most of that. just thought I should mention it... 01:03
timotimo are we deleting old, incompatible precompiled versions? 01:07
flussence I'm doing this from fresh clones (git clean -dfx) of rakudo, its subrepos and panda each time, so no 01:08
dalek Iish: 234c6fa | (Salvador Ortiz)++ | META (2 files):
META.info -> META6.json
01:32
sortiz japhb, Missing the changed META.info, fixing now... 01:34
dalek osystem: 73434b5 | (Salvador Ortiz)++ | META.list:
DBIish: META.info -> META6.json
01:35
dalek Iish: be2a2b2 | (Salvador Ortiz)++ | META6.json:
Remove 'Role'
02:13
sortiz "Missing serialize REPR function for REPR CPointer" in Panda::Installer.install line 61, Trying to install DBIish. Ideas anyone? 02:24
skids Somehow a NativeCall CPointer got into a constant fold? Just guessing. 02:30
sortiz DBDish::Pg now uses "class PGconn is export is repr('CPointer') { ...", dunno if the 'is export' can be a problem. 02:35
dalek osystem: 1191b55 | (Anthony Parsons)++ | META.list:
g/flussence/d

I've decided to drop the few modules I had here for various reasons. Shouldn't cause problems; I don't know of anyone that was actually using these, but I'll leave the repos up temporarily just in case.
02:51
FreezerburnV Can I use rakudobrew to build a specific commit of rakudo from git? 02:52
Looks like I can. That was easy 02:55
Hm, apparently rakudobrew wants to build 32 bit on my 64 bit system, which removes JIT ability. How can I force it to build 64 bit? 02:56
diakopter now it'll be really negative 03:01
(ecosystem) 03:02
FreezerburnV :D FROGGS fixed the "output to stdout breaks compiling" issue (or at least bandaided it, according to the commit) 03:05
skids FreezerburnV: I've never heard of that behavior. Any idea why it detects 32-bit?
FreezerburnV skids, No clue :( All I know is I saw it flash by during compiling to test a commit of rakudo that JIT was disabled due to compiling for x86 on windows 03:06
Lemme up the number of buffers in the command prompt and do another build to see if I can put something into a gist for you
diakopter flussence: dare I ask the various reasons? 03:10
skids Hrm, well, me not using windows, maybe someone else will have an easier time figuring it out.
flussence diakopter: complete lack of motivation, mostly. I'd rather get it out the way now while they're only slightly bitrotted and buggy 03:12
diakopter did the 50 minutes to install panda contribute?
flussence: or did you mean it took 50 minutes to use panda to install other things? 03:14
flussence oh, that 50 minutes was ./bootstrap.pl
FreezerburnV skids, Actually I might be wrong abotu that 32-bit build. Another line mentioned detecting 64-bit. So I'm not actually sure what I have built 03:17
flussence diakopter: but yeah, it did make me realise this stopped being -Ofun for me months ago. I haven't actually done anything interesting in a *long* time, my perl6 time's been completely burned up on dealing with breakage I'm not responsible for. 03:20
skids I take it actually having users might have helped a bit too -- I know I find that discouraging. 03:22
(not having them, that is)
sortiz flussence, I can share your frustration. Right now I'm fighting with CURI with problems *installing* DBIish. :( 03:31
diakopter O_O
ugexe just use zef to install panda instead of using bootstrap.pl 03:42
sortiz skids++, You were right, the install time precomp fails 'cus I was using 'constant SQLITE_TRANSIENT = Pointer.new(-1);' 03:51
skids That'd do it. 03:55
sortiz skids, CPointer REPR should implement a basic serialization for this cases, seems doable. 03:58
skids I wouldn't know enough to comment, other than it would have to be for special cases known to be impossible to dereference on the given architecture. 04:01
sortiz skids, Anyway thank you so much, I could not find the problem without your hint. 04:13
skids np glad to help 04:15
sortiz pro 04:17
dalek Iish: 6f13c35 | (Salvador Ortiz)++ | lib/DBDish/SQLite (2 files):
SQLite: Should not declare a constant Pointer

Fails at install time with a cryptic
  "Missing serialize REPR function for REPRCPointer"
04:19
skids .tell jnthn Another S17 question: should Channel.fail immediately discard unreceived items in the queue? Currently it does not seem to. 05:51
yoleaux skids: I'll pass your message to jnthn.
dalek c: a7468f3 | skids++ | doc/Type/Channel.pod:
Sundry updates/elaborations.
05:54
buharin hello my friends 07:18
buharin how to convert enum to string? 07:43
sortiz m: my enum Foo ( A => 0, B => 1, D => 2 ); dd A.key; say A.value; 07:48
camelia rakudo-moar 9dc21a: OUTPUT«"A"␤0␤»
buharin :) 07:50
thanks
sortiz m: my enum Foo ( A => 0, B => 1, D => 2 ); say ~A; say A;
camelia rakudo-moar 9dc21a: OUTPUT«A␤A␤»
sortiz m: my enum Foo ( A => 0, B => 1, D => 2 ); say ~A; say A + B 07:51
camelia rakudo-moar 9dc21a: OUTPUT«A␤1␤»
buharin m: dd "asd";
camelia rakudo-moar 9dc21a: OUTPUT«"asd"␤»
sortiz Enums are context dependent. 07:52
sortiz m: my enum Foo ( A => 0, B => 1, D => 2 ); dd ~A, A, +A; 07:53
camelia rakudo-moar 9dc21a: OUTPUT«"A"␤Foo::A␤0␤»
moritz \o 07:58
sortiz \o moritz
buharin hey what is this? github.com/perl6/roast 08:03
it is language tests?
isnt
moritz yes, language tests
buharin moritz, how to pass by ref? is ref? 08:10
it won't work
moritz buharin: what are you trying to achieve? 08:11
passing is by read-only reference by default
sortiz .tell japhb The DBIish install time issues are solved and a PR opened in MoarVM for a definite fix. Thanks for your report. 08:33
yoleaux sortiz: I'll pass your message to japhb.
dalek osystem: 44e38d6 | (Dean Powell)++ | META.list:
Add Locale-Codes-Country to ecosystem

See github.com/PowellDean/Locale-Codes-Country.git
09:01
osystem: 9b9cdc7 | RabidGravy++ | META.list:
Merge pull request #163 from PowellDean/master

Add Locale-Codes-Country to ecosystem
RabidGravy MARNING! 09:16
sortiz \o RabidGravy 09:17
RabidGravy someone be a love and make something that pretends to be an icecast server 09:34
Hotkeys Marnin
RabidGravy erp
I've been testing Audio::Libshout along with all my other modules quite frequently and it's been passing 09:35
RabidGravy however on actually trying to use it last night I discovered that it wasn't actually sending anything to the server, because of ye old Native typeconstraint thing deep in some async code 09:39
and of course failing silently
Hotkeys Spooky
sortiz Learned, also, that one should install and use the modules and don't depend only on passing tests. :) 09:46
pmurias hi 09:47
Hotkeys Hi
Speaking of modules I really should get around to writing Lingua::En::Pluralize that I made a repo for ages ago 09:48
pmurias ugexe: is there anything stoping zef from becoming a panda replacement? 09:49
sortiz Too much golf? Hotkeys ;-)
RabidGravy maybe if I do another set of tests that by-pass the async parts 09:55
sortiz What needs a dummy icecast server? 09:56
Hotkeys sortiz: I haven't done much golfing recently either
I've been fretting about school stuff mostly 09:57
How much I dislike my history class etc.
sortiz Hotkeys, just joking. 09:59
RabidGravy sortiz Audio::Libshout - I can test that it *thinks* it sent something but without actually *listening* to the resultant stream I don't know whether it was any good :) 10:02
If I get a minute I may actually have a look at making one, after all if you can make one in javascript (StreamMachine) how difficult can it be? 10:06
RabidGravy it's basically HTTP with some custom parts and a lot of chunks sent over an open connection 10:08
sortiz I've never worked on audio apps. 10:12
jnthn last did audio stuff when he was in his teens :) 10:18
yoleaux 05:51Z <skids> jnthn: Another S17 question: should Channel.fail immediately discard unreceived items in the queue? Currently it does not seem to.
jnthn Had fun programming simple reverb/delay effects :) 10:19
sortiz Sound funny ;) 10:21
jnthn .tell skids No, it defaults to not losing information. 10:27
yoleaux jnthn: I'll pass your message to skids.
jnthn .tell skids I expect it'd be sort-of easy to write a subclass that did that 10:28
yoleaux jnthn: I'll pass your message to skids.
dalek p: 11bebcb | (Pawel Murias)++ | src/vm/js/Compiler.nqp:
[js] Use a cheating source looking heuristic to determin in which way we should compile a block.

The previous one was broken by the optimizer. If we guess incorrectly the semantics of the generated code shouldn't be broken.
10:47
p: 8064bfb | (Pawel Murias)++ | src/vm/js/nqp-runtime/ (14 files):
[js] Fix errors found by js-lint.
p: d023883 | (Pawel Murias)++ | src/vm/js/ (7 files):
[js] Uncuddle else/elsif
lizmat good *, #perl6! 10:54
jnthn o/ lizmat 10:56
lizmat jnthn o/ 10:57
pmurias \o 11:06
llfourn o/ 11:07
RabidGravy actually I'm wondering if I actually need to make that much of an icecast server really, it just needs to check there's a PUT, check the auth header matches what I sent, check the content type and content length and the jobs a good un 11:11
dalek Iish: 6f4452f | (Salvador Ortiz)++ | .travis.yml:
Make travis-ci do an install

For a more complete testing.
12:08
moritz sortiz++ 12:09
dalek osystem: 6271bd4 | RabidGravy++ | META.list:
Rename META for Audio::Libshout
12:13
llfourn why don't we add v6.c spectest to travis on rakudo? 12:19
Skarsnik will take forever? 12:20
llfourn is that the reason? it's not like you have to wait for it. 12:21
moritz llfourn: iirc there's a 20min timeout on one core, or something like that 12:23
llfourn: which is also the reason why rakudo doesn't run spectests at all on travis
llfourn ah ok
moritz llfourn: if you do a bit of research and it turns out that's not the case anymore, that would be awesome :-) 12:24
llfourn takes a look
If a script or test suite takes longer than 50 minutes (or 120 minutes on travis-ci.com) 12:25
docs.travis-ci.com/user/customizin...d-Timeouts
I don't think that make spectest should take 2 hours even on one core
llfourn searches for other limitations 12:26
moritz memory might be interesting 12:27
llfourn it seems in May 2013 they increased it to 50mins 12:28
moritz though since the core build works, it can't be that bad :-)
ah right, .org is the free and open source version, and .com is the commercial one
llfourn ah
moritz so the 50min limit is the one that applies to us
llfourn yeah 50min might be too tight 12:29
moritz (just yesterday I listened to a podcast with the travis folks)
llfourn (wouldn't mind listening to a podcast like that)
moritz: www.producthunt.com/podcasts/conti...st-podcast #? 12:31
oh no he's a kiwi 12:34
moritz llfourn: yes 12:54
[Coke] ~~ 13:15
dalek osystem: 31a020c | (Lance Wicks)++ | META.list:
Add new Scientist module

This is a WIP port of the Perl5 Scientist module into Perl6. It does not have all features yet.
13:42
osystem: 0e8a642 | azawawi++ | META.list:
Merge pull request #162 from lancew/patch-1

Add new Scientist module
sortiz Using -Ifoo when running perl6 modify the precompilation behavior ? (I see a foo.precomp directory created, something more) 13:52
jnthn sortiz: Yes, it creates a .precomp directory under -Ilib directories to store precomps 13:53
sortiz Asking 'cus: with RAKUDO_LOG_PRECOMP=1, RAKUDO_MODULE_DEBUG=1 and a clean ~/.perl6, running "perl6 -Ilib t/foo.t" the only that I see precompiled is "Test". None of the involves modules. 13:54
nine_ Other than that precompilation works exactly the same. I even centralized the code for "load an existing precomp file, otherwise precompile and load the result". There's not much repository specific code involved anymore.
sortiz: remove lib/.precomp before running that 13:55
sortiz Nuked, re running and saving the output... 13:56
The same results: gist.github.com/salortiz/5abae4b898666c4f9d2c 13:59
sortiz nine_, When those changes landing in nom? 14:00
sortiz That test involve the use of a constant pointer. 14:02
nine_ sortiz: The centralized code is already in nom. method try-load in PrecompilationRepository
nine_ That looks quite odd 14:04
sortiz Updating rakudo...
nine_ What does your t/foo.t look like?
sortiz It's DBDish's t/40-sqlite-common.t 14:06
sortiz I'm testing with and without "constant Foo = Pointer.new(-1)", but can't see the precompilation attempt. 14:08
nine_ Oh that's interesting. It uses "need"
sortiz Indeed. I uses "need" whenever a module does not export anything. 14:09
(to avoid the "import" step) 14:10
nine_ Aaah 14:15
use v6; use Test; use lib 't/lib'; <--- you're changing the repo chain after loading a module. This deactivates all precompilation.
rudi_s Hi. Is this expected? 14:16
m: say "".split("x", :skip-empty).perl 14:17
camelia rakudo-moar 9dc21a: OUTPUT«("",)␤»
sortiz Ok, something like that I was thinking when asked the question obove!!
rudi_s I'd expect to get just ().
sortiz *above
nine_ sortiz: you asked about commandline -I which is save as that happens before the first use or need statement :) 14:18
perlpilot m: say "foo".split("x", :skip-empty).perl;
camelia rakudo-moar 9dc21a: OUTPUT«("foo",)␤»
perlpilot rudi_s: For the same reason as that one.
rudi_s: er, you get "" in yours for the same reason I get "foo" in mine 14:19
rudi_s perlpilot: I see. The extra "" feel a little confusing though.
DrForr '' isn't empty, it's nonexistent :)
rudi_s Well ... 14:20
dalek c: 38f902a | (Simon Ruderich)++ | doc/Type/Str.pod:
Str: split: use .perl in examples

Shows the exact return value (Str vs. Int) and makes it clear when empty strings are returned.
c: 45447c7 | (Simon Ruderich)++ | doc/Type/Str.pod:
Str: split: add splitting the empty string as example
sortiz nine, sure, not the same question, I'm searching..., I wasn't aware that a "use lib ..." disables precompilation. 14:21
nine_ We should advertise that fact better
sortiz Ok, but seams that not at install time, though. 14:22
nine_ The install code does not do that use lib 't/lib' from the test script 14:23
sortiz You right, now is clear. 14:24
lizmat afk for a few hours& 14:27
sortiz nine_, Thank you for your time. 14:29
chris2 hi. i'm running panda --notests install Task::Star on a fresh installed system, and it fails with Terminal::ANSIColor:ver<*>:auth<>:api<> already installed 14:36
probably because Grammar::Debugger already depended on that
nine_ Now that I think of it, with the work I'm doing, we may even be able to relax the no precomp after use lib rule somewhat. 14:38
tadzik huh, that shouldn't be happening
it shouldn't attempt to install modules that are already in
chris2 there are no modules initially
tadzik chris2: were all of those modules installed by panda?
chris2 but it shouldnt attempt to install modules it already installed as deps
tadzik yep 14:39
chris2 the system has nqp, moarvm and panda installed
llfourn nine_: I thought use lib just meant that it would just change the head repo not that it would never precomp anything after that
chris2 does panda already pull in Terminal::ANSIColor?
tadzik so, steps to reproduce is: install fresh rakudo, fresh panda, install Grammar::Debugger, install Task::Star?
chris2: no, it doesn't
chris2 tadzik: just Task::Star
tadzik oh
so it first installs grammar::debugger, for which it installs Term::ANSIColor, and then installs Term::ANSIColor itself? 14:40
and that fails?
chris2 look slike it
tadzik stupid bug
and yes, it is a bug :)
you can probably workaround by --force installing Task::Star
which is hardly ideal
chris2 sprunge.us/eDKC output
tadzik dependency resolution in panda could clearly be better
yeah, I see the problem 14:41
chris2 lets try force
that helps 14:42
tadzik it'll also install things that have tests failing 14:42
chris2 i skip tests :P 14:43
sortiz tadzik, In fact I expect that an attempt to install some module already installed don't proceed until the error reported by CURI.
tadzik I don't like how --force ended up
sortiz: I don't think I understand
perlpilot
.oO( May you never need to use the --force )
.oO( May the --force *not* be with you? )
chris2 are these hashed file names going to stay btw? 14:44
perlpilot There's a good star wars pun in there somewhere
sortiz If I have, for example DBIish installed, what is the correct form for update it?
tadzik just panda install should work, provided that the version actually changed 14:45
gfldex chris2: the files names will stay, error messages will improve
tadzik wow, --force is even documented as "install even if the module's already installed" 14:46
I'd think --update may feel less...forced 14:47
--force sounds like a fancy --notests
I don't like what panda became over time :/ 14:48
good thing the QA hackathon is soon :)
chris2 there is only one version for each module?
tadzik where? ) 14:49
:)
there can be many version in the ecosystem
chris2 they are not listed on the website
tadzik modules.perl6.org? 14:50
chris2 yeah
chris2 and the META files i looked at only had one 14:50
tadzik well, by spec we rakudo implementation we can have many versions
chris2 is there a way to tell panda which one to install? 14:50
nine_ llfourn: with the current implementation we only load precomp files from one single repository. If you load a module and then do a use lib, you change the head repo and thereby change the repository we would load precomp files from. We cannot guarantee that this would work, so we disable precomp in that case.
tadzik chris2: I *think* panda knows how to do that 14:51
if it actually detects more than one available
thing is, I don't think we have even one such occurence "in the wild"
llfourn nine_: ah ok I always thought that it had to be the first statement anyway... in which case I think it works?
chris2 tadzik: this essentially means it will be impossible to install todays version tomorrow, yes? :P 14:52
i know this is all new and beta
tadzik chris2: well, if you can get ahold of it, you will be :) 14:53
so this is how it looks:
modules.perl6.org only provides one META.info per module in the ecosystem
panda installs stuff from there, so it can only install the latest (only) versions available
nine_ llfourn: yes, you may change $*REPO as much as you like before loading modules
tadzik if you, say, clone the git repo with the module, roll it back a couple commits and tell panda to install that, it'll do it just fine 14:54
perlpilot tadzik: are you planning on redesigning panda at the QA hackathon?
tadzik (should)
perlpilot: yes
tadzik perlpilot: possibly before :) 14:54
llfourn nine_: cool thanks for clearing that up :)
nine_ tadzik: panda should really check if a dist is already installed before installing again.
tadzik but I got a bit out of the loop on a lot of things, and I'm gonna need the company of all the competent people at QAH :)
nine_: agreed
chris2 but when repos dont tag releases etc it is quite a mess to figure out
llfourn nine_: also ++ for working on precomp it really helps
tadzik nine_: I hope CUR allows that? :)
I hate it when software throws when you try to do something, but doesn't tell *if* you can do something 14:55
perlpilot tadzik++ good luck! :) 14:55
tadzik perlpilot: thanks, I'll probably need it :)
chris2: that's a problem we have, our module ecosystem, since the dawn of time, is "a list of git repos" 14:56
ironically, it makes it hard to managed multiple version of stuff
perlpilot tadzik: having a few smart people handy gives you better odds than "luck" :) 14:56
tadzik :) yeah
chris2 fun to hear given than cpan should be well known to everyone :~
kjs_ good afternoon. Does anyone know how to detect whether a JSON parser just parsed the value null. 14:57
skids tadzik: that's simply a matter of not actually utilizing the features of a git repo... e.g. defining a standard for tags that are significant to the installer. 14:58
yoleaux 10:27Z <jnthn> skids: No, it defaults to not losing information.
10:28Z <jnthn> skids: I expect it'd be sort-of easy to write a subclass that did that
skids .tell jnthn thanks. I'd say it might be worth 6.d consideration to add a method which does flush the queue, otherwise Channel code gets fugly when you want to handle cancellation like that. 15:00
yoleaux skids: I'll pass your message to jnthn.
nine_ tadzik: there's a $*REPO.resolve($dependency-specification) method now that returns a CompUnit if it found one and Nil otherwise. What panda and zef actually need however would be something that takes a Distribution object. 15:02
kjs_ note to self: ah, I think evaluating the value in a boolean context is the way to do it.
tadzik skids: yeah, and good lack getting your module authors to do that :P
tadzik nine_: is Distribution still something specced that module managers are expected to define on their own? 15:03
skids tadzik: I'd leave the task of wrangling the module authors to the users, filing issues or PRs. They seem to want it :-) 15:05
tadzik skids: ye, that might even work :P 15:05
nine_ tadzik: yes and now. ugexe++ has done a lot of thinking on the topic and in short: Distribution should become a role. Concrete implementations are provided by the Repository classes _and_ module managers. A module manager might want to provide a Distribution::Tar or Distribution::Directory class while Repository::Installation may provide a Distribution class that deals with all our SHA-1 fun 15:10
So the module manager may ask $*REPO for some name, auth, version (exact match) and get a Distribution object back. Or Nil if it's not installed. 15:11
I wonder how that method may be called
tadzik makes sense 15:12
rudi_s Is return %() the correct way to return an empty hash in a function? 15:17
jnthn return {} is another way
yoleaux 15:00Z <skids> jnthn: thanks. I'd say it might be worth 6.d consideration to add a method which does flush the queue, otherwise Channel code gets fugly when you want to handle cancellation like that.
rudi_s jnthn: Ah, too easy. Thanks.
chris2 does the perl6 repl with linenoise not understand utf8 lengths? 15:20
rudi_s Is there a "return" out of a block?
I just want to skip the rest of the block.
jnthn rudi_s: no; use a sub instead of a block if you want to use return
rudi_s: If you're in a loop, there's also `next` to skip the current iteration 15:21
rudi_s Ok, thanks.
perlpilot Or just use goto ;) 15:22
dalek Iish: 2baf7aa | (Salvador Ortiz)++ | META6.json:
Use a real version (now at 0.1.0) in META6.json
15:29
Iish: 4986523 | (Salvador Ortiz)++ | .travis.yml:
Merge branch 'master' of github.com:perl6/DBIish

A local change in .travis-yml
jaldhar hello. I was trying to compile nqp for rakudo 2016.2 on Ubuntu Linux 14.04 and one test fails in t/nqp/60-bigint.t is that a known problem? 15:40
perlpilot jaldhar: can you make a gist of the failure? I don't remember any test failures when I compiled Rakudo on ubuntu 14.04, but I may have just missed it. 15:46
Skarsnik sortiz++ for DBIish version 15:47
lucs Given "a〔", how can I obtain its ostensible length (3)? 15:55
DrForr m: say "a〔".chars 15:56
camelia rakudo-moar 9dc21a: OUTPUT«2␤»
lucs Same for .codes.
(which all makes sense of course) 15:57
sjn \o/m: say "a〔".ords
m: say "a〔".ords
camelia rakudo-moar 9dc21a: OUTPUT«(97 12308)␤»
DrForr I see 2 characters there, what about that doesn't look like 2?
jnthn m: say ""a〔".codes
camelia rakudo-moar 9dc21a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/u_40CdsYOi␤Two terms in a row␤at /tmp/u_40CdsYOi:1␤------> 3say ""7⏏5a〔".codes␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ s…»
jnthn m: say "a〔".codes
camelia rakudo-moar 9dc21a: OUTPUT«2␤»
jnthn m: say "a〔".NFC
camelia rakudo-moar 9dc21a: OUTPUT«NFC:0x<0061 3014>␤»
jnthn m: say "a〔".NFD.elems
camelia rakudo-moar 9dc21a: OUTPUT«2␤»
lucs DrForr: Monospaced, it takes up 3 spaces.
sjn it's a whide character in there
wide*
lucs Right.
jnthn Hmm
I wonder if those have a unicode property on 'em 15:58
lucs (I'm trying to align stuff.)
jnthn m: say uniname('〔') 15:59
camelia rakudo-moar 9dc21a: OUTPUT«LEFT TORTOISE SHELL BRACKET␤»
jnthn m: say uniprop('〔', 'East_Asian_Width') 16:02
camelia rakudo-moar 9dc21a: OUTPUT«0␤»
jnthn hmm 16:03
m: say uniprop('x', 'East_Asian_Width')
camelia rakudo-moar 9dc21a: OUTPUT«0␤»
b2gills m: say "a〔".encode.bytes
camelia rakudo-moar 9dc21a: OUTPUT«4␤»
jnthn Well, so much for that...
b2gills It would be nice to be able to find out what uniprops a given character has. That is what makes sense as the second argument to uniprop 16:04
jnthn b2gills: Well, every character has all the props in some sense... :-) 16:05
unicode.org/cldr/utility/properties.jsp is a list 16:06
Sadly, I don't see anything in there about the problem in question 16:07
Which may mean it's in the realm of "that's a rendering issue, not a Unicode one" :) 16:08
DrForr www.unicode.org/pending/properties....Properties doesn't mention width.
geekosaur width is outside the realm of unicode, it is a property of a particular font 16:09
lucs Hmm... '〔' has an East_Asian_Width property of 'wide': unicode.org/cldr/utility/character....mp;B1=Show 16:11
b2gills What is interesting is some of the space codepoints have a defined width, but it is defined in terms of other characters (EN/EM SPACE)
sjn would it be sensible to have a .columns method (or something) that helps figure out stuff terminal output alignment stuff? 16:17
(is there already such a method?)
jnthn sjn: Since it'd seemingly depend on font, not sure how far that'd go to help... 16:18
sjn well, with terminal output, it might be safe to assume a fixed-with/monospace font?
perlpilot sounds like good user-space module fodder
DrForr Link in to ncurses and mbwidth() functions? 16:19
jnthn Yeah, sounds like module space
m: say uniprop('〔', 'East_Asian_Width')
camelia rakudo-moar 9dc21a: OUTPUT«0␤»
jnthn I'm curious why that comes back as 0 though
jnthn m: say uniprop('〔', 'Some_Unknown_prop') 16:20
camelia rakudo-moar 9dc21a: OUTPUT«0␤»
jnthn Probably 'cus we don't actually support it...
sjn no warnings either?
jnthn Nope 16:21
(Think TimToady++ wired this stuff up, going to assume the failsoft was intentional)
geekosaur the existence of some of it depends on what version of the unicode standard, hence of icu, is available 16:27
jnthn In this case, Moar supports the latest Unicode standard (doesn't use ICU), but just doesn't pull that property into its database. 16:32
rudi_s Is it possible to split a path in its path components. e.g. "foo/bar/baz".IO.bla -> "foo", "bar", "baz" - I know I could use split("/") but that might break on different systems. 16:49
ugexe .tell pmurias no. it already past feature parity as well as handling things like cpan, allowing plugins, etc
yoleaux ugexe: I'll pass your message to pmurias.
hoelzro rudi_s: probably something in IO::Spec 16:51
hoelzro m: '/dev/null'.IO.splitpath 16:51
camelia rakudo-moar 9dc21a: OUTPUT«Method 'splitpath' not found for invocant of class 'IO::Path'␤ in block <unit> at /tmp/VPvef8hlIo line 1␤␤»
pmurias ugexe: the README mentions that tests and features need to be ported from the old version 16:53
yoleaux 16:49Z <ugexe> pmurias: no. it already past feature parity as well as handling things like cpan, allowing plugins, etc
pmurias ugexe: anything you want help with?
rudi_s hoelzro: splitpath doesn't help, it only splits $volume, $dir and $file: 17:00
m: say $*SPEC.splitpath("/foo/bar/baz").perl
camelia rakudo-moar 9dc21a: OUTPUT«("", "/foo/bar/", "baz")␤»
RabidGravy splitdir
m: say $*SPEC.splitdir($*CWD.Str) 17:01
camelia rakudo-moar 9dc21a: OUTPUT«( home camelia)␤»
pmurias hmm, do we have a way to make the command line parser for main take short flags: both -h and --help? 17:02
rudi_s RabidGravy: Thanks. 17:03
Splitting is a little weird: 17:04
m: say $*SPEC.splitdir("/").perl
camelia rakudo-moar 9dc21a: OUTPUT«("", "")␤»
rudi_s m: say $*SPEC.splitdir("/a").perl
camelia rakudo-moar 9dc21a: OUTPUT«("", "a")␤»
rudi_s m: say $*SPEC.splitdir("/a/").perl
camelia rakudo-moar 9dc21a: OUTPUT«("", "a", "")␤»
rudi_s I guess that's perl6's normal splitting behavior but I still find it confusing. 17:05
RabidGravy m: say $*CWD.Str.split('/').perl 17:07
camelia rakudo-moar 9dc21a: OUTPUT«("", "home", "camelia")␤»
perlpilot pmurias: sub MAIN( :h(:$help) ) { ... } 17:08
RabidGravy m: say $*CWD.Str.split('/', :skip-empty).perl
camelia rakudo-moar 9dc21a: OUTPUT«("home", "camelia")␤»
RabidGravy however it probably isn't quite as easy as adding the :skip-empty to the split in IO::Spec 17:09
ugexe pmurias: ah, that can probably be removed (lots of testing just happens in CI now). the features its missing from before is paralellization (although it should easy to add in the future) and the CLI overlay that did loading bar animations and stuff. the last big thing to do is a messaging system for the adapters to talk to the client and the client to either the CLI frontend or a theoretical GUI frontend. and
optimizations in regards to looping over X distributions to find a match
muraiki jnthn: sorry to bother you directly about this, but a few months ago I mentioned a bug and you thought it had to do with the garbage collector stalling during a long running perl 6 process. did you happen to look into this or do you know an RT ticket about it? I couldn't find one 17:42
timotimo github.com/bluebear94/Terminal-WCWidth - btw 17:57
lucs: ^ did you see this yet?
timotimo i'm honestly getting a little bit annoyed by how often people ask for some feature that exists in the ecosystem already and don't bother to look for it there ... why do we have an ecosystem at all? :| 17:58
if only the 10 most interesting modules are ever going to be used and the rest is never looked at? 17:59
btyler discoveribility is a very hard problem 18:00
Skarsnik yay this process almost take half my ram after 10h of running x) thx leak :) 18:00
btyler see: CPAN, npm, etc.
Skarsnik how it's hard?
modules.perl6.org x)
timotimo i disagree. i searched for "width" and it only gave me one result, which was "Returns what the character width should be on the terminal." 18:02
the problem of discoverability on npm is potentially that for any given task, there's thirty people with at least fifty different solutions and none of them talk about what's different between them and others
timotimo oh well 18:05
btyler fair enough. I suppose I just mean that successfully using a module ecosystem requires some fair degree of expertise already (knowing that it's there, knowing what terms to search for, knowing which modules are reasonable choices and which are half-baked weekend projects, etc.) 18:06
timotimo lucs: don't interpret this as me complaining about you; nobody bothered to look for this module and i've seen this pattern multiple times already
ah, yes, that's true as well
ugexe we could start using a field to advertise features, like `tags`
timotimo we don't yet have half-bakedness indicators on modules' readmes or anywhere, really
jdv79 isn't that in META already? 18:07
timotimo only few modules mention what their status actually is
btyler it's the google search problem: if you don't use the same word as the experts use, you'll have a hard time finding the expert solution
because you don't share vocab or habits
totally understand the frustration, though, you're on the front lines here :) 18:08
jdv79 yes, META has tags. also, metacpan search helps if the dist contains enough keywords.
don't remember if reviews are part of the search. that could help.
Skarsnik The issue with tags, they need to be 'standardized' 18:11
Juerd Or normalized. 18:12
jdv79 s/need/could/
ugexe later on once the `supercedes`, `superceded_by`, `emulates` are used search clients can use other modules search relevant meta data to augment/improve its own
jdv79 timotimo: actually - it worked: hack.p6c.org:5001/search?size=20&am...pe=modules 18:16
problem solved:)
jdv79 of course the pod view just crashed... i'll bug that. 18:17
nine_ Hm....watch some more Mr. Robot or try to fix the locking issue with the new precomp code? 18:21
jdv79 fixed it 18:22
must have been caught up in that rigamarole with precomp and me failing to get along:( 18:23
Skarsnik damn still no comment on github.com/rakudo/rakudo/pull/716 ? x) 18:27
I say don't force yourself if you just want to relax x)
nine_ Well if I didn't have to give a talk about this stuff next week at the GPW... 18:29
ugexe give a talk about mr. robot 18:41
nine_ I don't know if that would be easier :)
nine_ Question to the audience: what would you want to hear in a talk titled "A look behind the curtains - module loading in Perl 6" 18:42
timotimo "how do i debug stuff when it goes wrong", perhaps? "what parts can be replaced by user-supplied code?"? 18:46
"what makes it more interesting/powerful than in perl5 or python, for example"
timotimo "how did you learn from other languages' module systems"? 18:52
perlpilot nine_: I'd want to know what works today and what's broken. And if there's a really interesting story about why it's broken, maybe that too. 18:54
perlpilot nine_: and all the stuff that timotimo said :) 18:54
timotimo don't forget to point out places where you could drop in cool things like "well, i actually distributed my own moar executable with a zip file concatenated to it which contains all the bytecode" or something 18:57
skids m: my @skew = (([\,] (Nil xx *)) Z "0 1 2\n3 4 5\n6 7 8".lines.map(+«*.words)).map(*.flat); print @skew[*;$_].grep(Int) ~ "\n" for 1..^@skew[*-1].cache.elems 19:09
camelia rakudo-moar 9dc21a: OUTPUT«0␤1 3␤2 4 6␤5 7␤8␤»
skids (Today's daily programmer)
nine_ timotimo, perlpilot: thanks for your input :) Very appreciated 19:10
timotimo is often glad to help
lizmat starts working on the next P6W 19:11
nine_ Wait a second, why am I checking a precomp file that we've already loaded? If it was good the first time, it ought to be still fine. Especially since we don't load it again anyway but just return the cached CompUnit 19:13
perlpilot changes nine's precomp file between loadings just to mess with him 19:17
nine_ And the locking issue is gone :) 19:23
Which is much more relaxing than another Mr Robot episode :)
timotimo \o/ 19:25
glad to hear it
nine_ However I wonder why this hasn't been an issue with nom so far. The bug is clearly there already. 19:28
jnthn muraiki: I think it's a variant of github.com/MoarVM/MoarVM/issues/140. I've been somewhat recovering from the Christmas release and various other things over the last couple of months. Will be digging back in to Perl 6 things again more from this week, and that bug is high on my list. 19:31
muraiki jnthn: thanks! also, you certainly deserve as long of a break as you need :) I just didn't know where to look / who else to ask 19:32
mr_ron m: my subset Odd of Int where {$^n % 2}; my Odd $i; say $i.WHAT; $i = 3; say $i.WHAT 19:34
camelia rakudo-moar 9dc21a: OUTPUT«(Odd)␤(Int)␤»
timotimo subset types only check upon assignment (or, indeed, checking), they do not change the object itself 19:35
timotimo the first output is "(Odd)" because the default value for a scalar container is the type object of the type constraint 19:36
mr_ron thx 19:43
timotimo yw 19:43
jnthn muraiki: Well, "GC bug" sends 90% of sensible people running away screaming, and "concurrency bug" does the same for the other 90%...and this is a concurrent GC bug... :-)
timotimo fortunately we don't do concurrent GC in moarvm :P 19:44
jnthn Well, a GC concurrency bug then :P
timotimo :)
muraiki hehe
jnthn Our GC *will* be getting more concurrent soon though (*after* fixing this issue ;-)) 19:44
As we'll switch to doing finalizatino etc. in the background 19:45
But yeah, I doubt we'll go much further than that for a good while. True concurrent GC is really, really hard, and it's a trade-off with throughput.
So for a bunch of workloads it'd likely hurt benchmarks. 19:46
jnthn goes to finish up prepping the dinner :) 19:49
mr_ron m: my subset Odd of Int where {$^n % 2}; multi sub f(Odd $i) { say "odd" }; multi sub f(Odd $i) { say "odd 2" }; multi sub f(Int $i) {say "int"}; multi sub f(Int $i) {say "int 2"}; f(3); f(4) 20:02
camelia rakudo-moar 9dc21a: OUTPUT«odd␤Ambiguous call to 'f'; these signatures all match:␤:(Int $i)␤:(Int $i)␤ in block <unit> at /tmp/zedwxuiSYn line 1␤␤»
buharin moritz, are you here? 20:33
[Coke] buharin: something we can help with? 20:38
buharin yeah I was talking about passing by ref 20:39
moritz buharin: yes-ish
buharin argument to method
and I need to go to work :D 20:40
so back right now
I wanna pass Str variable to method modify it and so on 20:41
or class 20:42
and it will be more expensive if I will pass it by copy
you know what i mean?
hoelzro sub foo(Str $arg is rw) { ... }
that should do it.
buharin really?:D 20:43
and whats raw?
hoelzro m: sub foo(Str $arg is rw) { $arg = 'hello' }; my Str $s; foo($s); say $s
camelia rakudo-moar 9dc21a: OUTPUT«hello␤»
hoelzro rw - read/write
hoelzro really?:U is also acceptable =P 20:43
moritz raw = rw if available, ro otherwise
buharin: but are you sure you need to pass an RW parameter? it typically makes things much harder to understand 20:44
moritz buharin: I'd start with a nomral method that returns a new string 20:44
*normal
and only use a different API when performance can't be fixed otherwise 20:45
buharin moritz, what do you mean by different API? 20:46
moritz buharin: like the rw argument 20:46
buharin moritz, looks very complicated 20:47
moritz buharin: what looks complicated? 20:48
lizmat do we actually have a website where we can read mails on p6-language? moritz?
moritz lizmat: www.nntp.perl.org/group/ should do it 20:49
www.nntp.perl.org/group/perl.perl6.language/
lizmat moritz++
moritz there's also www.mail-archive.com/perl6-language@perl.org/ 20:50
which, IMHO, is a bit nicer with clickable links and all that 20:51
flussence news.gmane.org/gmane.comp.lang.perl...6.language # best, imo 20:54
(except for their idiotic anti-harvester mangling @array sigils) 20:55
nine_ As if those things had ever worked 20:56
nine_ YES! 21:01
lizmat anything that can be merged before the P6W comes out ? 21:02
nine_ panda installed successfully and first run after installation takes 1.5 seconds :)
lizmat :-)
nine_ lizmat: no, this will need extensive review and testing, but I'm getting close to pushing this stuff somewhere :)
lizmat ah, cool... next week then :-) 21:03
nine_ Depends on when I will finally replace coding fun with writing slides...
lizmat or after the GPW :-) 21:09
ptolemarch Is there currently a well-defined way to call Perl6 code (via Rakudo-on-JVM) from Java? 21:18
[Coke] rakudo-on-java itself is not well at the moment. 21:19
ptolemarch I see that I can create .jar files, and I see quite a few Rakudo and NQP Java classes. 21:22
ptolemarch Rakudo can obviously compile Perl6 and run it, as it does in the REPL... 21:23
[Coke] well at some point it's all java, yes. (doing a build right now, haven't tried to build since christmas.)
ptolemarch ...but is there a way to ask Rakudo "please find this class which you've already compiled and give me an instance of it"?
[Coke] I don't think you can easily get at the java version of a perl6 object. 21:24
ptolemarch nods
[Coke] (you have perl6 at that point anyway, which is "better") - I do think there's a way to get at an arbitrary class from java, though.
j: use java.lang.String :from<java>; say "alive"; 21:25
camelia rakudo-jvm f99bdb: OUTPUT«cannot connect to eval server: Connection refused␤»
[Coke] can answer that better after my local java build finishes.
ptolemarch Yeah, perl6 is quite better, for my money. :-) And now I'd like to try to create a Minecraft server mod in Perl6 rather than in Java. 21:26
I'm quite willing to hack on it reasonably hard; basically I think a Minecraft-mod-in-Perl6 talk at YAPC would be pretty awesome and right now I'm trying to verify that it's feasible before I try to submit a talk proposal. 21:27
[Coke] ptolemarch: that would be awesome, please do that. :)
ptolemarch But I'm having a hard time finding where to start. :-)
[Coke] give me another 30 minutes to finish this build. :)
(kidding, but the jvm build is slow)
ptolemarch Please take your time.
Heh, yesterday I built it on my Chromebook. *that* was *slow*.
[Coke] already, 'make install' still broken on jvm. 21:43
*alright 21:44
[Coke] ok. r-j builds (can't install); when running t/03-jvm/01-interop.t, you get an error that EVAL is very dangerous! (wondering if the failed install has anything to do with this) 21:47
ptolemarch: see t/03-jvm/01-interop.t for examples on how interop would theoretically work if r-j was working.
but I can't get any of those examples to work. I know some work was done recently on this, trying to find who touched it. 21:49
ptolemarch Hmm, I'm able to build rakudo 2016.02 with JVM backend
[Coke] ptolemarch: maybe the remotes/origin/jvminterop branch 21:51
ptolemarch: did "make install" work?
and I don't think anyone's cleaned up "make stresstest" in sometime.
ptolemarch [Coke]: this was basically `rakudobrew install jvm 2016.02`
[Coke] no clue if that reports errors if make install failed. 21:52
(or if it runs spec tests)
ptolemarch well, and I'm able to use `perl6-j` after...
[Coke] but the interop branch is probably where you want to be looking if you care about interop. 21:53
ptolemarch gotcha
So far, everything I've seen about interop has been "call Java from Perl6" rather than the reverse. 21:54
That file seems to be the same thing.
[Coke] I'm not sure how well it works the other way; you could probably try to build a p6 class, see what jar file you get and decompile it. 21:55
ptolemarch yeah, that's where I've been all day 21:56
[Coke] sorry. :|
I can't build that branch, unfortunately. 21:58
I'd ping the last committer on that branch and see if they have any guidance for you. 21:59
ptolemarch Oh, I missed your above mention of remotes/origin/jvminterop
Thank you, I'll do that.
lizmat and another Perl 6 Weekly hits the net: p6weekly.wordpress.com/2016/02/29/...ping-away/ 22:02
dalek rakudo/relocateable-precomp: e8c22d6 | (Stefan Seifert)++ | tools/build/install-core-dist.pl: 22:04
rakudo/relocateable-precomp: Fix weird errors in precomp files generated on installation
rakudo/relocateable-precomp:
rakudo/relocateable-precomp: Setting PROCESS::<$REPO> without initializing $*REPO first creates a repo-chain
rakudo/relocateable-precomp: containing only the single repository. Without the NQP repository in the chain,
nine_ github.com/rakudo/rakudo/commit/e8...4c784ed7b4 22:05
and more importantly github.com/rakudo/rakudo/commit/12...e3b7d6de11
pyrimidine lizmat++ # p6weekly 22:17
lizmat: ...and I agree re: the sad blog post, though not unexpected :( 22:20
lizmat yeah :-(
.tell jnthn I noticed that in the ShapedArrayCommon role, protos like .push are not marked "is nodal": is that intentional ? 22:26
yoleaux lizmat: I'll pass your message to jnthn.
jnthn lizmat++ # p6weekly
yoleaux 22:26Z <lizmat> jnthn: I noticed that in the ShapedArrayCommon role, protos like .push are not marked "is nodal": is that intentional ?
jnthn hah, what timing :P
lizmat hehe
jnthn No, not intentional
lizmat ok, so I guess I should add that to make sure they work ok in meta ops, right ? 22:27
jnthn Aye, please :)
Just an oversight
lizmat will do
dalek kudo/nom: 00bfa4d | lizmat++ | src/core/Range.pm:
Add a sensible error for ^Inf .rand

Instead of just hanging. Also fix the (NaN..NaN).rand case
22:29
lizmat jnthn: on hot path code size: would it make sense to make a private method taking a single argument to throw the X::IllegalOnFixedDimensionArray in? 22:31
so that: self.DEFINITE
?? X::IllegalOnFixedDimensionArray.new(operation => 'push').throw
would become: ?? self!illegal("push")
jnthn Probably not worth much
X::IllegalOnFixedDimensionArray may look long, but actually compiles into a single instruction 22:32
hoelzro lizmat, timotimo: is it too late to make a change to the p6weekly?
lizmat yes, but it needs a .new and a .throw ?
timotimo it isn't too late
what's wrong?
lizmat hoelzro: what
?
hoelzro I just want to point out that sortiz++ did must of the work in that REPL stuff =)
I just reviewed and merged it! 22:33
lizmat ok, will change 22:33
hoelzro thanks!
jnthn lizmat: True...method calls aren't that long instruction wise either, though.
timotimo especially when we can sp_findmethod and/or fastinvoke, too, right? 22:34
jnthn btw, from now on www.moarvm.org/measurements/perl6-bench/ has 3 files per day
lizmat jnthn timotimo are you saying it *would* make sense ? 22:35
timotimo i'm thinking more about the new call; that should be cheap-able 22:36
as well as the .throw
jnthn The one with the date is current standing of Rakudo against NQP and Perl 5. The one -releases.html is xmas release vs. last month's release vs. HEAD, and releases-history is a different plot of that data.
lizmat: It makes sense in that it's a win, just saying it's a fairly small one. :) 22:37
lizmat well, it also make the code more readable :-)
jnthn True, that's actually a better reason than performance ;-) 22:37
lizmat jnthn: will there be a .plan for shaped arrays? I thought that was pre-GLR ? 22:48
jnthn lizmat: It doesn't really make sense, since you can't resize it?
Or you mean just a throwing one?
lizmat the one in ShapedArrayCommon is the only "method plan" in the whole setting 22:49
jnthn Or did we throw out .plan altogether?
Hm :)
Innerestin' :)
lizmat yeah, I think we did...
jnthn Guess it can go
lizmat ok
jnthn Or we can ponder if .plan will return :)
lizmat yup 22:50
jnthn m: my @a = 1..3; @a.push: 1..Inf; say @a[^5]
camelia rakudo-moar 9dc21a: OUTPUT«(1 2 3 1..Inf (Any))␤»
jnthn ah
m: my @a = 1..3; @a.append: 1..Inf; say @a[^5]
camelia rakudo-moar 9dc21a: OUTPUT«Cannot push a lazy list onto a Array␤ in block <unit> at /tmp/ifn_9nvUOQ line 1␤␤Actually thrown at:␤ in block <unit> at /tmp/ifn_9nvUOQ line 1␤␤»
jnthn m: my @a = 1..3; @a.push: slip 1..Inf; say @a[^5]
camelia rakudo-moar 9dc21a: OUTPUT«Cannot push a lazy list onto a Array␤ in block <unit> at /tmp/9bfdXGKaCn line 1␤␤Actually thrown at:␤ in block <unit> at /tmp/9bfdXGKaCn line 1␤␤»
jnthn Yeah, probably .plan should return :)
Otherwise there's no way to do that :)
lizmat but for now it can go, right ? 22:51
jnthn Yeah, I guess so
timotimo that means it might come back in 6.d (or later), right? 22:51
jnthn timotimo: Yeah, I think it's worth having 22:52
But we've bigger fish to fry for now
timotimo yeah
dalek kudo/nom: 1ef2470 | lizmat++ | src/core/Rakudo/Internals.pm:
Add accidentally omitted "is nodal" to protos
22:53
ugexe when a proc throws an exception, is there any way to get the $exception.proc out of the try/catch so that it can still be used? otherwise anytime you do anything to it (method sink) the exception gets rethrown 22:55
.resume inside the CATCH seems to switch the non-zero exitcode back to 0, so im not sure how to do it 22:56
lizmat argh. guess what, we have tests for .plan ??? 23:01
jnthn: ^^
jnthn Ah 23:02
OK, less effort to keep it :)
lizmat I guess.. :-)
jnthn A proper Array.plan isn't a lot of effort to implement
lizmat fwiw, I'm still not sure what it is supposed to do 23:03
jnthn lizmat: Stick the thing into the unreified part of the array, so it'll be lazily reified 23:04
lizmat hmmm... S32-setting-library/Containers:827 actually describes it 23:05
I guess I'll leave it as LHF for someone else :-)
jnthn Tempting. But not tonight :) 23:06
lizmat seems I borked something 23:07
getting too tired now 23:08
will look at it in the morrow
so good night, #perl6!
jnthn 'night, lizmat 23:09
hoelzro night lizmat