Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-06-29

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:02 masak 'night, #perl6
00:06 berekuk joined #perl6
00:22 colomon it's sort of cheating, because it gets there without having a bunch of things that are pretty essential for actual p6 coding.
00:23 colomon whoops, lost context on that.... was commenting about how many tests were passing in rakudo-jvm
00:23 colomon and was planning on following up by saying how awesome the progress was anywhere.
00:23 colomon *anyway
00:23 SmokeMachine joined #perl6
00:24 * colomon may have to shut up before he says more silly things
00:24 sorear huh.  if I'm reading JVMS §4.10.1.9 correctly, it's possible to catch an exception thrown by a constructor, and then *use the new half-initialized object anyway*
00:25 colomon doesn't that defeat the purpose of throwing the exception?
00:27 * colomon should really track down why his $work code is always output analytic curves, even when the flag says "Don't", before he starts playing more with Rakudo JVM
00:28 sorear holomorphic curves?
00:28 colomon no, simple 3d ones
00:28 colomon well, up to NURBS
00:37 benabik sorear: 4.10.1.9 seems to be instruction verification?  IS this mentioned under the new op?
00:39 sorear benabik: no, under invokespecial
00:40 sorear benabik: note that the unitnitialized(42)->java/whatever rewrite is done BOTH for the normal termination output frame, and the exception output frame
00:42 benabik sorear: It _seems_ like there's a flag to say it's not usable in that case: see the small print at the end of the op.
00:44 sorear benabik: that only covers the case of calling a superclass/same class constructor from within a constructor
00:44 sorear it doesn't cover the object construction case
00:44 sorear new/dup/invokespecial
00:45 sorear or rather, new/dup/astore/try{invokespecial}/catch{aload; mess around}/
00:47 lelf` joined #perl6
00:48 skids joined #perl6
00:49 btyler joined #perl6
00:50 * jnthn found enforcing the constructor call somewhat curious.
00:50 jnthn At least invokespecial is non-virtual...
00:50 jnthn So it's trivial to optimize away empty ones.
00:50 jnthn (for the JVM)
00:56 sorear I'd rather get rid of new and unininitialized types and just have invokespecial return the new object on the stack like a sane op
00:58 sorear jnthn: well, apparently there were some classes that used constructors to enforce security checks...
00:59 sorear jnthn: btw, I'm going to attempt to write a class splitter in O(days), so we have it before we need it
01:01 colomon class splitter?
01:01 sorear colomon: produce a .jar containing several class files
01:02 colomon wouldn't that be a class joiner?
01:02 sorear colomon: class files are limited to 65535 entries in the constant pool and the setting already uses more than half of those
01:02 colomon oh
01:02 colomon silly java
01:04 sorear there's room for optimizing our constant table usage, but only to a point: each method must have a unique name*, which must be stored in the constant pool
01:05 sorear * technically we can use overloading to bend the limit, but there's a separate limit of 65535 methods which makes that less useful
01:06 jnthn sorear: Feel free, though there are probably more pressing things.
01:06 jnthn But -Ofun :)
01:06 jnthn sorear: If you want to figure out pipe form of open, that'd be a useful one.
01:06 jnthn sorear: The tests that use Test::Util to call out to perl6 block on that.
01:07 jnthn And you probably are cluefuller on that than I. :)
01:09 stevan_ joined #perl6
01:16 FROGGS_ joined #perl6
01:25 jnthn sleep &
01:27 benabik joined #perl6
01:29 konundra joined #perl6
01:55 dalek roast: b836990 | (Solomon Foster)++ | integration/ (2 files):
01:55 dalek roast: Add two simple tests for Rakudo JVM.
01:55 dalek roast: review: https://github.com/perl6/roast/commit/b8369904dc
01:55 dalek roast: 680a796 | (Solomon Foster)++ | / (5 files):
01:55 dalek roast: Merge branch 'master' of github.com:perl6/roast
01:55 dalek roast: review: https://github.com/perl6/roast/commit/680a7963e8
01:55 colomon colomon--
02:01 dalek rakudo/nom: b510088 | (Solomon Foster)++ | t/spectest.data:
02:01 dalek rakudo/nom: Add two new tests.
02:01 dalek rakudo/nom:
02:01 dalek rakudo/nom: This is primarily for JVM, but should work anywhere.
02:01 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b5100880e5
02:03 dalek niecza: 8d0cbce | (Solomon Foster)++ | t/spectest.data:
02:03 dalek niecza: Add new tests.
02:03 dalek niecza: review: https://github.com/sorear/niecza/commit/8d0cbceb7d
02:31 xinming joined #perl6
02:41 colomon so, how do I add a ThreadContext to rand?
02:41 colomon rand_n, I mea
02:41 colomon n
02:49 colomon .... errr, rand_I has it, rand_n doesn't?
02:59 Guest1337 joined #perl6
02:59 woosley1 joined #perl6
03:06 shinobicl_ joined #perl6
03:06 shinobicl_ hi
03:08 colomon o/
03:09 shinobicl_ is anyone familiarized with AspectJ?
03:10 colomon not I
03:10 shinobicl_ ok, an example... lets say that i have 10 classes, objects that have a method "persist" that saves the object to the database
03:11 shinobicl_ and i want to add logging capabilities to each "persist" method
03:12 shinobicl_ i just program an "aspect" and then i wire the execution of each method "persist" to this logging aspect
03:13 shinobicl_ so aspectj detects when each "persist" method runs and can inspect the method, the object, the class, etc... using introspection
03:13 shinobicl_ you can even inject new methods and attributes (sorta like perl6 roles) to the objects
03:15 shinobicl_ and.. that is.  at least these are the parts that i've used of Aspectj
03:16 shinobicl_ the thing is, is a damn good idea. they call these problems like logging "cross cutting concerns". tipically janitorial tasks that your system must perform. With aspectj, you can take them "out of the way" of the design of system you are building.
03:19 SamuraiJack joined #perl6
03:20 shinobicl_ i guess that is totally possible to implement in perl6, and in a much better way. aspectj has its own issues that makes you shoot you in the foot many times.
03:22 moritz iirc jnthn implemented some aspect-oriented programming in one of his talks on the MOP
03:24 sorear colomon: find the relevant line in src/vm/jvm/QAST/Compiler.nqp and add a :tc adverb
03:24 colomon sorear: thanks!
03:24 JimmyZ shinobicl_: http://jnthn.net/papers/201​2-gpw-meta-programming.pdf
03:26 shinobicl_ thanks JimmyZ. Already reading it. Grammar:Tracer, right?
03:26 colomon sorear: rand_I's randomness looks a little dodgy to me?
03:27 JimmyZ shinobicl_: nope, next that
03:28 colomon sorear: making good progress towards srand, I think
03:28 colomon sorear: probably go to bed first, though.
03:31 colomon nothing like learning Java programming while working on a compiler written in it...  ;)
03:32 daniel-s_ joined #perl6
03:34 sorear I hear it's even better to learn a language by writing a bootstrapped compiler.
03:34 sorear will look at rand_I
03:37 sorear Stefans-MacBook-Air:rakudo-jvm sorear$ ./perl6 -e '{ my %h; %h{$_}++ for (^5).roll(1000); say %h }'
03:37 sorear ("3" => 128, "2" => 242, "1" => 260, "0" => 237, "4" => 133).hash
03:37 sorear Stefans-MacBook-Air:rakudo-jvm sorear$ ./perl6 -e '{ my %h; %h{$_}++ for (^5).roll(10000); say %h }'
03:37 sorear ===SORRY!===
03:38 sorear java.lang.StackOverflowError
03:38 colomon yup, not that random
03:39 sorear the first test is inconclusive, the second is *clearly wrong*
03:40 colomon do you understand why the stack overflow?
03:40 sorear Stefans-MacBook-Air:rakudo-jvm sorear$ ./perl6 -e 'my @h; my int $i; while $i < 100000 { @h[nqp::rand_I(5, Int)]++; $i = $i+1; }; say @h'
03:40 sorear 24875 25063 24986 12539 12537
03:40 sorear colomon: no, I don't
03:41 sorear rand_I would be good enough if the bitLength() were changed to bitLength() + 32
03:41 colomon I guess I can fix rand_I the same way we (I?) did it in Niecza -- just keep on rand-ing till we get a number that matches the constraints.
03:42 sorear would still not be uniform exactly, but the statistical difference would be small enough that you'd need to run an expirment for millions of years to detect thje difference
03:42 colomon unless you have a better suggestion
03:42 colomon next question: why is srand returning a value in parrakudo?
03:42 sorear ...or use rejection sampling, that works too
03:43 sorear because it predates Nil?
03:48 colomon yeah, that sort of makes sense
03:49 * sorear thinks that the best RNG for many applications on current CPUs is AES-CTR
03:51 colomon java.lang.NoSuchMethodError: org.perl6.nqp.runtime.Ops.srand(J)J
03:51 colomon what's that (J)J mean?
03:52 colomon "The point of the function is to "seed" the rand function so that rand can produce a different sequence each time you run your program. When called with a parameter, srand uses that for the seed; otherwise it (semi-)randomly chooses a seed. In either case, starting with Perl 5.14, it returns the seed. "
03:52 sorear takes one argument of type long, returns a long
03:53 colomon should be taking two args, long and ThreadContext
03:53 sorear http://docs.oracle.com/javase/spec​s/jvms/se7/html/jvms-4.html#jvms-4.3.3
03:53 colomon QAST::OperationsJAST.map_classlib_core_op('srand', $TYPE_OPS, 'srand', [$RT_INT], $RT_INT, :tc);
03:53 sorear that only applies to newly-compiled code
03:53 preflex_ joined #perl6
03:53 colomon sorear: eh?
03:53 sorear you often have to keep old versions of ops around for the benefit of src/vm/jvm/stage0/*.class
03:54 colomon oh
03:54 sorear I've taken to marking things /*FOR_STAGE0*/ when that's the only reason they stick around
03:54 sorear btw, that link convers method descriptor interpretation
03:55 colomon ah, srand used to be in the QAST thing without an actual implementation
03:55 sorear so you'll be able to make sense of (JLorg/perl6/nqp/runtime/ThreadContext;)J or whatever else gets thrown at you
03:55 sorear oh
03:55 colomon sorear++
03:55 sorear ...did you recompile?
03:55 colomon ...yes
03:57 colomon should I not have?  or do I need to do something more?
03:59 sorear do you get the srand error when trying to compile code that uses srand?
04:01 sorear with that map_classlib_core_op you posted, if it's saved and compiled, nqp ought to be generating code which looks for (long,ThreadContext)
04:01 sorear not (long)
04:03 colomon I got that trying to run code that uses srand
04:04 colomon (after my normal recompile)
04:04 colomon (normal recompile: in nqp, make install; in rakudo-jvm, perl ConfigureJVM.pl and then make)
04:05 * colomon is probably doing something stupid because he is too tired to program
04:07 colomon errr... rebuilt everything the exact same way as I thought I did it before, and now it all works.
04:08 colomon I have a working srand here; I'll check it over and commit it once I've had some sleep.
04:08 colomon thanks, sorear++
04:14 * [Coke] categorizes the java aborts: https://gist.github.com/coke/5879701
04:15 sorear [Coke]: did you see my test_summary patch earlier today?
04:19 [Coke] to bin/rakudo.jvm.sh -? already applied it. Thanks!
04:22 [Coke] definitely a huge improvement!
04:22 sorear [Coke]: no, the later one
04:23 sorear [Coke]: I modified test-summary to be able to process rakudo_test_run.tar.gz files generated by the spectest harness
04:23 [Coke] the "shell" stuff jnthn mentioned is blocking 165 tests.
04:24 sorear [Coke]: so it's now possible to do TEST_JOBS=4 make rakudo_test_run.tar.gz; t/spec/test_summary rakudo.jvm --archive rakudo_test_run.tar.gz
04:24 [Coke] sorear: does it change the default behavior or take an option for that? (checking)
04:24 sorear adds option
04:24 sorear [Coke]: if you, I dunno, have multiple cores and want a faster test summary
04:28 Psyche^ joined #perl6
04:35 kingbeast joined #perl6
05:44 xinming joined #perl6
05:46 xenoterracide joined #perl6
06:06 kaare_ joined #perl6
06:39 ztt joined #perl6
06:55 Rotwang joined #perl6
06:56 scottp joined #perl6
06:56 shinobicl_ left #perl6
07:00 FROGGS[mobile] joined #perl6
07:00 FROGGS[mobile] O/
07:00 sorear o/ FROGGS[mobile]
07:03 FROGGS[mobile] What have I missed? Is the pypy port already done?
07:08 FROGGS[mobile] sleeping a few hours means much in the Perl 6 world these days
07:09 sorear I wasn't aware of a pypy port
07:10 FROGGS[mobile] I wasnt serious about pypy
07:11 FROGGS[mobile] but it is just awesome how nicely the JVM backend is coming along
07:12 sorear :D
07:12 FROGGS[mobile] I expected this state in august or september
07:13 FROGGS[mobile] for*
07:13 stevan__ joined #perl6
07:14 SmokeMac_ joined #perl6
07:15 PacoAir_ joined #perl6
07:16 SamuraiJack_ joined #perl6
07:17 shachaf_ joined #perl6
07:18 dagurval_ joined #perl6
07:18 renormalist joined #perl6
07:18 noxgirl joined #perl6
07:18 skids joined #perl6
07:18 salv0 joined #perl6
07:19 lestrrat joined #perl6
07:19 __rnddim__ joined #perl6
07:19 araujo joined #perl6
07:19 tadzik joined #perl6
07:22 groky joined #perl6
07:42 Woodi left #perl6
07:42 Woodi joined #perl6
07:43 Woodi hallo
07:43 sorear Hai
07:43 Woodi I have problem with '?' in grammar...
07:43 Woodi r: https://gist.github.com/anonymous/5890252
07:43 camelia rakudo b51008: OUTPUT«#<failed match>␤OK␤»
07:44 Woodi \d?\d seems not work or have another syntax :)
07:44 sorear because it's a rule, the ? doesn't backtrack
07:45 Woodi backtracking here ?
07:46 Woodi so it works as required ?
07:46 sorear \d\d? would work better
07:46 Woodi heh
07:47 sorear \d?\d (in a :ratchet context) means try to match a \d.  whether or not you succeed, match another
07:47 Woodi works for me :)
07:47 sorear \d\d? means match a \d, then try to match another
07:48 Woodi it's misleading...
07:53 JimmyZ shinobicl_: nope, next that
07:53 JimmyZ ops..
07:56 shachaf joined #perl6
07:58 sorear o/ JimmyZ
08:01 Woodi e, what ? :) camelia OTRed me... I have no idea how to use OTR, just loaded script :)
08:02 JimmyZ \o sorear :D
08:03 preflex joined #perl6
08:04 sorear Woodi: must be some client weirdness
08:04 sorear camelia doesn't actually support that
08:12 Woodi say Somegrammmar.parse( ... ) shows a lot of "orig => ..." sections... is it all there in memory or just it print like that ?
08:13 sorear there's only one Str object for the original string
08:13 sorear every match refers to it by reference
08:14 Woodi hurray! :)
08:19 woosley1 joined #perl6
08:21 sorear so yes it's all stored in memory, but the printing makes it look worse than it is :)
08:34 domidumont joined #perl6
08:43 spider-mario joined #perl6
08:58 lizmat good *, #perl6!
08:59 moritz \o *
08:59 lizmat wrt http://irclog.perlgeek.de/​perl6/2013-06-28#i_7266026 : the meta information in pod is only used to *select* a compunit, it is *not* needed during compilation
09:00 lizmat so it *will* be possible to trivially skip pod parsing as a speed tweak
09:00 lizmat meta information  in pod is of course also needed when installing a compunit
09:04 domidumont joined #perl6
09:04 FROGGS_ depending on the implementation it might be needed only when installing
09:04 xinming joined #perl6
09:09 lizmat oops, yes, that's actually what I meant: the meta-information from pod is somehow stored in a database on installation, and *that* is used to select the compunit
09:09 lizmat FROGGS++ for pointing out the ambiguity of my not yet awake brane
09:10 FROGGS_ I really like that pod section... we just need to convince TimToady++ a bit more :o)
09:10 moritz I thought pod blocks are accessible at run time?
09:10 FROGGS_ moritz: they are
09:11 FROGGS_ but you dont *have to* care what is in this particular one when you have located the unit-file
09:11 FROGGS_ you can, of course
09:11 moritz what is "the unit-file"?
09:11 FROGGS_ Foo.pm
09:11 FROGGS_ (because module has more than one meaning)
09:12 moritz is this about speed-parsing to find whether a given file contains the module we're looking for?
09:12 FROGGS_ yes and no
09:12 FROGGS_ if we implement it right we wont parse every module file and then sort them out by the pod blocks
09:13 FROGGS_ when should have built a database when installing a module
09:15 xinming joined #perl6
09:19 lizmat and actually, that part of the code I have already written more or less
09:19 * moritz is still lost, but that's OK
09:19 FROGGS_ moritz: np, we take you with us :o)
09:20 lizmat currently, the CompUnitRepo module's interface is TBD
09:20 lizmat but I think it will have an "install" method
09:21 lizmat and a "find" method
09:21 * sorear is doing a thing
09:21 lizmat the "install" method will take a string, parse its contents for pod meta-info, and then put the string somewhere
09:22 sorear i've hacked the test harness to make a log of which blocks are used while executing which test files
09:22 moritz "install" and "find" sound like they should go into diffrent classes
09:22 sorear my hope is that we'll find that 90% of the test files use 10% of the setting
09:23 sorear and then maybe we can do some cool demand loading thing to improve cold start performance
09:23 lizmat while recording the meta-information in some for somewhere if needed (this is not true for the proposed CompUnitRepo::Local::File)
09:23 moritz (unless 'install' is "add to repo")
09:23 lizmat install is add to repo
09:24 lizmat please note, this does not do any dependency checking or whatever
09:24 lizmat this is the final step of installing a compunit in a repo
09:25 lizmat and that repo can be just a directory/subdirectory, for development situation, just like @*INC now works
09:25 lizmat and then the filesystem just needs to be able to support the quirks of the compunit naming it gets thrown at it
09:26 lizmat (which would be the CompUnitRepo::Local::File class doing the installing)
09:27 lizmat or it could be something more elaborate that would do filename mangling and store meta-information in some kind of database (probably just some text file)
09:28 lizmat which would be CompUnitRepo::Local::Installation in my proposal
09:28 lizmat or anybody could make a different module with the same API
09:28 lizmat using a SQLite database backend for storing compunits and their meta-information
09:29 lizmat or even one that doesn't actually install, but fetches files from the cloud at runtime and *then* store them locally
09:29 lizmat or whatever, it is intended to be flexible
09:32 FROGGS_ sorear: what do you mean by "blocks"?
09:32 FROGGS_ code sections of the compiler or the script?
09:33 FROGGS_ because knowing dead sections of the compiler code is a pretty cool thing
09:33 sorear FROGGS_: I'm recording all of them, but I only care about the compiler and setting ones
09:33 FROGGS_ that is pretty awesome
09:34 FROGGS_ because if an else block will never be used there is potentially a thinko/bug... but I guess you already know that :P
09:35 sorear I hadn't even considered the test coverage angle
09:35 sorear My main objective here is to cut down on the 6 second startup time by allowing rarely used parts of the compiler and CORE.setting to be demand-loaded
09:36 FROGGS_ cool
09:36 FROGGS_ sorear++
09:37 sorear If this works at all.
09:40 xinming joined #perl6
09:43 FROGGS_ ohh, I'm pretty sure that you can get this done :o)
09:44 FROGGS_ sorear: will this be available through a --target then?
09:44 FROGGS_ like we already have --target=profile or so
09:45 sorear now I have a 1.6 Mline, 130 MB USAGELOG file
09:45 sorear to parse it!
09:45 sorear FROGGS_: not unless I can come up with a sane factoring
09:46 sorear right now this is one-off experimental coding
09:46 FROGGS_ ahh, I see
09:46 FROGGS_ wenn, maybe once it works we can use fudge turn switch in on/off....
09:47 FROGGS_ like #?rakudo option XYZ
09:48 FROGGS_ bbl
09:50 dalek rakudo/nom: bbc2b3f | (Elizabeth Mattijsen)++ | src/core/operators.pm:
09:50 dalek rakudo/nom: Fix undefine()
09:50 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bbc2b3f4b1
10:02 dalek roast: f4472d9 | (Elizabeth Mattijsen)++ | S32-scalar/undef.t:
10:02 dalek roast: Unfudge now passing undefine tests
10:02 dalek roast: review: https://github.com/perl6/roast/commit/f4472d9f40
10:03 sorear 6,478 blocks are a) found in at least one precompiled jar b) used by at least one test file
10:04 sorear 1,151 of those are invoked in *every* test file
10:05 sorear 1,958 are invoked in more than half
10:06 sorear The bottom 50% of the blocks are invoked by <5% of the test files
10:07 FROGGS[mobile] joined #perl6
10:10 jnthn sorear: Did CodeRef get changed yet to not resolve all of it's annotations until first usage?
10:11 * jnthn remembers thinking of doing that, but didn't actually get to it himself... :)
10:12 jnthn BTW, friendly reminder to those going to YAPC::EU: tomorrow is last YAPC::EU talk submission day. :)
10:13 jnthn And I don't see that many Perl 6 submissions :P
10:16 sorear jnthn: we can't even create a coderef until we have an annotation, because that's how we distinguish coderefs from other blocks
10:17 sorear jnthn: i've been toying with the idea of resurrecting getCodeRefs, possibly in a different form
10:18 sorear also then I can kick the non-hot blocks out of the core class and demand-load them
10:18 jnthn sorear: Yes, we have to get the annotation itself, but not all of the various fields out of it.
10:18 jnthn sorear: This is assuming the individual values carry some cost to create/are built on-demand...dunno if htat's acutlaly the case.
10:18 sorear jnthn: I don't think that makes a difference
10:18 sorear jnthn: the generated methods for the annotation don't even show up on the profile, while getAnnotation does and fairly high
10:19 sorear so I think it's doing all the work upfront
10:19 lizmat robocup&
10:20 _daniel-s__ joined #perl6
10:20 jnthn aww, ok
10:23 tomyan joined #perl6
10:24 sorear jnthn: I'm hesitant to do anything with shell() or open("rp") until we've had a discussion about $*EXECUTABLE_NAME and how tests should be invoking bits of subprocess perl in a test server environment
10:28 jercos r: my $x = "'foo'|'bar'";("lol foo bar" ~~ /<$x>/).print
10:28 camelia rakudo bbc2b3: OUTPUT«lol»
10:28 jercos what am I missing here
10:29 jercos r: ("lol foo bar" ~~ /'foo'|'bar'/).print
10:29 camelia rakudo bbc2b3: OUTPUT«foo»
10:29 jercos Why are those two not equivalent?
10:47 rindolf joined #perl6
10:47 jnthn Huh...beats me...
10:47 jnthn r: my $x = "'foo'|'bar'"; say ("lol foo bar" ~~ /<$x>/).WHAT
10:47 camelia rakudo bbc2b3: OUTPUT«(Match)␤»
10:47 jnthn r: my $x = "'foo'|'bar'"; say ("lol foo bar" ~~ /<$x>/).perl
10:47 camelia rakudo bbc2b3: OUTPUT«Match.new(orig => "lol foo bar", from => 0, to => 3, ast => Any, list => ().list, hash => EnumMap.new())␤»
10:48 jnthn r: my $x = "'foo'|'bar'"; say $x; say ("lol foo bar" ~~ /<$x>/).perl
10:48 camelia rakudo bbc2b3: OUTPUT«'foo'|'bar'␤Match.new(orig => "lol foo bar", from => 0, to => 3, ast => Any, list => ().list, hash => EnumMap.new())␤»
10:48 jnthn wat.
10:53 jnthn Well, that's getting a bug ticket when masak++ wakes up, I suspect...
10:53 jnthn r: my $x = "'foo'||'bar'"; say $x; say ("lol foo bar" ~~ /<$x>/).perl
10:53 camelia rakudo bbc2b3: OUTPUT«'foo'||'bar'␤Match.new(orig => "lol foo bar", from => 0, to => 3, ast => Any, list => ().list, hash => EnumMap.new())␤»
10:54 jnthn r: my $x = "'foo'||'bar'"; say $x; say ("lol fo0 baa" ~~ /<$x>/).perl
10:54 camelia rakudo bbc2b3: OUTPUT«'foo'||'bar'␤Nil␤»
10:57 sorear sleep&
11:05 dalek nqp: ce08f8a | (Solomon Foster)++ | src/vm/jvm/ (3 files):
11:05 dalek nqp: Add random number generator to ThreadContext.
11:05 dalek nqp:
11:05 dalek nqp: Make rand_n and rand_I use it, and add srand that sets its seed.
11:05 dalek nqp: review: https://github.com/perl6/nqp/commit/ce08f8a759
11:08 colomon rn: { my %h; %h{$_}++ for (^5).roll(1000); say %h }
11:08 camelia niecza v24-86-g39ab531: OUTPUT«{"0" => 199, "1" => 189, "2" => 198, "3" => 192, "4" => 222}␤»
11:08 camelia ..rakudo bbc2b3: OUTPUT«("4" => 208, "1" => 213, "0" => 195, "3" => 196, "2" => 188).hash␤»
11:08 colomon rn: { my %h; %h{$_}++ for (^5).roll(1000); say %h }
11:08 camelia niecza v24-86-g39ab531: OUTPUT«{"0" => 194, "1" => 208, "2" => 221, "3" => 198, "4" => 179}␤»
11:08 camelia ..rakudo bbc2b3: OUTPUT«("2" => 212, "0" => 202, "1" => 180, "4" => 219, "3" => 187).hash␤»
11:08 colomon rn: { my %h; %h{$_}++ for (^5).roll(1000); say %h }
11:08 camelia niecza v24-86-g39ab531: OUTPUT«{"0" => 202, "1" => 215, "2" => 188, "3" => 200, "4" => 195}␤»
11:08 camelia ..rakudo bbc2b3: OUTPUT«("4" => 188, "2" => 200, "3" => 214, "0" => 211, "1" => 187).hash␤»
11:17 * moritz submitted http://act.yapc.eu/ye2013/talk/4928 (no idea if you can see it before it has been approved)
11:17 moritz remember, less than 1.5 days left for submitting talks
11:25 dalek roast: de39835 | (Solomon Foster)++ | S32-num/rand.t:
11:25 dalek roast: Add simple test of random number distribution.
11:25 dalek roast:
11:25 dalek roast: Rakudo JVM currently has a bug where rand_I is biased towards numbers at the
11:25 dalek roast: beginning of a range. This simple check should detect that by rolling a number
11:25 dalek roast: from 0 to 4, then summing up the number of times 3 or 4 was found. In a proper
11:26 dalek roast: random number generator, this should be on the order of 400. We check to see
11:26 dalek roast: if it is less than 300 and complain if it is.
11:26 dalek roast:
11:26 dalek roast: This might happened by change to a good random number generator occasionally,
11:26 dalek roast: of course.
11:26 dalek roast: review: https://github.com/perl6/roast/commit/de398354f9
11:36 dalek nqp: 760487e | (Solomon Foster)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
11:36 dalek nqp: Fix rand_I so that it is more even.
11:36 dalek nqp: review: https://github.com/perl6/nqp/commit/760487e703
11:40 pmurias joined #perl6
11:46 dalek nqp: 20a7fe6 | (Solomon Foster)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
11:46 dalek nqp: Remove stray reference to ThreadLocalRandom.
11:46 dalek nqp: review: https://github.com/perl6/nqp/commit/20a7fe6949
11:51 * colomon has probably made more changes to nqp in the last week than he made in the previous five years.
11:52 * pmurias likes that Perl6 developers are converging on rakudo/nqp
12:04 Teratogen joined #perl6
12:04 * colomon *loves* that sorear++ is working on rakudo/nqp
12:11 ggoebel joined #perl6
12:18 FROGGS joined #perl6
12:31 birdwindupbird joined #perl6
12:40 jnthn Seems Rakudo going multi-backend has rather changed the dynamic of the project... ;)
12:41 * jnthn was gonna go for a nice walk to the nature reserve, alas it's pouring with rain, so guess I stay in and hack instead.
12:44 jnthn moritz++ # submitting a talk
12:44 jnthn Awww! https://i.chzbgr.com/maxW500/7583003648/hE6270DD8/
12:44 jnthn oops, wrong window!
12:45 jnthn but it's cute anyway :)
12:45 moritz there are more incriminating links you can accidentally post into the wrong window :-)
12:45 jnthn yes! ;)
12:58 FROGGS[mobile] Hehe
13:12 Chillance joined #perl6
13:16 tomyan joined #perl6
13:16 timotimo so, to implement dir(), the parrot backend gets the full list of contents and then lazily iterates over them in nqp code; can i easily do such a lazy iteration in java code, or should i add a jvm-specific nqp::dircontents and implement the filtering and lazyness in the dir method instead?
13:18 jnthn Well, if you expose it as opendir/readdir/closedir nqp ops then I guess you can get some laziness
13:18 jnthn But I'm not sure it's worth it
13:18 jnthn Maybe for really huge directory listings it would be...
13:20 * jnthn looks through the [Coke]++ list of Java aborts
13:20 timotimo so, am i allowed to make up a new nqp op name, even if it isn't available on parrot? or perhaps i could mimic the op on parrot because it already non-lazily gets all the dirs, too ...
13:21 FROGGS jnthn: I have dirs at work that have several thousands of files...
13:22 FROGGS and it would be nice if it wouldnt takes several seconds to get the content as it is now using p5
13:22 jnthn timotimo: Well, you could add an nqp:: op for it, map it on Parrot to what it currently does, then implement it for JVM also, then have the same code in Rakudo...
13:22 jnthn timotimo: But FROGGS makes a good point.
13:23 jnthn We have an opportunity to do it righter than p5, it sounds.
13:23 FROGGS yeah, for example if you want to get the first file that matches a pattern, then you dont need the full list
13:24 timotimo hm, not sure how i have to handle the encoding; on parrot it does pir::trans_encoding__Ssi($filename, find_encoding__Is('utf8')) do i have to do something in particular on the jvm to get that same behavior out?
13:24 timotimo okay, i can use the DirectoryStream<Path> thing from java; i could create such an object with nqp::opendir, destroy it in nqp::closedir and iterate one entry with nqp::nextdir or something
13:25 timotimo but where do i keep the actual DirectoryStream instance?
13:25 benabik joined #perl6
13:25 jnthn timotimo: We already have an IOHandle REPR, potentially you can use that and stash a DirectoryStream in it too...
13:26 * timotimo looks
13:27 jnthn A whole load of these fails pertain to a fiddly BS issue...
13:27 colomon FROGGS++
13:27 FROGGS :o)
13:27 jnthn I guess I should work on that...
13:28 * jnthn makes a cuppa while pondering the fix...
13:30 FROGGS hmmm, tea is a nice idea (bad weather here)
13:30 jnthn Same here
13:30 jnthn Summer! ;)
13:30 FROGGS hehe
13:30 jnthn I shouldn't complain; hot days make my appartment warmer than I like
13:31 FROGGS yeah, for me it could be like 23°C every day...
13:31 moritz what's BS?
13:31 * jnthn could settle for a little cooler, even :)
13:31 jnthn moritz: Bounded Serialization
13:32 moritz ah right
13:32 FROGGS ohh, |= is a trap!
13:33 FROGGS (in case you have +> and +& next to it)
13:33 jnthn r: my $a = 1; $a |= 2; say $a.perl
13:33 camelia rakudo bbc2b3: OUTPUT«any(1, 2)␤»
13:33 jnthn :)
13:33 FROGGS yeah, but that was not what I wanted
13:33 jnthn I can't think of any particularly practical uses for making a junction that way, but I'm sure there will be one some day :)
13:35 FROGGS well, pushing things this way to a junction can be useful I imagine
13:35 FROGGS but I have to get into it first... I'm still a P5 hacker using P6
13:36 jnthn :)
13:36 jnthn Yeah, I tend to experience the opposite now: I'm a P6 hacker who sometimes uses P5 and has to think about it a bit :)
13:37 colomon same here.  :)
13:37 FROGGS .tell masak I am working on v5's pack/unpack right now, we obviously need the intsize there too... I am thinking of providing %Config<intsize>, which defaults to 4, and can be overridden by setting %Config and by the precision argument to sprintf
13:37 yoleaux FROGGS: I'll pass your message to masak.
13:37 timotimo jnthn: did you mean for me to add a new field for a DirectoryStream to the IOHandleInstance class? do i have to do a magic dance for nqp to work with the resulting new repr?
13:37 FROGGS .tell masak I'm not sure if this can be passed to the "i" (un)pack token somehow
13:37 yoleaux FROGGS: I'll pass your message to masak.
13:45 jnthn timotimo: No magic dance, I shoudln't think :)
13:46 timotimo OK
13:52 timotimo how should i signal "the end of the directory has been reached" from nextfiledir if i decided to return a String from it? (also, should i call it *_s in that case?)
13:53 timotimo oh, String can be null.
13:54 jnthn that works, yes
13:55 timotimo DirectoryStream has no explicit close thingie, so setting ioh.dirstrm = null should suffice to get it closed, yes?
13:55 timotimo oh, nope, it inherits closable.
13:55 jnthn Suspect it wants an explicit close...
13:56 timotimo indeed, and i've done that now :)
13:57 timotimo er, but how do i make sure that the directory stream gets closed if i have dir be lazy? i can't know if the iterator was thrown away, can i?
13:58 jnthn Hmm
13:58 jnthn That is the downside of laziness. The handle won't get freed until the object is collected.
13:58 jnthn And the finalizer runs.
13:59 timotimo should i write a TODO in the ops file and be done with it for now?
13:59 jnthn If somebody iterates all the way then it'll hit the end and know to close, I guess.
13:59 jnthn It's just if they stop in the middle.
13:59 timotimo yes
13:59 timotimo should i make nqp::nextfiledir close the stream when the iterator hits the end?
14:00 timotimo probably not, if nqp::closedir is its own op
14:00 jnthn No, just make sure that when that returns a null then the calling code uses closedir, I think.
14:01 timotimo if i my Str $foo := nqp::nextfiledir and the java function returns null, how do i check it in nqp code? is there something like nqp::isdefined?
14:03 jnthn nqp::isnull
14:03 jnthn or nqp::isnull_s for strings
14:05 timotimo thanks!
14:07 timotimo what's mapperspeak for "returns void"?
14:07 timotimo $RT_SMO?
14:07 timotimo ah, $RT_VOID
14:11 colomon IO actually appears to be not as broken as I thought?  But lines() fails hard
14:12 jnthn .oO( fail hard with a vengence )
14:13 colomon just not fail harder, okay?
14:14 * colomon did not like Die Hard 2.  :\
14:16 timotimo which one was that?
14:16 mst timotimo: the one colomon doesn't like.
14:17 colomon timotimo: the one set at an airport
14:18 timotimo oh, i remember sitting in the theater and noticing a colomon in the back getting up and leaving now that you mention it
14:18 benabik Die Hard was a good movie.
14:18 colomon it felt like they were lazily trying to just clone what worked with the first movie without having a clue about what actually worked, if that makes any sense.
14:18 timotimo the first one was the one in the skyscraper, yes?
14:18 benabik Shame they never made sequels.
14:19 * timotimo is still bummed out about the first three star wars movies never being made
14:19 colomon timotimo: yes, first one was skyscraper
14:20 timotimo ConfigureJVM.pl needs a --gen-jvm for all the people who don't have jvms installed on their machines! :P
14:21 benabik timotimo: Should we add --gen-gcc to Rakudo?
14:22 timotimo sounds like a good idea
14:22 timotimo i hear there's a new upcoming C compiler called "clang" that's gaining popularity fast
14:22 timotimo maybe we should add an option for that somehow
14:24 colomon Another good project: add --make-movie-better to ffmpeg...
14:25 timotimo java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: 0 -  oooh, how did i do that?
14:25 colomon I've gotten that several times in things that didn't involve arrays this week.  :\
14:26 timotimo how do i pinpoint the problem?
14:26 timotimo it happens after the jast stage, fwiw
14:27 timotimo i guess i should first make sure that my changes are at fault
14:27 colomon oo, that's happening when you're building?  ugh
14:27 colomon *building rakudo
14:27 jnthn Wait, did you use an RT_VOID return type for an op? And it's not in sink context?
14:28 jnthn Or not not last thing in a block at least...
14:28 jnthn That's asking for trouble. Pretty much all the ops leave *soemthing* on the stack just in case.
14:28 timotimo oh, interesting
14:29 colomon hmmm, we're getting NullPointerException here: (my $line = self.get).defined
14:29 timotimo it's not the last thing in a block
14:29 colomon I think the time it's not defined.
14:29 timotimo should i return a long instead?
14:30 jnthn timotimo: Well, typically one of the arguments is a good thing to return...a null SMO can also be OK
14:30 jnthn long is fine too
14:30 timotimo i'll do that then. for now i put the closedir in sink context.
14:30 timotimo just to see if it compiles and passes any tests at all
14:31 timotimo "Can not invoke this object" :\
14:32 timotimo "in compile_all_the_stmts" %)
14:32 jnthn o.O
14:32 timotimo the uppermost one is box from QAST and a bit lower is coerce
14:32 timotimo coercion*
14:33 konundra joined #perl6
14:34 timotimo oh, *whoops*, didn't set the return types properly for the other ops
14:37 timotimo it compiles now at least :)
14:38 logie joined #perl6
14:38 timotimo er, huh?
14:39 timotimo java.lang.NoSuchMethodError: org.perl6.nqp.runtime.Ops.closedir(Lor​g/perl6/nqp/sixmodel/SixModelObject;Lo​rg/perl6/nqp/runtime/ThreadContext;)D  - but i have public static long closedir(SixModelObject obj, ThreadContext tc) { and i mapped it as QAST::OperationsJAST.map_cl​asslib_core_op('closedir', $TYPE_OPS, 'closedir', [$RT_OBJ], $RT_NUM, :tc);
14:39 colomon oo oo ooo ooo!  New bookshelves are ready for books!
14:40 jnthn $RT_NUM is double, not long
14:40 jnthn $RT_INT is long
14:40 timotimo oh, dumb me
14:40 timotimo thanks! :)
14:40 TimToady colomon: they will quickly be promoted to their level of incompetence
14:41 * TimToady is home after a flight-delay of nearly three hours, and slept pretty well last night, after being up for 26 hours
14:41 mst TimToady: I just got home after being stranded in PHL for 22 hours, bringing my total Austin -> Lancaster travel time to 45h
14:42 TimToady first prize is 11 hours in PHL?
14:42 timotimo i'm curious; is there something fundamental blocking module installation on rakudo-jvm?
14:42 TimToady it was really bumpy across the country last night, even after we got going
14:42 mst it was more of a door prize
14:43 timotimo or is it just "panda nor ufo will run without many more IO ops"?
14:45 jnthn timotimo: Probably small things like that
14:45 jnthn timotimo: Also, no "make install" yet :)
14:46 xilo joined #perl6
14:48 timotimo hehe.
14:48 timotimo well, dir() can't work without self.child, which can't work without $.SPEC existing
14:49 timotimo is a dirty hack acceptable that will just ~ "/" ~? :P
14:49 timotimo well, for testing purposes at least.
14:56 timotimo blergh, can't self.directory ~ "/" ~ $elem, because self.directory delegates to self.parts which uses IO::Spec, too
14:58 jnthn I'm currently working on what I think is the issue beneath some of IO::Spec's brokenness
14:58 jnthn However, it's taking a little while
15:00 thundergnat joined #perl6
15:02 mst w2
15:02 mst bah
15:03 timotimo that's cool :)
15:04 jnthn Exception in thread "main" java.lang.ClassFormatError: Unknown constant tag 100
15:04 jnthn in class file nqp
15:04 jnthn ...wtf?!
15:07 xenoterracide joined #perl6
15:10 thundergnat Hi #perl6 o/
15:10 thundergnat .seen masak
15:10 yoleaux I saw masak 00:02Z in #perl6: <masak> 'night, #perl6
15:11 thundergnat .tell masak Hey, any interest in adding a csv-file-write routine to Text::CSV? See https://gist.github.com/thundergnat/5891406  Could do a pull request (with appropriate testing) if interested.
15:11 yoleaux thundergnat: I'll pass your message to masak.
15:14 Rotwang joined #perl6
15:22 timotimo jnthn: do yox expect the Spec fix to land today?
15:24 jnthn timotimo: Well, I just discovered it may be nothing to do with the thing I'm working on and everything to do with IO::Spec being missing from the makefile on JVM :)
15:24 jnthn Currently seeing if it will build.
15:26 masak thundergnat: interesting. yes, let me have a look at the gist and I'll get back to you.
15:26 yoleaux 00:11Z <BenGoldberg> masak: Considering that the perl6 channel is utf8 friendly, why not use Mäsak as your irc nickname?
15:26 yoleaux 13:37Z <FROGGS> masak: I am working on v5's pack/unpack right now, we obviously need the intsize there too... I am thinking of providing %Config<intsize>, which defaults to 4, and can be overridden by setting %Config and by the precision argument to sprintf
15:26 yoleaux 13:37Z <FROGGS> masak: I'm not sure if this can be passed to the "i" (un)pack token somehow
15:26 yoleaux 15:11Z <thundergnat> masak: Hey, any interest in adding a csv-file-write routine to Text::CSV? See https://gist.github.com/thundergnat/5891406  Could do a pull request (with appropriate testing) if interested.
15:27 masak BenGoldberg: ...because I frequent other channels, too?
15:27 timotimo jnthn++ :)
15:27 masak FROGGS: I'm always hesitant to delegate important decisions to config options. will need to think about that one.
15:28 masak does Perl 5 have anything like %Config<intsize> ?
15:29 jnthn timotimo: Seems it builds but then doesn't quite work...looking. :)
15:31 timotimo i'll have to commute now and then probably be afk for a bit, though. i'll check in with you later and if i can get dir to work with spec as intended, i'll push to nqp and pullrequest to rakudo :)
15:32 telex joined #perl6
15:37 TimToady $ perl -E 'use Config; say $Config{intsize}'
15:37 TimToady 4
15:39 masak ah, ok.
15:42 TimToady if I were doing that again, it'd say 32 :)
15:42 mtk joined #perl6
15:43 ajr joined #perl6
15:43 TimToady 'course, if we wanted to be completely general, we wouldn't assume binary...
15:43 FROGGS masak: dont has to be called "config" though
15:44 shinobicl_ joined #perl6
15:44 FROGGS but you need to specify a width somehow when packing a negative value to a 4 byte buffer for exampel
15:46 masak yes, int size turned up all over with sprintf, too.
15:47 berekuk joined #perl6
15:52 raiph joined #perl6
15:55 dalek rakudo/nom: 7db8e2c | jnthn++ | tools/build/Makefile-JVM.in:
15:55 dalek rakudo/nom: Add IO::Spec to build.
15:55 dalek rakudo/nom:
15:55 dalek rakudo/nom: Seems to build OK, though doesn't quite work yet.
15:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7db8e2c298
15:55 dalek rakudo/nom: 4123079 | jnthn++ | src/core/Str.pm:
15:55 dalek rakudo/nom: Add missing check for 0-count in subst.
15:55 dalek rakudo/nom:
15:55 dalek rakudo/nom: Probably got away with this on Parrot due to s/// thunk not having any
15:55 dalek rakudo/nom: params, which led to the passed param being ignored. On the JVM, it is
15:55 dalek rakudo/nom: aware of such things. Fixes various of the tests failing with "Wrong
15:55 dalek rakudo/nom: number of arguments passed; expected 0..0, but got 1".
15:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/412307989b
16:00 masak rn: my $foo = "say"; 42.$foo
16:00 camelia niecza v24-86-g39ab531: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in type Str␤  at /tmp/HJwtK75L9m line 1 (mainline @ 4) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4579 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4580 (module-CORE @ 576…
16:00 camelia ..rakudo bbc2b3: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'Str'␤  in block  at /tmp/v4JEiUMQZk:1␤␤»
16:01 masak um.
16:01 masak std: my $foo = "say"; 42.$foo
16:01 camelia std d4cc5ab: OUTPUT«ok 00:00 43m␤»
16:02 masak thundergnat: example input is nice, but a pull request for writing CSV would need to have a nice full suite of passing tests. we can collaborate on it if you like.
16:03 masak thundergnat: I would also welcome a session talking through what flags/options the output part would need. they're potentially quite different from what the input part needs.
16:04 thundergnat masak Sure. I didn't invest a lot of time in it until I guaged your interest.
16:06 masak :)
16:06 TimToady rn: my $foo = "say"; 42."$foo"
16:06 camelia niecza v24-86-g39ab531: OUTPUT«[31m===[0mSORRY![3​1m===[0mâ�¤â�¤Unsupported use of . to concatenate strings or to call a quoted method; in Perl 6 please use ~ to concatenate, or if you meant to call a quoted method, please supply the required parentheses at /tmp/ALMto0Es4w line 1 (EOF):â�¤â€¦
16:06 camelia ..rakudo bbc2b3: OUTPUT«[31m===[0mSORRY![31m===[0m�Quoted method name requires parenthesized arguments. If you meant to concatenate two strings, use '~'.�at /tmp/Q1kBC8pyfK:1�------> [32mmy $foo = "say"; 42."$foo"[33m�[31m<EOL>[0m�»
16:07 TimToady rn: my $foo = "say"; 42."$foo"()
16:07 camelia rakudo bbc2b3, niecza v24-86-g39ab531: OUTPUT«42␤»
16:07 TimToady the .$foo form requires hard refs
16:08 TimToady to avoid the 'use strict refs' that P5 requires
16:09 PacoAir joined #perl6
16:13 TimToady it's a little sad that ."foo"() and ::("foo") are so different, but I don't think we can make those consistent, since .() is taken, and ::"foo" is close to unreadable
16:14 * mst likes $obj->${"foo_${bar}"} in p5 :)
16:19 masak "hard refs" meaning "there's an actual routine (reference) in that variable", I guess.
16:19 masak I'm unused to thinking about those as "hard refs" in Perl 6. :)
16:20 masak TimToady: so... then, it's an LTA error? can we require that it be a Routine or something like that? or is the postcircumfix:<( )> error the best we can do?
16:23 dalek rakudo/nom: b1f0fc0 | (Elizabeth Mattijsen)++ | src/core/Any.pm:
16:23 dalek rakudo/nom: Use Nil instead of () for list/array adverbs
16:23 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b1f0fc0165
16:29 jlaire joined #perl6
16:29 masak I wish we would use roles more for requiring stuff. like Callable actually requiring a postcircumfix:<( )>. and then we'd say that $foo in 42.$foo has to be a Callable.
16:30 masak of course, you could still provide postcircumfix:<( )> outside of Callable... but then you couldn't do 42.$foo
16:30 masak hm, and postcircumfixes are being turned from methods to subs... :/
16:32 TimToady lizmat: no, spec says that :kv and such weed out non-existing elements
16:33 TimToady so () is correct
16:33 lizmat yes, that's the idea
16:33 TimToady Nil doesn't disappear in a list
16:33 lizmat well, shouldn't I think is the phrase  :)
16:33 lizmat so, () is correct in the future, is what you're saying
16:34 TimToady yes, unless my brane is in sideways
16:34 TimToady nr: say (1,Nil.3).elems
16:34 camelia niecza v24-86-g39ab531: OUTPUT«[31m===[0mSORRY![31m===[0m��Two terms in a row (listop with args requires whitespace or parens) at /tmp/MuPxNPHIgc line 1:�------> [32msay (1,Nil[33m�[31m.3).elems[0m��Parse failed��»
16:34 camelia ..rakudo 412307: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Confusedâ�¤at /tmp/5UEcMu_7jY:1â�¤------> [32msay (1,Nil.[33mâ��[31m3).elems[0mâ�¤    expecting any of:â�¤        postfixâ�¤        dotty method or postfixâ�¤Â»
16:35 TimToady nr: say (1,Nil,3).elems
16:35 colomon http://www.harmonyware.com/p​ictures/new_bookshelves.jpg # ta-da!
16:35 camelia rakudo 412307: OUTPUT«2␤»
16:35 camelia ..niecza v24-86-g39ab531: OUTPUT«3␤»
16:35 TimToady nr: say (1,(),3).elems
16:35 camelia rakudo 412307: OUTPUT«2␤»
16:35 camelia ..niecza v24-86-g39ab531: OUTPUT«3␤»
16:35 TimToady nr: say [1,Nil,3].elems
16:35 camelia rakudo 412307, niecza v24-86-g39ab531: OUTPUT«2␤»
16:35 TimToady nr: say [1,(),3].elems
16:35 camelia rakudo 412307, niecza v24-86-g39ab531: OUTPUT«2␤»
16:36 TimToady [1,Nil,3] should be 3 elems, not 2
16:36 lizmat ok, so I've adapted the code to the wrong behaviour of Nil
16:37 TimToady but rakudo hasn't made the transition yet, and niecza has made it partially
16:37 timotimo it seems my dir implementation fails to return directories
16:38 colomon timotimo: that's a bit of a drawback
16:38 dalek rakudo/nom: 9ded36c | (Elizabeth Mattijsen)++ | src/core/Any.pm:
16:38 dalek rakudo/nom: Revert "Use Nil instead of () for list/array adverbs"
16:38 dalek rakudo/nom: TimToady++ for pointing out the error of my ways  :-)
16:38 dalek rakudo/nom: This reverts commit b1f0fc0165a3967b7a0d080c53d70981eccd2a75.
16:38 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9ded36c48f
16:39 jnthn timotimo: On IO::Spec, got a patch coming up that fixes a bunch of the .subst bustage, which in turn fixes more IO::Spec stuff too
16:40 TimToady As a designer, sometimes I'm the Oracle at Delphi, and sometimes I'm just Maxwell's Daemon...  :)
16:40 lizmat :-)
16:41 moritz as long as you're not the Oracle at Redwood Shores... :-)
16:41 timotimo colomon: it would appear that that is exactly how DirectoryStream is supposed to operate
16:41 timotimo i'm looking for something that will give me directories as well
16:43 timotimo oh, i was wrong
16:43 timotimo it does return directories
16:43 timotimo jnthn: does that fix directory.child("foo") returning something that stringifies as IO::Path<.foo>?
16:44 jnthn timotimo: Not sure
16:45 timotimo strange. i think i'm doing silly things.
16:47 lizmat gone for the evening&
16:47 jnthn Hm, well whatever I just did moved us from attempting 24786 tests to attempting 25231. Not all new passes though...
16:47 timotimo ah, interesting!
16:48 timotimo the java stuff returns "./foobar" for instance
16:48 timotimo > ".".path.child("./foo")
16:48 timotimo IO::Path<.foo>
16:48 dalek rakudo/nom: 2118544 | jnthn++ | src/Perl6/Actions.nqp:
16:48 dalek rakudo/nom: JVM is sensitive to where savecapture is used.
16:48 dalek rakudo/nom:
16:48 dalek rakudo/nom: This corrects it to be used after the signature binder is called. This
16:48 dalek rakudo/nom: fixes complex protos (those that aren't just an onlystar), which in
16:48 dalek rakudo/nom: turn unbusts .=subst(...).
16:48 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/21185446dc
16:48 timotimo yaaaay :)
16:51 Rotwang joined #perl6
16:52 timotimo that does not fix the ./ behavior, though
16:53 jnthn I think look at the subst tests as some of those fail still...may be a better golf.
16:58 timotimo r: ".".path.child("./t").say
16:58 camelia rakudo 412307: OUTPUT«IO::Path<.t>␤»
16:58 timotimo hold up, that's wrong on rakudo, too
16:59 fgomez joined #perl6
17:02 timotimo maybe nextfiledir should just chop off the ./ from the beginning of the file's name.
17:03 TimToady sorear: when you copy/paste your 'Stefans-MacBook-Air:rakudo-jvm sorear$' prompt multiple times, it jangles my spam neurons just a bit :)
17:04 jnthn away for evening &
17:05 timotimo bbl
17:08 shinobicl_ joined #perl6
17:20 kaare__ joined #perl6
17:34 segomos joined #perl6
17:35 ugexe joined #perl6
17:52 mstefanko joined #perl6
17:53 mstefanko is perl6 the backwards incompatible perl version Larry Wall mentioned in the last minute of https://www.youtube.com/watch?v=LR8fQiskYII ?
17:57 TimToady very likely
17:59 sqirrel joined #perl6
17:59 mstefanko thanks; interesting how perl faded out from the 'cool' tools to work with. you don't hear nowadays startups proclaiming that they are running on perl technology
18:00 xenoterracide joined #perl6
18:01 TimToady Perl 6 aims to be cool again :)
18:01 mstefanko apparently it's however popular in banking/payment processing sectors
18:02 TimToady well, they like stability more than coolth :)
18:02 mstefanko yes def.
18:03 mstefanko but i can see also a bit why when i go through the online pages and docs. websites promoting perl tend to look very pre-2000ish
18:03 mstefanko perl.org screams o'reilly at you
18:03 colomon lots of neat things still being done with Perl, https://www.thegamecrafter.com/ is one of my favorite examples.  :)
18:04 mstefanko is the website built on perl or their products?
18:05 yoleaux joined #perl6
18:05 colomon their production method (which is what they're really selling)
18:05 colomon JT gave a presentation on it at YAPC::NA 2011.
18:06 mstefanko X-Powered-By:Perl Dancer 1.311
18:06 mstefanko i see
18:06 mstefanko i guess it's one of the better looking websites
18:06 colomon website too, I guess!  ;)
18:21 Ulti mstefanko: also bioinformatics is mostly perl
18:21 timotimo i wonder if catpath should be able to handle catpath(".", "./foo") properly
18:21 timotimo or if i should just cut off leading ./ from my elements in the dir traversal
18:23 dmol1 joined #perl6
18:23 timotimo ah, it's even worse, dir("t") will give "t/t/..."), so i suppose i don't have to catpath at all.
18:23 TimToady lizmat: re http://irclog.perlgeek.de/​perl6/2013-06-29#i_7267784 The compiler does need to know the complete identity of a module if it is to allow multiple versions to coexist at runtime
18:23 Ulti mstefanko: also I just created a startup and we're using perl on heroku for our web stuff... because its cool
18:24 Ulti mstefanko: that and I'm working with other people from bioinformatics who essentially only know perl...
18:24 TimToady .oO(IDENTIFICATION DIVISION)
18:26 timotimo any clues to why the jast phase takes about half as long as the parse phase? is that an okay time to take? (compared to parrot where it doesn't take quite as much, but there's a pir phase directly after that as well)
18:31 colomon timotimo: you probably need to ask jnthn or sorear that, and I don't think either of them is around right now...
18:32 timotimo it's probably not that important
18:32 timotimo first we get it all to run :)
18:39 btyler joined #perl6
18:41 * timotimo now has a running dir() implementation atop the jvm
18:41 colomon \o/
18:43 timotimo except "method basename not found"
18:43 timotimo ah, duh9~.
18:43 timotimo and now that i've fixed it to its fullest, i'll run a full spectest
18:52 * timotimo finds it hard to tell if he made other stuff fail with the changes
18:52 timotimo but it's quite unlikely.
18:56 timotimo t/spec/S05-metachars/newline.rakudo.jvm ...................... Failed 2/15 subtests  (2 TODO tests unexpectedly succeeded)
18:56 timotimo (probably means nothing, though)
19:01 dalek nqp: bfe5a06 | (Timo Paulssen)++ | src/vm/jvm/ (3 files):
19:01 dalek nqp: create opendir, nextfiledir and closedir ops.
19:01 dalek nqp: review: https://github.com/perl6/nqp/commit/bfe5a06303
19:06 timotimo https://github.com/rakudo/rakudo/pull/173 - this is the corresponding pull request for rakudo-jvm
19:11 jercos r: my $x = "'foo'|'bar'";("lol foo lol" ~~ /<$x>/).print
19:11 camelia rakudo 211854: OUTPUT«foo»
19:11 jercos r: my $x = "'foo'|'bar'";("lol foo bar" ~~ /<$x>/).print
19:11 camelia rakudo 211854: OUTPUT«lol»
19:11 jercos :|
19:12 timotimo a junction is not what you want in this case
19:12 timotimo but try this:
19:12 timotimo er, i didn't see the " around it, sorry
19:12 timotimo er, what is going on there? o_O
19:17 FROGGS hmm
19:17 FROGGS r: my $x = "'foo'|'bar'";say "lol foo bar" ~~ /<$x>/
19:17 camelia rakudo 211854: OUTPUT«「lol」␤␤»
19:17 FROGGS r: my $x = "'foo'|'bar'"; "lol foo bar" ~~ /<$x>/; say $/
19:17 camelia rakudo 211854: OUTPUT«「lol」␤␤»
19:17 FROGGS r: my $x = "'foo'|'bar'"; "lol foo bar" ~~ /<$x>/; say $/.MATCH
19:17 camelia rakudo 211854: OUTPUT«No such method 'MATCH' for invocant of type 'Match'␤  in block  at /tmp/yXMKPuD5qQ:1␤␤»
19:17 FROGGS err
19:18 FROGGS r: my $x = "'foo'|'bar'"; "lol foo bar" ~~ /(<$x>)/; say $/.caps
19:18 camelia rakudo 211854: OUTPUT«0 => Match.new(orig => "lol foo bar", from => 0, to => 3, ast => Any, list => ().list, hash => EnumMap.new())␤»
19:18 FROGGS r: my $x = "'foo'|'bar'"; "loll foo bar" ~~ /(<$x>)/; say $/.caps
19:18 camelia rakudo 211854: OUTPUT«0 => Match.new(orig => "loll foo bar", from => 0, to => 3, ast => Any, list => ().list, hash => EnumMap.new())␤»
19:19 FROGGS r: my $x = "'foo'"; "loll foo bar" ~~ /<$x>/; say $/
19:19 camelia rakudo 211854: OUTPUT«「foo」␤␤»
19:19 FROGGS r: my $x = "'foo'"; "lol foo bar" ~~ /<$x>/; say $/
19:19 camelia rakudo 211854: OUTPUT«「foo」␤␤»
19:19 FROGGS r: my $x = "'foo'||'bar'"; "lol foo bar" ~~ /<$x>/; say $/
19:19 camelia rakudo 211854: OUTPUT«「lol」␤␤»
19:20 FROGGS r: my $x = "'foo' ~ 'bar'"; "lol foo bar" ~~ /<$x>/; say $/
19:20 camelia rakudo 211854: OUTPUT«[31m===[0mSORRY![31m===[0m�Unrecognized regex metacharacter ~ (must be quoted to match literally)�at eval_0:1�------> [32mmy $x = anon regex { ^'foo' ~ 'bar' [33m�[31m}[0m�Malformed regex�at eval_0:1�------> [32mmy $x = anon regex { ^'foo' ~ 'bar' [33m�[…
19:20 FROGGS r: my $x = "['foo'|'bar']"; "lol foo bar" ~~ /<$x>/; say $/
19:20 camelia rakudo 211854: OUTPUT«「foo」␤␤»
19:20 FROGGS ahh
19:20 FROGGS still weird
19:22 FROGGS jercos: can you report a bug for that please? paste the lines here should be enough
19:28 araujo joined #perl6
19:35 GlitchMr rn: my $val; $val.perl.say;
19:35 camelia rakudo 211854, niecza v24-86-g39ab531: OUTPUT«Any␤»
19:45 tomyan joined #perl6
19:45 * timotimo looks into why open doesn't work ("method tell not found")
19:46 FROGGS what was 'tell' again?
19:49 timotimo returns the position of the file pointer
19:50 lelf` joined #perl6
19:50 mikemol joined #perl6
19:55 timotimo https://github.com/rakudo/rakudo/pull/174 - makes all 30 tests in S32-io/file-tests.t work :D
19:56 timotimo https://github.com/rakudo/rakudo/pull/173 - makes all 12 tests in S32-io/dir.t pass
19:59 ecocode joined #perl6
19:59 pmurias jnthn: what would be a simple nqp test for serializing a closure?
20:00 pmurias s/serializing/deserializing/
20:01 timotimo hmm, --target=jar -e 'my $a = 10; my &foo = -> { say $a }'
20:02 pmurias timotimo: that was an answer to my question?
20:03 timotimo i would attempt that
20:03 timotimo target=jar should force serialisation and that &foo should have a proper closure in it
20:03 pmurias I want to test it on the js backend
20:05 timotimo oh, in that case =jar wouldn't help
20:05 PacoAir joined #perl6
20:07 pmurias what does =jar do?
20:07 timotimo forces the jvm backend to create a .jar file
20:07 pmurias wouldn't the closure be created at runtime rather then at compile time and serialized?
20:08 timotimo oh
20:08 timotimo good point :|
20:09 pmurias ahh there's BEGIN in nqp
20:11 dalek rakudo-js: 10b80cc | (Pawel Murias)++ | / (5 files):
20:11 dalek rakudo-js: Start of implementing one shot continuations.
20:11 dalek rakudo-js: review: https://github.com/pmurias/​rakudo-js/commit/10b80cc060
20:11 dalek rakudo-js: 8fb0780 | (Pawel Murias)++ | / (2 files):
20:11 dalek rakudo-js: Support tags in continuationcontrol and continuationreset.
20:11 dalek rakudo-js: review: https://github.com/pmurias/​rakudo-js/commit/8fb0780465
20:11 dalek rakudo-js: 0c834cb | (Pawel Murias)++ | run_tests:
20:11 dalek rakudo-js: Clean up run_tests.
20:11 dalek rakudo-js: review: https://github.com/pmurias/​rakudo-js/commit/0c834cb2a5
20:12 timotimo how much does nqp-js do so far?
20:13 pmurias https://github.com/pmurias/ra​kudo-js/blob/master/run_tests
20:13 timotimo ah, all nqp-js work is in that repository?
20:13 pmurias yes
20:13 dalek rakudo/nom: 82437be | (Timo Paulssen)++ | src/core/IO.pm:
20:13 dalek rakudo/nom: give IO::FileTestable more methods on jvm
20:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/82437be699
20:13 dalek rakudo/nom: b7bbd67 | colomon++ | src/core/IO.pm:
20:13 dalek rakudo/nom: Merge pull request #174 from timo/jvm-more-stat
20:13 dalek rakudo/nom:
20:13 dalek rakudo/nom: give IO::FileTestable more methods on jvm
20:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b7bbd67019
20:14 timotimo thank you! :)
20:14 timotimo are cokes tests already running?
20:14 pmurias cokes tests?
20:14 pmurias I get my uni exams last week so I was slacking of on my GSoC project, but I'll try to get on the project this one
20:14 pmurias s/get/had/
20:15 colomon pmurias: [Coke] usually runs daily runs of all the p6 compilers against roast
20:15 pmurias timotimo: it doesn't run rakudo yet
20:17 pmurias timotimo: I had a few rakudo tests at the start but it was a giant pile of hacks so I'm trying to get nqp to fully work before starting to work on rakudo tests
20:17 colomon timotimo: usually [Coke] runs them earlier in the day than this -- it was noon EST yesterday, I think
20:17 timotimo hehehe
20:17 timotimo so the tests are probably running now and they're just taking hours again ...
20:18 colomon or they're done already and he just hasn't reported them / pushed them
20:18 timotimo pmurias: would i be able to run nqp-js on some nqp code and generate js files out of that that i could somehow use from inside a browser?
20:19 colomon timotimo: I don't think I'm qualified to pull #173 at a glance.  And I don't have time to study it right now, alas.  Apologies.
20:21 timotimo don't worry about it
20:21 pmurias timotimo: it's all node.js atm, but I could make it generate browser usable js easily if you need it
20:22 yoleaux joined #perl6
20:23 timotimo only if it turns out convenient for yo
20:27 dalek v5: 0f7dc2f | (Tobias Leich)++ | lib/Perl5/ (2 files):
20:27 dalek v5: added pack and unpack (plus directive "i")
20:27 dalek v5: review: https://github.com/rakudo-p5/v5/commit/0f7dc2f4b2
20:27 dalek v5: dba0879 | (Tobias Leich)++ | / (2 files):
20:27 dalek v5: added directive "c" to pack/unpack
20:27 dalek v5: review: https://github.com/rakudo-p5/v5/commit/dba0879ae0
20:31 raiph r: my $tree = 1 => 2 => 3; say $tree.kv
20:31 yoleaux 27 Jun 2013 11:24Z <daxim> raiph: learn to write better copy - http://www.useit.com/articles/i​nverted-pyramids-in-cyberspace/ - in long texts, put the conclusions first
20:31 camelia rakudo 211854: OUTPUT«1 2 => 3␤»
20:31 raiph ww
20:33 FROGGS r: my $tree = 1 => 2 => 3; say $tree.perl
20:33 camelia rakudo 211854: OUTPUT«1 => 2 => 3␤»
20:33 snoopy joined #perl6
20:35 raiph .ask daxim is that about my weird "divided we fall"?
20:35 yoleaux raiph: I'll pass your message to daxim.
20:42 dmol joined #perl6
20:43 pmurias which backend is more convinient to fix nqp bugs on jvm or parrot?
20:43 pmurias (backend independent bugs)
20:44 FROGGS I'd say parrot because you can be a bit more sure that is itself has less bugs
20:44 FROGGS s/is/it/
20:45 FROGGS there is too much movement for the JVM backend atm
20:45 raiph looks like my "divided we fall" post has cost me the right to post to /r/perl :/
20:45 tadzik oh
20:46 raiph it was pretty terrible, but i'm disappointed the outcome was that bad
20:46 tadzik you've been banned by one of the mods?
20:48 raiph sidelined instead
20:48 raiph http://www.reddit.com/r/perl/comments/1haixk/n​ew_perl_compiler_speed_benchmarking_tool_and/
20:48 raiph never appeared in the /r/perl list
20:50 mst raiph: you'll get more exposure via blogs.perl.org tbh
20:51 sorear good * #perl6
20:52 pmurias sorear: hi
20:55 dalek v5: df3b3c6 | (Tobias Leich)++ | t/test.pl:
20:55 dalek v5: added test subs `like` and `unlike`
20:55 dalek v5: review: https://github.com/rakudo-p5/v5/commit/df3b3c6acd
20:55 dalek v5: 011096e | (Tobias Leich)++ | / (2 files):
20:55 dalek v5: force array indexes to be numeric
20:55 dalek v5: review: https://github.com/rakudo-p5/v5/commit/011096e58e
20:55 raiph mst: thx.
20:56 raiph mst: i'm open to criticism about that reddit
20:56 sorear timotimo: the time required for jast is not entirely unreasonable, jast walks the entire qast tree and constructs a million instruction objects
20:56 raiph mst: because i'd rather be able to still post in /r/perl
20:56 sorear timotimo: there are probably optimizations we can make, but I don't think there's some shallow thing killing performance
20:57 sorear are the /r/perl mods perl community members?
20:57 raiph mst: (criticism of the benchmark post)
20:57 raiph sorear: yeah
20:58 raiph sorear: i'm pretty sure mr_c is the one who most dislikes me
20:58 timotimo i'm afk for a bit now
20:59 timotimo sorear: if you have a minute to kill, my pull request for dir() should be easy to review (it may even be wrong, especially the handling of the ./ from the beginning may be conceptually wrong)
20:59 timotimo er, wait, do i even do that any more?
20:59 sorear raiph: ==chromatic?
21:00 raiph sorear: yeah. (fwiw i try not to say that string publicly)
21:01 sorear timotimo: I don't see a dir() pull requast
21:02 raiph does anyone know of a compiler benchmarking package like japhb's that p5 folk like to use?
21:03 sorear timotimo: oh, you just didn't put dir() in the title
21:03 sorear I'd want jnthn to test this on windows before doing anything with it.
21:06 raiph is Benchmark-Perl-Formance the standard for benchmarking p5 versions?
21:09 PZt joined #perl6
21:09 labster good *, #perl6
21:11 labster timotimo++ for the dir() on the jvm, and for finding a bug for me to fix in path.child.
21:12 nwc10 I am not aware of any statistically sound and representative benchmarking tool for Perl 5
21:12 nwc10 er, for benchmarking the perl 5 interpreter
21:12 nwc10 dumbbench seems to be pretty good as a tool for benchmarking user code
21:13 raiph mwc10: thx. have you looked at formance or perl6-bench?
21:14 nwc10 "formance"?
21:14 nwc10 not looked at perl6-bench
21:14 raiph nwc10: http://search.cpan.org/~schwigo​n/Benchmark-Perl-Formance-0.33/
21:15 lue hello world o/
21:16 raiph hey lue
21:16 nwc10 I have not looked at what *benchmarks* it uses. The graphs that are published are (if I remember correctly) are for a build of perl 5 using the default -O2 compiler flags for gcc, and I believe for a single run
21:17 labster I got a $dayjob offer yesterday from the place tadzik++ referred me to, so I just thought I'd also thank him and others who were indirectly responsible: diakopter++ raiph++ FROGGS++ TimToady++ pmichaud++ mst++
21:17 nwc10 They are all noise.
21:17 nwc10 Sadly.
21:17 labster \o lue
21:17 FROGGS labster++ # \o/ cool!
21:17 tadzik awesome!
21:17 tadzik labster++
21:17 sorear :(
21:17 raiph labster: :)
21:18 sorear but labster++
21:18 labster sorear: get norman to look at the resumes faster :P, I haven't accepted yet
21:19 raiph nwc10: is the formance tool itself neutral (so the problem was how it was used)?
21:19 nwc10 yes, my frustration is how it is used for the published graphs
21:20 nwc10 I've not looked at the benchmarks themselves
21:23 raiph nwc10: thx. i'm reading an exchange between u and author
21:25 PacoAir joined #perl6
21:26 nwc10 I've not had time to look at using http://www.cs.umass.edu/~emery​/pubs/stabilizer-asplos13.pdf (and no-one else seems to have either)
21:26 nwc10 but I think that that's the way to go on the compile & run side of this
21:26 nwc10 not -O2
21:27 nwc10 but I have recently found that crazy things that make no sense to me measurably and repeatably affect performance
21:27 nwc10 such as the link ordering of object files. Object files in which everything is L1 cache aligned
21:28 nwc10 or that code paths doing more work end up running faster than the same binary not taking those code paths
21:29 pmurias joined #perl6
21:29 pmurias_ joined #perl6
21:31 labster r: say "foo//bar".path.cleanup  # ugh what did I do now
21:31 camelia rakudo b7bbd6: OUTPUT«IO::Path<foobar>␤»
21:32 pmurias is a segfault expected when trying to build nqp with openjdk 1.7?
21:32 raiph nwc10++ # awareness of Stabilizer and being in #perl6 to share it
21:33 pmurias http://pastie.org/8095338
21:34 nwc10 pmurias: pair of stupid questions - (1) that's the JVM segfaulting? (2) is it the most recent version available?
21:35 pmurias it's the jvm, not make
21:39 lizmat TimToady: wrt http://irclog.perlgeek.de/​perl6/2013-06-29#i_7268923 : I'm not sure what you call the compiler here
21:40 lizmat The classes providing the CompUnitRepo interface, store the meta-information of compunits
21:41 pmurias nwc10: I'll try with the latest jdk from oracle
21:41 lizmat whenever a compunit needs to loaded, it will give this from/longname/auth/ver to each of the CompUnitRepo objects in @*INC
21:42 lizmat They then use whatever they need to return which compunist match in their repo
21:43 nwc10 I seem to be building NQP fine (and tests passing) with:
21:43 nwc10 java version "1.7.0_25"
21:43 nwc10 OpenJDK Runtime Environment (rhel-2.3.10.3.el6_4-x86_64)
21:43 nwc10 OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
21:44 lizmat the repo also returns the meta-info of the candidates, which the compiler can use to set up introspection if the candidate is selected for loading
21:45 lizmat so the compiler *will* know all of the meta-information of a compunit when needed
21:45 raiph lizmat: i'm guessing larry's confusion is the same as FROGGS (http://irclog.perlgeek.de/​perl6/2013-06-29#i_7267798)
21:45 lizmat but not before then (unless you call the "database" that a CompUnitRepo has, knowledge of the compiler)
21:46 labster r: my $str = "foo A bar"; $str ~~ s { 'A' }  = 'B'; say $str;
21:46 camelia rakudo b7bbd6: OUTPUT«foo  bar␤»
21:46 labster rakudobug
21:46 lizmat raiph: indeed  :-(
21:47 lizmat so: to recap:
21:47 raiph lizmat++ # right combination of skills, branepower, diplomacy, patience, impatience
21:47 lizmat *blush*
21:48 lizmat 1. whenever a -use- is done in code, the CompUnitRepo-like objects in @*INC each get a chance to say whether they know of any matching candidate compunits
21:49 lizmat 2. the compiler makes a choice out of these candidates, if needed, or throws an exception if nothing found or can't make a decision
21:50 lizmat 3. when a compunit is selected, its meta-information (already provided to the compiler when making a choice) is installed as introspection info after the compunit is loaded
21:53 lizmat 4. Rakudo will provide 2 implementations of CompUnitRepo: CompUnitRepo::Local::File (basically, the current behaviour) and CompUnitRepo::Local::Installation, which has a simple database, basically consisting of dump of a hash representation of the meta-information of installed modules, easily allowing smart-match logic on them
21:54 labster .oO (CompUnitRepo::Remote::CPAN -- store your modules in the cloud)
21:57 * FROGGS .oO( CompUnitRepo::Local::DevNull -- install your modules to ... )
21:57 lizmat labster: I would see that as an on-demand installation feature
21:58 lizmat FROGGS: I would see that as a way to make files appear to be *not* installed
21:58 FROGGS :o)
21:59 sorear ::CPAN could be cool
21:59 lizmat FWIW, I think each CompUnitRepo should be able to say that no further searching is needed
21:59 FROGGS hmmm, not sure if I could agree
22:00 ecocode left #perl6
22:00 lizmat if you don't allow that, you will get modules that start fiddling with @*INC to get the same behaviour
22:01 FROGGS yeah, maybe you are right
22:02 FROGGS if a repo says "hey, I've got a dev module here that should get picked no matter what" than this is the right playce to say so
22:02 lizmat indeed
22:02 FROGGS -y
22:02 FROGGS k
22:03 lizmat BTW, some commit today broke spectest quite seriously
22:03 FROGGS O.o
22:03 lizmat all tests failing in t/spec/S05-metasyntax/delimiters.t
22:03 FROGGS sounds like an nqp patch
22:04 lizmat 6 tests in t/spec/S05-modifier/counted
22:04 lizmat 10 tests in t/spec/S05-modifier/ii.t
22:05 lizmat 24 tests in t/spec/S05-modifier/perl5_0.t
22:05 raiph lizmat: your design wouldn't preclude making all of CPAN plus local stuff appear to be installed, right?
22:05 lizmat and a lot of io-spec and io-path tests
22:05 FROGGS this could explain labster++ 's bug: https://github.com/rakudo/rakudo/commit/​412307989be6df484710ac7d46bb72d003649594
22:05 raiph (or some arbitrary subset of CPAN)
22:06 lizmat raiph: indeed, that's the idea
22:06 lizmat even to the point that it may not install local copies, e.g. in small systems like a Raspberry Pi or so
22:07 lizmat only download them from a CPAN or Pinto like online repo
22:07 raiph v cool
22:07 FROGGS is that "cool" in sink context?
22:07 raiph heh
22:07 lizmat ice floats
22:12 sorear pinto-like?  "it tends to catch fire in rear-end collisions?"
22:12 FROGGS so-rear-end?
22:12 FROGGS damn, I need to sleep
22:13 lizmat http://search.cpan.org/~thaljef/Pinto/
22:14 sorear FROGGS: https://en.wikipedia.org/wiki​/Ford_Pinto#Fuel_tank_defect
22:15 FROGGS ohh wow
22:17 FROGGS gnight all
22:17 lizmat gnight FROGGS!
22:23 census joined #perl6
22:25 [Coke]
22:27 timotimo i really do need to chop off "./" from the beginning, but i think i can check for the $dir to be "." or "./" and only then chop off ./
22:27 timotimo (may be premature optimisation)
22:29 dalek specs: fc623e9 | (Elizabeth Mattijsen)++ | S99-glossary.pod:
22:29 dalek specs: Added BS
22:29 dalek specs: review: https://github.com/perl6/specs/commit/fc623e9076
22:29 sorear o/ [Coke]
22:30 lizmat sorear: on my first trip to the US in 1980, I was driven around by someone in a Pinto
22:30 timotimo hey [Coke] :)
22:31 lizmat an old model: I still remember having to switch of the contact about 100m before arriving: otherwise the engine would still be dieseling too much
22:34 timotimo [Coke]: jnthn added the Spec modules to the makefile today, so a bunch more tests should pass now :)
22:34 * sorear is too young
22:35 * sorear had to look up dieseling
22:35 timotimo (and i moved a few one-letter methods of FileTests from the #?if parrot piece out into the #? anything part
22:37 timotimo )
22:38 timotimo maybe i'll try to implement the other thingies in the #?if parrot block? maybe it's even easy :3
22:39 woolfy1 left #perl6
22:39 * lizmat is at a loss explaining the 167 tests that are now failing spectest of  the parakudo
22:40 lizmat most likely someone else will have found the reason tomorrow, or inspiration will have come to me
22:40 lizmat so on that thought, gnight #perl6!
22:42 dalek perl6-roast-data: 8c20bb3 | coke++ | / (5 files):
22:42 dalek perl6-roast-data: today (automated commit)
22:42 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/8c20bb3944
22:43 woolfy joined #perl6
22:45 timotimo oh, cool, my file-tests changes made it in already!
22:46 timotimo we are the 88%!
22:50 sorear cool, we made it from 84 to 88... apparently only by reducing the parrakudo pass rate
22:51 masak all is fair in love and smoking statistics.
22:51 * masak makes the sky flash with lightning, and laughs maniacally
22:55 timotimo r: my $d = "/"; say try { eval("my \$x = 'abc'; \$x ~~ m{$d}b{$d}") };
22:55 camelia rakudo b7bbd6: OUTPUT«「b」␤␤»
22:56 timotimo those tests ought to not fail there
22:56 timotimo r: my $d = "/"; my $nok = try { eval("my \$x = 'abc'; \$x ~~ m{$d}d{$d}") };
22:56 camelia rakudo b7bbd6:  ( no output )
22:56 timotimo r: my $d = "/"; my $nok = try { eval("my \$x = 'abc'; \$x ~~ m{$d}d{$d}") }; say $nok;
22:56 camelia rakudo b7bbd6: OUTPUT«False␤»
22:57 timotimo r: my $d = "/"; my $is  = try { eval("my \$x = 'abc'; \$x ~~ s{$d}a{$d}b{$d}; \$x") } eq 'bbc'; say $is;
22:57 camelia rakudo b7bbd6: OUTPUT«False␤»
22:57 timotimo oh, interesting
22:57 timotimo r: my $d = "/"; say "my \$x = 'abc'; \$x ~~ s{$d}a{$d}b{$d}; \$x"
22:57 camelia rakudo b7bbd6: OUTPUT«my $x = 'abc'; $x ~~ s/a/b/; $x␤»
22:57 timotimo r: my $x = 'abc'; $x ~~ s/a/b/; say $x
22:57 camelia rakudo b7bbd6: OUTPUT«bc␤»
22:58 timotimo yeah, that's pretty wrong
22:58 lue joined #perl6
22:58 * timotimo afk's
23:00 jnthn 88% is nice, losing 126 passes in parrakudo less so...
23:08 colomon woah, what?
23:08 jnthn Not sure; will have to take a look tomorrow
23:12 BenGoldberg joined #perl6
23:20 * colomon is spectesting now, but has a guest over, with more possible to come, so time may be super limited....
23:23 masak 'night, #perl6
23:27 [Coke] read_file 'TESTCOOKIE' - sysopen: No such file or directory at eval-client.pl line 19.
23:32 * [Coke] finds the magic invocation to make that work.
23:42 jnthn sleep &
23:46 dmol joined #perl6
23:47 btyler joined #perl6

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo