Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2011-10-19

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:19 Guest4301 joined #perl6
00:19 Guest4301 hi
00:20 Guest4301 :)
00:20 Guest4301 hello
00:20 TimToady we only talk about Perl 6 here
00:20 TimToady if you want to talk about Perl 6, then you're welcome to stay
00:20 TimToady if you want to talk about girls, go somewhere else please
00:21 TimToady or boys :)
00:22 benabik Colored text?
00:24 Guest4301 I don t save
00:24 Guest4301 what you say
00:24 Guest4301 what??
00:25 Guest4301 what??
00:25 agentzh joined #perl6
00:26 TimToady can we arrange a general ban on chatmosphere?  it's not getting any better, it would seem
00:26 diakopter maybe using the wildcard nick ban
00:27 diakopter Guest*
00:27 TimToady something to consider
00:27 TimToady will there every be an real interest in Perl 6 from a chatmosphere personage?
00:27 TimToady *ever
00:28 diakopter thought you said parsonage
00:28 TimToady this one doesn't even seem to be quite coherent
00:29 TimToady I suppose it could be a linguistic issue...
00:33 diakopter that will let them join but their messages will be unbroadcast.
00:33 diakopter er
00:33 diakopter oops, no
00:34 diakopter there we go
00:35 * diakopter goes to test
00:36 chat84537 joined #perl6
00:36 diakopter oh wow
00:37 diakopter the java client doesn't proxy
00:37 chat84537 test
00:38 diakopter I guess that won't block folks who use chatmosphere through the web browser Java client; but it will block Blackberry users I guess.
00:40 shinobicl_ joined #perl6
01:00 shinobicl_ left #perl6
01:00 shinobicl_ joined #perl6
01:00 [Coke] what does unbroadcast do?
01:01 [Coke] we can see them, but not hear them?
01:01 diakopter I think so
01:01 diakopter non-broadcasted, I guess I should've said
01:21 ingy seen TimToady
01:21 aloha TimToady was last seen in #perl6 52 mins 26 seconds ago saying "I suppose it could be a linguistic issue...".
01:21 ingy seen rafl
01:21 aloha rafl was last seen in #perl6 58 days 16 hours ago leaving the channel.
01:24 diakopter ingy: you're speaking at SF PM next week?
01:24 replore_ joined #perl6
01:24 diakopter (I saw the meetup announcment mentioned pegex)
01:26 benabik seen rofl
01:26 aloha Sorry, I haven't seen rofl.
01:31 thou joined #perl6
01:39 ingy diakopter: correct
01:39 diakopter finding parking in the city always troubles me
01:39 ingy I'm at SFO now trying to locate rafl
01:39 ingy diakopter: train?
01:40 diakopter eww
01:40 * diakopter looks on a map
01:41 wolfman2000 joined #perl6
01:46 cyfi joined #perl6
02:16 mkramer joined #perl6
02:20 uasi joined #perl6
02:22 mkramer1 joined #perl6
02:52 envi_ joined #perl6
03:10 ashleydev joined #perl6
03:39 sorear good * #perl6
03:50 uasi joined #perl6
04:01 daniel-s joined #perl6
04:12 snoops joined #perl6
04:14 satyavvd joined #perl6
04:30 Sarten-X joined #perl6
04:37 masak morning, #perl6
04:37 PerlJam greetings masak
04:40 drbean joined #perl6
04:51 sorear o/ masak
04:52 drbean joined #perl6
04:52 masak interesting point. mentions Perl 6 in passing: http://blog.fogus.me/2011/10/18/programming-language-development-the-past-5-years/
04:53 * masak commutes
04:54 saaki joined #perl6
05:17 molaf joined #perl6
05:17 orafu joined #perl6
05:24 moritz mls_: it seems that nqp commit 15be997bb74148d9d85ca35408abf4733cde2c32 breaks exit() in rakudo
05:36 drbean joined #perl6
05:45 odoacre joined #perl6
05:51 dual joined #perl6
05:57 kaleem joined #perl6
06:06 koban joined #perl6
06:06 masak s/point/post/
06:07 wtw joined #perl6
06:15 moritz nqp: pir::exit(0)
06:15 p6eval nqp: OUTPUT«␤current instr.: '_block1000' pc 33 ((file unknown):37) (/tmp/ZPUfsdte6f:1)␤»
06:17 TiMBuS why the heck does par make like, 15mb files?
06:17 TiMBuS .. this is #p6 timbus.
06:39 dalek niecza/serialize: 893588d | sorear++ | / (3 files):
06:39 dalek niecza/serialize: Try to implement {YOU_ARE_HERE} compilation
06:39 dalek niecza/serialize: review: https://github.com/sorear/niecza/commit/893588dddb
06:40 * sorear sleep
06:42 SHODAN joined #perl6
06:47 moritz TiMBuS: because it contains the complete perl installation
06:48 TiMBuS man thats a lotta modules to explicitly exclude :/
06:49 dalek rakudo/nom: d7608c8 | moritz++ | src/Perl6/Metamodel/MROBasedMethodDispatch.pm:
06:49 dalek rakudo/nom: speed up method cache creation. Patch by mls++
06:49 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d7608c85c5
06:49 TiMBuS if it doesnt walk the dependencies why not just make it spit out an installer
06:50 wamba joined #perl6
06:59 wk_ joined #perl6
07:01 pmurias joined #perl6
07:06 pmurias diakopter: re targeting sprixel, doc/nam.pod documents some of the more important opcodes
07:08 TimToady the nom build seems to be broken
07:15 TimToady https://gist.github.com/1297657
07:18 moritz TimToady: I forgot to bump PARROT_REVISION
07:20 pmurias diakopter: meant using niecza
07:23 interested joined #perl6
07:29 dalek rakudo/nom: 36ebf15 | moritz++ | tools/build/NQP_REVISION:
07:29 dalek rakudo/nom: bump NQP_REVISION
07:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/36ebf15dac
07:30 TimToady error: pathspec '2011.09-27-g1dccbcc' did not match any file(s) known to git.
07:30 masak <moritz> TimToady: I forgot to bump PARROT_REVISION
07:31 masak moritz: ...and then you bumped NQP_REVISION...
07:42 mj41 joined #perl6
07:52 diakopter phenny: tell pmurias I was talking about using niecza as a front-end, not targeting niecza.
07:52 phenny diakopter: I'll pass that on when pmurias is around.
07:56 moritz ... to an unpushed commit :(
07:57 dalek nqp: 87a9ffb | moritz++ | src/6model/sixmodelobject.h:
07:57 dalek nqp: typo
07:57 dalek nqp: review: https://github.com/perl6/nqp/commit/87a9ffb5b4
07:57 dalek nqp: c13964d | moritz++ | tools/build/PARROT_REVISION:
07:57 dalek nqp: bump PARROT_REVISION
07:57 dalek nqp: review: https://github.com/perl6/nqp/commit/c13964d4f5
07:57 diakopter s/existant/existent/ in nqp too
07:58 dalek rakudo/nom: 9c3d3d1 | moritz++ | tools/build/NQP_REVISION:
07:58 dalek rakudo/nom: fix NQP_REVISION, moritz--
07:58 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9c3d3d103a
07:59 moritz next attempt
07:59 moritz hopefully now TimToady++ can build nom again
08:00 masak TimToady++ # canary, coalmine
08:00 * moritz is the mine gas
08:03 am0c joined #perl6
08:04 masak you can't build Rome overnight without breaking a few eggs.
08:05 masak s/overnight/in a day/
08:09 moritz egg-breaking mine gas :-)
08:09 * masak cowers and awaits Ultimate Punishment by metaphorbot
08:13 TiMBuS his punishments are like a car hitting you
08:16 wk_ joined #perl6
08:19 masak I pictured him as liking metaphors but not mixed ones. metaphorbot drinks his metaphor coffee black, no milk no sugar.
08:19 diakopter shaken not stirred
08:20 masak ;)
08:22 tadzik good morning
08:22 masak tadzik! \o/
08:23 tadzik masak: seen the non-blockingy fun yet?
08:23 masak no, I haven't!
08:23 tadzik https://gist.github.com/1296356 that reads from multiple connected clients simultaenously, or however you prononce it
08:23 tadzik erm, pronounce
08:24 moritz http://rubymonk.com/
08:24 tadzik so A can stop writing, then B starts, then A continues, just works :)
08:24 moritz cool
08:25 moritz where does .poll come from? rakudo patch?
08:25 tadzik moritz: yep. When I was about to fix Select, I noticed that Parrot Socket has .poll method, I wonder for how long
08:26 tadzik (which uses select() internally, benabik says)
08:28 TiMBuS oh my god
08:29 TiMBuS async IO. the day has come
08:29 * tadzik checks for how long Parrot has .poll
08:30 moritz we should offer a nicer API for that (maybe as a module)
08:31 TiMBuS if only perl6 had a global event loop like that RFC what that asked for one.. asked
08:31 TiMBuS i broke english
08:31 TiMBuS im sorry :(
08:31 masak moritz: nice page. it's always cool to see the state of the art of online evaluators and jQuery-like web apps advancing.
08:31 moritz TiMBuS: don't worry, english recovers very quickly :-)
08:31 moritz TiMBuS: and it was perfectly understandable to me
08:32 moritz even without a global event loop we can offer one that just calls a callback whenever one handle is readable
08:33 TiMBuS can you pass continuations in perl6? it would be quite nice to yield to a global event loop
08:33 tadzik moritz: Still, it would be slightly LTA. The real poll() watches n sockets over t time. Our poll watches only one socket in the given time, so if we wanted to check n sockets, our time either grows in O(n), or we have to reduce the time spent on an individual socket
08:33 TiMBuS like a builtin coro
08:34 moritz tadzik: yes, I guess IO::Select is the better alternative
08:34 tadzik moritz: yeah, but it's horribly broken :)
08:34 moritz what's borken about it?
08:35 tadzik on a pir level or deeper. Segfaults randomly, behaves a bit like .WHY when we had GC bugs which affected it, stuff
08:35 tadzik the Select.can_read sometimes segfaults when fed with IO::Socket
08:36 TiMBuS :I
08:36 tadzik well, its $PIO of course
08:36 tadzik im2ee wrote a code which reproduces it quite reliably
08:36 tadzik as in, when trying for half an hour, it worked only once
08:36 moritz tadzik: .poll was added in 2009 by Tene++
08:37 tadzik nice
08:38 tadzik moritz: I was wondering whether it's really desirable to implement every socket(), poll(), epoll() etc in Parrot. Maybe we could wait for NCI and implement it, or at least prototype it, in Pure Perl 6
08:38 TiMBuS it seems TimToady prefers passing blocks back instead of a continuation :<
08:38 Tene Yeah, I was rather dissatisfied with that.  I planned to add a Select PMC that you could dd arbitrary FHs to for various sorts of polling, but never did.
08:38 moritz gather/take are basically continuations
08:39 dakkar joined #perl6
08:39 Tene It would be a pretty trivial task for anyone who wants to try hacking on Parrot, though.
08:39 moritz it exists now, afaict
08:39 moritz that's what IO::Select warps
08:39 Tene Oh, right, someone did that.
08:40 tadzik yeah, but it acts a bit funny
08:40 tadzik I wanted to try how it works on pir/winxed level, to check if it really isn't Perl 6 problem, but then I found .poll
08:40 TiMBuS yeah moritz but i was thinking, along the lines of:  sub callback { get_twitter_update(); wait_for_reply($this?); process_tweet() }; where the callback sub yields to other events until twitter.com replies
08:41 TiMBuS at which point it can just continue on by calling the continuation
08:41 TiMBuS coro style
08:41 moritz so you formulate it as
08:41 TiMBuS exteeemely handy for any event based application
08:42 moritz gather loop {  sub wait_for_reply($?) { take 1 }; callback() }
08:42 moritz or something along these lines
08:43 moritz tadzik: do you have the code that reproduces the error?
08:43 tadzik moritz: yes, will paste it in a second
08:43 TiMBuS wait would i return that for the event loop to call or something
08:43 tadzik https://gist.github.com/1297750
08:44 tadzik moritz: fire up, telnet to localhost:8080, watch the world explode
08:44 * tadzik afks for a sec
08:45 * moritz needs to recompile rakudo first :(
08:46 mls_ morning!
08:46 moritz morning mls_
08:46 moritz nqp: pir::exit(1)
08:46 p6eval nqp: OUTPUT«␤current instr.: '_block1000' pc 33 ((file unknown):26473805) (/tmp/7zJGcUua1S:1)␤»
08:46 mls_ yes, I saw then while backlogging
08:46 moritz great
08:46 moritz I guess the fix won't be hard for you, so I didn't dig into it
08:47 mls_ I fear the only way to fix that is to copy the "rethrow_skip_nextctx" opcode to nqp ;(
08:47 mls_ there's currently no way in nqp to rethrow an exception
08:48 moritz but do you need to? Can't you just let control flow fall off the end of the CONTROL handler?
08:48 moritz ... in the case of an exit exception, that is
08:48 mls_ and then it'll loop
08:48 moritz why?
08:48 mls_ (wait, no, in nqp reaching the end means that it's handled, right?)
08:49 mls_ so it simply won't exit.
08:49 * moritz still doesn't understand why
08:49 moritz nqp: try { die "foo"; while 1 { } }; say("exiting now")
08:49 p6eval nqp: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 1␤current instr.: 'nqp;Regex;Cursor;FAILGOAL' pc 3863 (src/Regex/Cursor.pir:244)␤»
08:49 moritz nqp: try { pir::die("foo"); while 1 { } }; say("exiting now")
08:49 p6eval nqp: OUTPUT«exiting now␤»
08:50 mls_ hmm, yes, I could set an "exit now" var and redo the exit
08:50 moritz in what way is the the situation with pir::exit not similar to this one?
08:50 mls_ ok, i'll fix it that way
08:50 mls_ (ugly as hell)
08:51 moritz I still don't understand why you can't just let control flow fall off the end of the CONTROL handler
08:51 mls_ and then what?
08:51 moritz and then the program exits.
08:51 mls_ why?
08:52 moritz because it doesn't do anything after the CONTROL handler
08:52 moritz or does it?
08:52 mls_ it returns from "command_eval". who knows what happens next ;)
08:52 moritz hm, ok
08:52 moritz and the exit value wouldn't be preserved
08:53 moritz so yes, needs an "ugly as hell" solution for now, it seems :(
08:53 mls_ but yes, I'll set an "$has_exit" var and redo the pir::exit()
08:53 mls_ some day I need to fix parrot's exception handling. The problem is that messing with handlers will be bad if an exception is resumed
08:54 mls_ (IMHO it should pop all handlers until the handler that caught the exception is reached, and magically restore them if the exception is resumed)
08:55 mls_ (of course perl6 needs completely different semantics)
08:56 Tene mls_: can't you just pir::rethrow or something?
08:56 moritz tadzik: it seems that I don't understand the TCP::Server::Simple code at all. For example in line 19 it calls $!sock.poll, but IO::Select doesn't have a poll method
08:56 moritz Tene: then it would loop, because it's inside a handler
08:56 mls_ no, as it'll get caught again by the same exception handler
08:57 Tene moritz: responding to 01:47 < mls_> there's currently no way in nqp to rethrow an exception
08:57 tadzik moritz: ooh, that's probably because I hacked it to use poll to check if it works, sorry
08:57 mls_ (that's why I added that "rethrow_skipnextctx" opcode)
08:57 tadzik moritz: I'll try to find the original
08:57 Tene mls_: pir's rethrow picks up on the handlers list where it left off; there are tests for this in parrot and everything.
08:58 tadzik moritz: http://pastebin.com/C8EJw0KD that's the one
08:58 Tene unless nqp is doing something pretty broken...
08:58 mj41 joined #perl6
08:58 mls_ hmm, wait, you're right
08:59 mls_ I think I mixed that up with throwing an exception of the same kind
08:59 Tene t/op/exceptions.t
08:59 Tene now, it's ALSO true that parrot's exceptions system needs significant work.
09:00 Tene That's still the next item on my parrot TODO list... that hasn't been touched since about 2009...
09:00 mls_ See the "IMHO..." rant above
09:01 Tene mls_: I rather disagree; exceptionhandlers shouldn't be pushed and popped, they should be indicated through bytecode annotations
09:02 Tene so rather than a single "the exceptionhandler stack", you've got the handlers in scope at whatever context you choose to look at
09:02 Tene that's not quite the same angle you're talking about it at, though, I guess.
09:03 mls_ No, I also thought about that ;)
09:03 Tene Have you read whiteknight's blog posts about parrot's exceptions system, and his redesign plans?
09:03 masak url?
09:04 mls_ (Actually I think the lexpad/info system could also work with annotations)
09:04 Tene http://whiteknight.github.com/
09:04 Tene mls_: sure, but that's a matter of caching
09:05 mls_ caching what?
09:05 Tene I guess that link doesn't go back that far; he must hav eblogged somewhere else before.
09:05 Tene although http://whiteknight.github.com/2011/08/17/sub-first-steps.html is significant
09:06 mls_ Theres an "All Posts" link on the page
09:07 cognominal joined #perl6
09:07 Tene yeah, but the oldest post there is relatively new, and more-recent than I remember his exceptions posts.
09:07 mls_ I read his "Parrot ExceptionHandlers Redux" post
09:07 Tene http://wknight8111.blogspot.com/2010/02/parrots-exceptions-system.html is probably somewhere in the sequence I'm thinking of
09:08 mls_ seems to be orthogonal to your "annotation" idea
09:08 Tene oh, I was looking at "recent posts"
09:09 Mowah_ joined #perl6
09:10 Tene see also, http://whiteknight.github.com/2009/09/14/exception_handlers_done_right.html
09:10 koban left #perl6
09:10 moritz tadzik: two observations: 1) yes, it behaves funny 2) the line  if $fh == $!listener cannot work
09:11 moritz because $!listener is a IO::Socket::INET object
09:11 tadzik may be, I didn't examine im2ee's code really closely
09:11 mberends joined #perl6
09:11 moritz the failure mode does seem to be fairly random
09:11 mls_ exception_handlers_done_right seems to be from a time before the "finalize" opcode was added
09:11 moritz I got a few 'get_pmc_str not implemented' and a segfault now and then
09:14 tadzik I got get_pmc_keyed a number of times
09:14 tadzik did you try with GC disabled maybe?
09:14 tadzik (I didn't)
09:14 moritz no
09:16 mls_ rethrow seems to work. Tene++
09:16 masak Tene: thank you.
09:18 tadzik moritz: w/o GC it fails reliably with No applicable candidates found to dispatch to for 'Numeric'.
09:18 tadzik that's probably connected to the comparison you pointed out as wrong
09:18 moritz it got there once or twice for me
09:19 tadzik and it segfaults with ms2
09:19 tadzik anyway, that looks like a gc bug or so
09:19 moritz it could still be a misuse on the p6 side
09:20 moritz which corrupts memory, and only triggers if the GC accesses it
09:20 tadzik hmm
09:20 dalek nqp: 7baf769 | mls++ | src/HLL/Compiler.pm:
09:20 dalek nqp: Simplify control exception handling by using rethrow, fixes pir::exit (what was I thinking?). Tene++
09:20 dalek nqp: review: https://github.com/perl6/nqp/commit/7baf769357
09:21 masak nom: say Date.new
09:21 p6eval nom 9c3d3d: OUTPUT«Date.new(Int, 1, 1)␤»
09:21 masak o.O
09:21 lumi_ joined #perl6
09:21 masak nom: say DateTime.new
09:21 p6eval nom 9c3d3d: OUTPUT«Use of uninitialized value in string context␤DateTime.new(year => , month => 1, day => 1, hour => 0, minute => 0, second => 0/1)␤»
09:21 masak folks, we have crappy constructors.
09:22 tadzik (:
09:22 masak nom: say Date.now
09:22 p6eval nom 9c3d3d: OUTPUT«Method 'now' not found for invocant of class 'Date'␤  in block <anon> at /tmp/4FKDhTrvy5:1␤  in <anon> at /tmp/4FKDhTrvy5:1␤»
09:22 masak nom: say Date.today
09:22 p6eval nom 9c3d3d: OUTPUT«Date.new(2011, 10, 19)␤»
09:22 masak nom: say Date.today - 31
09:22 p6eval nom 9c3d3d: OUTPUT«Date.new(2011, 9, 18)␤»
09:22 Vlavv` joined #perl6
09:22 masak nom: say DateTime.now
09:22 moritz so what should DateTime.new() return? same as DateTime.now ?
09:22 p6eval nom 9c3d3d: OUTPUT«DateTime.new(year => 2011, month => 10, day => 19, hour => 9, minute => 22, second => 54, timezone => $*TZ)␤»
09:22 masak moritz: maybe.
09:23 masak moritz: the only other option I can see is Unix epoch.
09:23 jnthn moritz: Busy now but any bt for the segfault would be helpful; I'll have tuits again pretty soon :)
09:23 masak nom: say DateTime.now - 31
09:23 p6eval nom 9c3d3d: OUTPUT«No applicable candidates found to dispatch to for 'Numeric'. Available candidates are:␤:(Mu, Mu %_)␤␤  in method Numeric at src/gen/CORE.setting:604␤  in sub infix:<-> at src/gen/CORE.setting:1959␤  in block <anon> at /tmp/q2XLfTZvZN:1␤  in <anon> at /tmp/q2XLfTZvZN:1…
09:25 moritz jnthn: captured a bt...
09:26 jnthn moritz: Thanks.
09:26 * jnthn will likely have Mon and Tue for Perl 6 stuff
09:26 moritz jnthn: https://gist.github.com/1297836
09:26 tadzik #2  0x00007ffff05de1ab in Parrot_Select_nci_can_read ()
09:26 tadzik eek
09:29 moritz tadzik: I have a few cosmetic improvements to IO::Select... do you want a pull request, or give me a commit bit?
09:29 tadzik moritz: you now have a commit bit
09:29 moritz tadzik: thank
09:29 moritz OOHHH
09:29 moritz nqp::unbox_i($mode)
09:29 moritz missing decontainerizer, no?
09:29 jnthn unbox will decontainerize
09:29 jnthn It's only getattr and bindattr that do not
09:29 tadzik *relief*, I'm using it all the time :)
09:29 moritz ok
09:30 * moritz wonders if we should have getattrdecont and bindattrdecont
09:31 tadzik neighbours, goddamnit. Sure, 9 AM is a perfect time to drill your walls for the next 3 hours and more
09:31 tadzik sure, when someone sits at home instead of sitting in an office, he's slacking off and deserves it
09:31 tadzik shame he's over me, so I can't flood him
09:32 miso2217_ joined #perl6
09:32 moritz cosmetic changes pushed
09:33 tadzik cool
09:33 daxim joined #perl6
09:33 moritz hm, they require a new-ish rakudo
09:36 mls_ (dumb question: shouldn't select.pmc have a mark function?)
09:36 tadzik mark, as in GC mark?
09:36 mls_ yes
09:36 moritz mls_: doesn't auto_attrs provide that automatically?
09:36 mls_ I don't know, that's why I wrote "dumb"
09:37 moritz lots osf PMCs use auto_attrs *and* provide mark()
09:38 moritz *of
09:38 moritz so it's probably not such a dumb question after all :-)
09:40 mls_ (I asked cause the backtrace showed a "FixedIntegerArray", but fd_map is supposed to be a Hash)
09:48 moritz select.pmc line 228, why a VTABLE_get_pmc_keyed_int on a hash?
09:49 jaldhar joined #perl6
09:50 mls_ mortz: what's wrong with that?
09:50 mls_ moritz:
09:50 moritz mls_: don't you usually look up hashes by string, not int?
09:50 mls_ depends on the hash
09:51 mls_ (hmm, they should indeed turn it into an integer keyed hash for speed)
09:53 mls_ i.e. VTABLE_set_integer_native(INTERP, fd_map, Hash_key_type_int);
09:54 mls_ add that to select.pms's init() function
09:56 moritz let me see if I understood the select.pmc code (a bit at least)
09:56 moritz fd_map is a hash keyed by file handle number
09:56 moritz and as values has some PMC payload
09:57 mls_ seems so
09:57 moritz and if you call can_read, the payloads of all those things are returned where the corresponding file handle can read something
09:57 mls_ yes
09:57 cyri_ joined #perl6
09:57 tadzik random thought: if we ever wanted poll(), epoll() or whatever, the majority of select.pmc code will stay, no?
09:58 mls_ the interface would probably stay the same, yes
09:58 moritz so IO::Select should call $select_pmc.update($fh, $perl6_handle, $mode)
09:58 moritz what it currently does with $!iter doesn't make sense to me
09:58 tadzik hrm
09:59 moritz it's not wrong, mind you
09:59 moritz it's just an unnecessary level of redirection
09:59 tadzik Select pmc tests use $P1.'update'($P3, $P9, 5)
10:00 tadzik $P3 = new ['FileHandle'], $P9 = new 'String'
10:00 moritz but $P9 doesn't need to be a string
10:00 tadzik $!iter in IO::Select is just a random unique identifier
10:00 moritz you can just pass the Perl 6 level file handle object to update()
10:01 tadzik oh, cool
10:01 * moritz changes and tests
10:01 tadzik that'd simplify lots of stuff
10:02 moritz even more than you think
10:02 tadzik I think it's exactly as I think :)
10:02 moritz it maeks $!pmc.can_{read,write} return RPAs of Perl 6 objects
10:02 moritz which automagically get turned into Parcels
10:03 moritz so get_handles can go away completely
10:03 tadzik oh, I didn't know they'd automagically convert
10:03 tadzik then yes, it simplifies more than I think
10:03 * moritz slaughters tadzik++'s code
10:03 mls_ poor code...
10:03 tadzik fair enough :)
10:04 mls_ (I meant it's poor because it gets slaughtered, not that you wrode bad code)
10:04 mls_ wrote
10:04 moritz tadzik: return values from method calls automatically go through pir::perl6ize_type
10:04 tadzik I just subconsciously assumed, that the hash goes String->Filehandle
10:04 moritz and that maps RPAs to Parcals
10:05 tadzik hence the black arts in the code
10:05 moritz tadzik: me too at first
10:05 moritz anyway, slaughterfest pushed :-)
10:05 tadzik :)
10:06 mls_ moritz: do you want to commit the two parrot changes (- add mark, set hash key type)?
10:06 tadzik the comments should go away as well now
10:06 tadzik I'll remove them
10:06 packetknife joined #perl6
10:07 moritz mls_: no, I'm not comfortable enough with the code yet. Feel free to do it if you feel comfortable though
10:07 mls_ but adding a mark function fixed the segfault?
10:07 mls_ or do you run with no GC?
10:07 moritz tadzik: and sure enough, my next two test runs with im2ee++'s code resulted in "No applicable candidates found to dispatch to for 'infix:<==>'."
10:07 tadzik great
10:08 moritz mls_: it seems the segfault is gone one way or another :-)
10:08 tadzik I hate those segfault, hiding in the bushes
10:08 moritz hm, not gone :(
10:08 tadzik when you hack together, they're gone, but just wait til you're alone and they catch you and bust your throat wide open
10:08 moritz just more seldom now
10:08 tadzik less code, less gc :P
10:08 moritz :-)
10:09 moritz less code, fewer bugs on the p6 side
10:09 tadzik yep
10:11 wk_ joined #perl6
10:11 moritz wow, a for loop produces 7 routines in the stack trace
10:11 moritz sub eager, 2x method eager, gimme, 3x method reify
10:12 masak tadzik: after that description of murderous segfaults, I'm afraid to sleep at night.
10:15 tadzik masak: don't worry, they're harmless when you're not hacking
10:15 tadzik moritz: now that's horrifying
10:18 moritz nom: for 1 { die }
10:18 p6eval nom 9c3d3d: OUTPUT«␤  in block <anon> at /tmp/br68xCgMZ6:1␤  in method reify at src/gen/CORE.setting:4045␤  in method reify at src/gen/CORE.setting:3952␤  in method reify at src/gen/CORE.setting:3952␤  in method gimme at src/gen/CORE.setting:4309␤  in method eager at src/gen/CORE.settin…
10:20 tadzik hah
10:39 grondilu joined #perl6
10:41 kensanata joined #perl6
10:42 grondilu perl6: .say for (1, { [ 0, @^x Z+ @x, 0 ] } ... *)[^10] # http://perlgeek.de/blog-en/perl-6/pascal-triangle.writeback
10:42 p6eval niecza v10-58-gc851cf8: OUTPUT«1␤1 1␤1 2 1␤1 3 3 1␤1 4 6 4 1␤1 5 10 10 5 1␤1 6 15 20 15 6 1␤1 7 21 35 35 21 7 1␤1 8 28 56 70 56 28 8 1␤1 9 36 84 126 126 84 36 9 1␤»
10:42 p6eval ..rakudo 9c3d3d: OUTPUT«1␤1␤1␤1␤2␤1␤1␤3␤3␤1␤»
10:42 p6eval ..pugs b927740: OUTPUT«*** ␤    Unexpected "[^"␤    at /tmp/ff6GKq3CiA line 1, column 44␤»
10:42 grondilu rakudo flattens the lisst :(
10:43 grondilu perl6: .say for (1, { eager [ 0, @^x Z+ @x, 0 ] } ... *)[^10] # http://perlgeek.de/blog-en/perl-6/pascal-triangle.writeback
10:43 p6eval rakudo 9c3d3d: OUTPUT«1␤1 1␤1 2 1␤1 3 3 1␤1 4 6 4 1␤1 5 10 10 5 1␤1 6 15 20 15 6 1␤1 7 21 35 35 21 7 1␤1 8 28 56 70 56 28 8 1␤1 9 36 84 126 126 84 36 9 1␤»
10:43 p6eval ..pugs b927740: OUTPUT«*** ␤    Unexpected "[^"␤    at /tmp/EQz0YdkWoQ line 1, column 50␤»
10:43 p6eval ..niecza v10-58-gc851cf8: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Undeclared routine:â�¤     'eager' used at line 1â�¤â�¤â�¤Unhandled Exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting line 766 (CORE die @ 2) â�¤  at /home/p6eval/niecza/src/STD.pm6 line 1136 (STD P6.comp_unit @ 36) …
10:43 tadzik interesting
10:44 grondilu niecza doesn't know eager ??
10:49 tadzik it would seem so
10:49 grondilu nom:  .perl.say for (1, {[$_, $_]} ... *)[^4]
10:49 p6eval nom 9c3d3d: OUTPUT«1␤1␤1␤[1, 1]␤»
10:49 grondilu nom:  .perl.say for (1, {eager [$_, $_]} ... *)[^4]
10:49 p6eval nom 9c3d3d: OUTPUT«1␤[1, 1]␤[[1, 1], [1, 1]]␤[[[1, 1], [1, 1]], [[1, 1], [1, 1]]]␤»
10:49 grondilu it should not flatten, should it?
10:51 tadzik I don't know
11:06 masak it feels really odd that there should be a difference there.
11:07 masak tadzik: but... but... what if I hack in my sleep? o.O
11:07 grondilu masak: +1  When you put brackets in a list, you certainly don't expect them to be flattened.
11:08 masak agreed.
11:09 grondilu moreover, that's how LW intended it when he wrote his Pascal's triangle one-liner.
11:11 masak "JavaScript is not interpreted Java. Java is interpreted Java." -- (Douglas Crockford)++
11:12 masak grondilu: I had to think several seconds before realizing who this "LW" fellow is :)
11:12 masak around here, he seems to go under the names TimToady (or TiMBuS if you mis-tab)
11:12 masak or $Larry.
11:13 grondilu ok, noted
11:13 masak heh, not correcting you -- just making fun of my own confusion ;)
11:18 grondilu actually I don't quite understand this relationship between laziness and flattyness.  Why lazy list context should imply flattening?
11:19 masak perl6: say "there is more than one way to do it".words.map(*.substr(0,1)).join.subst("wtdi", "ady").trans("t" => "T")
11:19 p6eval niecza v10-58-gc851cf8: OUTPUT«␤Unhandled Exception: Unable to resolve method trans in class Str␤  at /tmp/jPPsLbfmUK line 1 (MAIN mainline @ 5) ␤  at /home/p6eval/niecza/lib/CORE.setting line 2176 (CORE C1040_ANON @ 2) ␤  at /home/p6eval/niecza/lib/CORE.setting line 2177 (CORE module-C…
11:19 p6eval ..pugs b927740: OUTPUT«*** No such method in class Str: "&words"␤    at /tmp/5MtMHgxETb line 1, column 5 - line 2, column 1␤»
11:19 p6eval ..rakudo 9c3d3d: OUTPUT«Method 'trans' not found for invocant of class 'Str'␤  in block <anon> at /tmp/aivvGh6elP:1␤  in <anon> at /tmp/aivvGh6elP:1␤»
11:20 masak b: say "there is more than one way to do it".words.map(*.substr(0,1)).join.subst("wtdi", "ady").trans("t" => "T")
11:20 p6eval b 1b7dd1: OUTPUT«TimToady␤»
11:20 masak grondilu: does lazy list context imply flattening?
11:20 masak that's news to me.
11:21 grondilu that's how I explain the case above, anyway
11:22 masak but the above case is wrong...
11:25 amkrankruleuen joined #perl6
11:33 envi_ joined #perl6
11:34 whiteknight joined #perl6
11:35 moritz note that we already have a ticket for  gather { take [...] } flattening the array
11:38 Psyche^ joined #perl6
11:39 masak yeah.
11:40 mls_ back from lunch
11:48 grondilu About lazyness and flattening, I was confused by a paragraph in S09:  « All list contexts are lazy by default.  They might still flatten eventually, but only when forced to.  You have to use the "eager" list operator to get a non-lazy list context, and you have to use the "flat" operator to guarantee flattening.  However, such context is generally provided by the eventual destination anyway, so you don't usually need to be explicit.
11:48 grondilu »
11:48 grondilu It seem to mix both concepts in a weird way
11:49 moritz it seems to me that .flat isn't eager
11:49 moritz so they are distinct
11:59 grondilu is there an opposite of 'flat', anyway?
12:00 replore_ joined #perl6
12:00 moritz yes, it's called .tree
12:00 moritz and is NYI in rakudo :(
12:03 grondilu perl6:  say <2/6> # testing Rat literals
12:03 p6eval pugs b927740, rakudo 9c3d3d, niecza v10-58-gc851cf8: OUTPUT«2/6␤»
12:06 moritz masak: http://www.andymcm.com/csharpfaq.htm#6.8 somehow that reminded me of your p6l mail
12:06 * masak peruses
12:07 masak ah, that p6l mail. :)
12:07 masak I've had some further thoughts since my last email in that thread.
12:08 masak most notably, it only makes sense to enforce constness when the relation between class and attribute is that between a container and a containee.
12:08 masak and that's by no means a guarantee.
12:08 moritz that's a strangely consistent insight :-)
12:08 masak so for aggregate/container-style classes, automatic constness would be great. for more graph-like object structures, it would suck.
12:09 masak and the difference seems to sit very much in design-space, not in code-space.
12:10 masak even in spoken language, we don't differentiate between container has-ness ("I have a liver") and graph-y has-ness ("I have two sisters")
12:11 bluescreen10 joined #perl6
12:12 mls_ ok, I pushed the select.pmc change
12:12 moritz right, "has" can mean possession or association (or many other things, I guess)
12:12 moritz mls_++
12:16 mls_ I even added a test case ;)
12:18 masak moritz: which tells us that preemtive cloning probably shouldn't be a core language feature after all.
12:19 moritz masak: correct. I arrived by the same conclusion with the example of DB handles as attributes, but I wasn't able to summarize it so well
12:20 cognominal I have problem to follow "has" meanings :)
12:21 masak now you know why :P
12:22 moritz masak: now the question arises if there are cases that can't be clearly classified as either/or
12:22 pmurias joined #perl6
12:22 pmurias diakopter: that's what i meant
12:22 phenny pmurias: 07:52Z <diakopter> tell pmurias I was talking about using niecza as a front-end, not targeting niecza.
12:24 masak moritz: well, "container-y" is pretty clearly defined. I'm not sure "graph-y" is.
12:24 masak if you define it as "everything else", there's no third option ;)
12:25 moritz well, it could partially container-y
12:25 moritz that's my question at least, if there are "partially container-y" cases
12:26 pmurias diakopter: i assume you will want to use make sprixel interpret the opcodes rather then take the AST itself and do the normalisation by yourself
12:31 DarthGandalf joined #perl6
12:31 DarthGandalf joined #perl6
12:34 masak moritz: a db handle could definitely be container-y. it's not so much about the type of the object as it is about the exclusiveness of the 'has' relation.
12:35 masak (...so I should have said "a 'has $.db_handle' relation could definitely be container-y") :)
12:36 moritz a db handle is also something that can't be cloned in the general case
12:37 masak right. probably won't survive a serialization winter either.
12:37 masak that's why the example felt familiar ;)
12:38 moritz a db handle is also something that is inherently mutable
12:38 moritz so it doesn't make sense to expose it to the outside and have it write-protected
12:42 masak so I'm finally in complete and utter accord with sorear: this is an intrinsically hard problem. there's no slap-on band-aid solution.
12:44 moritz interesting how it sometimes takes us mere mortals several days/weeks/months of pondering to arrive at such conclusions :-)
12:49 masak yeah. not many things beat Already Having Studied Stuff™.
12:49 masak and sorear++ seems to have done a fair bit of that.
12:50 moritz aye
12:51 colomon studying++
12:54 masak I found this: http://javascript.crockford.com/tdop/tdop.html -- might be interesting for people who like parsing and defining languages.
12:54 masak I haven't read far enough to realize how similar its techniques are to Perl 6's optable parsing.
12:55 moritz I think mberends++ was carrying a printout of that thing around when we last met :-)
12:59 masak heh :)
13:01 masak no, it's fairly different to the shift-reduce that Perl 6's optable parser uses.
13:02 masak both appear to be non-backtracking, though.
13:03 moritz backtracking is a violation of the one-pass parsing rule, if you're strict
13:04 masak right, and the rationale for that rule is "it's the way humans read code".
13:05 tokuhiro_ joined #perl6
13:05 moritz and also "we have too bad experience with the other alternative" :-)
13:05 masak another good reason to drop backtracking as you graduate from regex to grammar/language is that it has really bad performance characteristics ;)
13:06 im2ee joined #perl6
13:06 moritz aye
13:06 im2ee Hello! :)
13:06 phenny im2ee: 18 Oct 21:42Z <tadzik> tell im2ee https://gist.github.com/1296356 is the best I've got, works with rakudo bed705e
13:06 im2ee thanks phenny :)
13:08 moritz we've also greatly simplified the IO::Select code, and found a bug in your TCP server code :-)
13:12 masak im2ee: hallo! :)
13:14 djanatyn joined #perl6
13:17 pnu joined #perl6
13:19 cognominal submitted a bug :  https://rt.perl.org/rt3//Public/Bug/Display.html?id=101700
13:20 cognominal Apparently garbled by gmail :(
13:20 moritz cognominal: that happened a few times to me
13:20 cognominal readable anyway
13:21 moritz cognominal: the problem is that you don't return anything from the Q:PIR block (not assigning to %r), but you're using it as the last statement in a block, so it needs a return value
13:21 moritz if Q:PIR was a specced feature, I'd say that it needs a better error message
13:21 moritz as is, I'd just say "Q:PIR isn't meant for general consumption. Bad luck."
13:22 awwaiid TiMBuS, if you are interested in coro like stuff you might check in with nine, who is attacking it at the parrot level to start with
13:23 cognominal I would say, because it is not a specced feature it need a better error message or silently return some value.
13:24 pnu joined #perl6
13:25 moritz just put a  1; after it
13:26 moritz seems to be the same bug as RT #101562
13:26 Holy_Cow joined #perl6
13:28 skangas joined #perl6
13:30 DarthGandalf joined #perl6
13:31 benabik joined #perl6
13:33 moritz cognominal: anyway, thanks for your golfing attempts, it made me realize that the problem isn't related to --doc at all
13:34 localhost joined #perl6
13:37 djanatyn joined #perl6
13:38 masak the ternary operator C<?? !!> is like a golfed switch statement for Bool values.
13:40 cognominal masak: more like an huffmanization because all golfing is not an huffmanization
13:41 cognominal *not all
13:46 finanalyst joined #perl6
13:47 masak indeed. "a huffmanized switch" statement catches more exactly what it's about.
13:48 im2ee masak, how are You? :)
13:51 masak im2ee: I'm insanely busy, but (luckily) very healthy and happy and not too tired. :)
13:51 masak im2ee: any You, sir?
13:52 finanalyst hi. just updated rakudo. Process took so long at ./perl6 stage that I thought computer had hung
13:53 finanalyst could a warning be inserted to say it will be a long time???
13:53 im2ee masak, I'm busy too, i don't have enough time for p6.
13:56 masak :/
13:56 masak im2ee: sometimes that happens.
13:57 thou joined #perl6
13:57 masak finanalyst: do you mean during 'make'? usually for me, building the 'perl6' executable isn't the heavy step.
13:58 finanalyst masak: hello and yes during 'make'
13:58 finanalyst in the past the process did not stop for long at any one step. this time there was a very significant delay
13:59 finanalyst so much delay, that I aborted the process, deleted the rakudo directory, cloned and started again
13:59 benabik masak: I think building the setting is the first step that starts with ./perl6
13:59 finanalyst that's right
14:00 finanalyst hence I am suggesting echoing a warning before the step to indicate it will be slow
14:03 benabik Would it be noticed if it was before the ./perl6?  That's a particularly long command line.
14:03 toebu joined #perl6
14:04 finanalyst if the step was very slow, most people would look to see where the step started in order to report a bug
14:04 finanalyst if the notification was in CAPITALS it should be noticed
14:04 benabik Point.
14:05 masak the step is kinda slow for people with enough memory. it's prohibitively slow for people with too little memory.
14:05 masak bonus points for making the warning be conditioned on how much free memory the user has.
14:05 benabik I thought I had made it hang during GSoC.
14:05 benabik masak: Buh.
14:05 masak but maybe that's too brittle and platform-dependent.
14:06 finanalyst could the step be broken in to pieces?
14:06 finanalyst then some progress would be noticed
14:09 benabik I'd suggest building it in parts and using pbc_merge, but I somehow doubt that that works well with the serialization context.
14:09 Holy_Cow left #perl6
14:10 mls_ (also, pbc_merge drops all code annotations)
14:11 jnthn No, it can't be easily broken into parts.
14:12 masak finanalyst, benabik: it might come as no surprise at all to you that breaking that compilation step into pieces has been suggested many, many times. :)
14:12 benabik masak: Nope.  :-D
14:12 jnthn Plus it's a bandaid
14:12 masak that, too.
14:12 jnthn We should spend time on solving the real issues.
14:12 benabik Not really.  something broken into parts can be parallelized.
14:12 masak the setting *is* one single scope and needs to be compiled as one.
14:13 masak it's fundamentally not breakable into pieces.
14:13 benabik If it can be done sanely, it's a win.  I'm not taking bets on if it can be done that way though.  :-D
14:13 benabik mls_: That's LTA.  The Packfile PMCs seem pretty full featured.  I wonder if a more sane pbc_merge could be made with them...
14:13 masak benabik: it's like saying "I'd be finishing this book much faster if I just read all the pages in parallel".
14:14 drbean joined #perl6
14:15 benabik masak: I'm just saying that breaking it into pieces is a permanent win, not a bandaid.  I'm not saying that it's simple.  :-)
14:16 mj41 joined #perl6
14:16 Trashlord joined #perl6
14:17 masak benabik: and I'm just saying that it's not about simple/not simple, it's about what the compilation process allows in the first place.
14:17 masak you can't make sensible decisions about a lexical scope until you've compiled all of it.
14:18 masak I might be wrong about that -- there might be some insanely cool unification algorithm that I don't see -- but I doubt it.
14:18 masak and by the time we're talking about something like that, we're talking about a fairly expensive band-aid.
14:19 benabik I think you'll find me quite unwilling to declare something impossible.  :-D  People come up with stupid and clever things all the time.  Perhaps instead of "not simple" I should have said "worth writing a paper on".
14:21 benabik Although I think the problem of compiling a scope in pieces is similar to bounded serialization.  Need to compile something that leave holes where the other pieces need to go.
14:21 envi_ joined #perl6
14:22 TimToady sounds like macros...
14:22 cognominal a work for masak? :)
14:23 jnthn benabik: Er, given the entire premise of bounded serialization is that the boundary is a compliation unit, I really don't think so.
14:24 jnthn Or at least, that's how I've always had it.
14:25 bluescreen10 joined #perl6
14:26 benabik Is there something that locks a lexical scope down that I'm unaware of?  Something that makes adding to it impossible?
14:26 masak you mean apart from the fact that they're in a sense immutable?
14:26 benabik Yeah.
14:26 TimToady finishing compiling a block makes it immutable
14:27 TimToady except for where CHECK needs to cheat to do optimizing/linking
14:27 masak then that's your insurmountable limitation.
14:28 [Coke] jnthn: nice trick would be to have a pre-compiled setting.
14:28 [Coke] need more from the VM before that can happen, I think.
14:28 benabik It would be nice if PBC was a more stable format.
14:28 TimToady the setting is allowed to cheat, as long as it looks simple from the inside
14:28 * masak afk
14:28 * tadzik ak
14:30 benabik What I'm discussing is somewhat mid-compilation…  But I think this is a long drawn out discussion of theoretical compilation that it seems that people aren't interested in.  I'll file it in the mental drawer labeled "research for another day"
14:31 * benabik is a CS grad student with a focus in compilers, so is very unwilling to accept "impossible", only "insufficiently researched."
14:33 aindilis joined #perl6
14:33 drbean joined #perl6
14:45 frettled It is impossible to solve the travelling salesman problem within P with a compiler.
14:45 * frettled flexes his impossible mental muscles.  ;)
14:46 benabik frettled: Only if P != NP.  If you can prove that, there's a few people who want to talk to you.
14:47 benabik :-D
14:47 frettled benabik: feel free to disprove that statement :D
14:48 benabik frettled: Well, that would mean I could prove P = NP…  In which case, I wouldn't have such a problem figuring out my thesis.  :-D
14:48 [Coke] not as long as you could fold it properly.
14:51 cognominal perl has solved that problem long ago
14:51 cognominal $ perl -E 'say P == NP'
14:51 cognominal 1
14:51 cognominal :)
14:51 frettled cognominal: damn, that was quick
14:52 frettled Or, in expanded parlance: Problem equals no problem.
14:52 frettled Problem is no problem.
14:53 [Coke] nom: say P==NP
14:53 p6eval nom 9c3d3d: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&P' called (line 1)␤Undefined routine '&NP' called (line 1)␤»
14:56 kaare_ joined #perl6
14:56 cognominal call that a regression :)
14:57 frettled or a problem
14:59 sorear good * #perl6
14:59 sorear cognominal: bareword literals need to stay dead, tyvm.
15:02 colomon \o
15:25 cyfi joined #perl6
15:30 cyfi joined #perl6
15:31 smash joined #perl6
15:32 smash hello everyone
15:34 [Coke] hola, smahs
15:34 [Coke] *smash
15:35 drbean joined #perl6
15:41 dual joined #perl6
15:43 sorear o/ smash
15:44 Spaceghost joined #perl6
15:49 Spaceghost left #perl6
15:54 * jnthn back from $dayjob
15:57 gfldex Method 'nqpattr' not found for invocant of class 'Undef' in <anon> at src/stage2/QRegex.nqp:493 in CAPHASH at src/stage2/QRegex.nqp:492 in method MATCH at src/gen/CORE.setting:6540
15:57 gfldex what could that mean?
15:57 gfldex ohh, and that used to work a few days ago
15:57 mkramer1 left #perl6
15:58 gfldex rule alias {
15:58 gfldex <name> \h* '=' \h* <name> { %aliases{$/<name>[0].Str} = $/<name>[1].Str }
15:58 gfldex }
15:58 gfldex that's the line triggering it
16:11 MayDaniel joined #perl6
16:11 tlhiv_work joined #perl6
16:12 tlhiv_work left #perl6
16:17 dalek niecza/serialize: afac2df | sorear++ | lib/Kernel.cs:
16:17 dalek niecza/serialize: Implement multi-sub compilation
16:17 dalek niecza/serialize: review: https://github.com/sorear/niecza/commit/afac2df10e
16:36 mikemol joined #perl6
16:39 dalek niecza/serialize: b292bdd | sorear++ | lib/CodeGen.cs:
16:39 dalek niecza/serialize: Add missing unit_set_bottom
16:39 dalek niecza/serialize: review: https://github.com/sorear/niecza/commit/b292bdd6c5
16:39 sorear \o/ 'make' now completes successfully
16:39 sorear generating obj/CORE.dll and obj/CORE.ser
16:45 envi_ joined #perl6
16:46 kaleem joined #perl6
16:55 masak sorear: \o/
17:02 tadzik phasers in...?
17:02 colomon 28 mins?
17:03 moritz I will miss #phasers today
17:07 donri joined #perl6
17:08 sorear colomon: yes
17:16 whiteknight joined #perl6
17:16 im2ee joined #perl6
17:22 drbean joined #perl6
17:23 [Coke] masak: /who/ is going to discuss your grant, as it's not the grants comittee...
17:23 [Coke] karen and the board?
17:27 * masak checks
17:27 masak I hope I'm allowed to discuss this... :)
17:28 [Coke] masak: you can tell me privately if you have concerns. I /am/ on the GC, if that makes you feel better. ;)
17:28 masak nodnod
17:28 masak something called the "TPF Board", apparently.
17:31 pmichaud normally Karen initiates a discussion among the TPF board for Hague grants
17:31 masak ah.
17:32 pmichaud when a consensus opinion is reached, they award (or decline) the grant
17:32 * pmichaud reads some backscroll for context
17:33 jnthn pmichaud: Also see http://irclog.perlgeek.de/perl6/2011-10-19#i_4588897 :)
17:33 [Coke] pmichaud: I will now imagine you speaking with the voice of Patrick from Spongebob for the next hour or so!
17:34 pmichaud jnthn: I think I need a bit more detail than that line gives.
17:35 jnthn pmichaud: There's an example that triggers it down below
17:35 pmichaud I see the "alias" rule.
17:35 pmichaud I don't see the text being matched.
17:35 jnthn pmichaud: From what I can see, CAPHASH uses nqpattr
17:36 pmichaud sure, CAPHASH uses nqpattr.
17:36 jnthn pmichaud: Which I'm guessing doesn't work out on Perl 6 subs, but now I look closer...that reasoning looks adrift as it was trying to do it on Undef.
17:36 jnthn gfldex: Got the input that pattern was being matched against?
17:37 pmichaud I'm guessing that something is expecting $!regexsub to be set
17:37 MayDaniel joined #perl6
17:37 pmichaud ah, I know what it is.
17:37 pmichaud Hrm.
17:38 pmichaud it's trying to build the slots for $/ and the current match object doesn't have $!regexsub set.
17:38 pmichaud okay, I can fix.
17:38 jnthn yay :)
17:38 [Coke] pmichaud: how goes tuits?
17:39 pmichaud unpredictably.
17:40 pmichaud I thought I would have a decent set of tuits over the last week but they never materialized  (changes in chemotherapy scheduling and additional non-perl6 events)
17:46 ruoso joined #perl6
17:47 hillu joined #perl6
17:47 renormalist joined #perl6
17:48 carlin joined #perl6
17:48 sunnavy joined #perl6
17:50 [Coke] I hope everything goes well in the chemo department.
17:52 sorear niecza: if 1 { LEAVE { say 'x' }; die }; CATCH { say 'y' }
17:52 p6eval niecza v10-58-gc851cf8: OUTPUT«y␤x␤␤Unhandled Exception: Died␤  at  line 0 (ExitRunloop @ 0) ␤  at /tmp/jtgfEOHPJx line 1 (MAIN C1_ANON @ 2) ␤  at /tmp/jtgfEOHPJx line 1 (MAIN mainline @ 1) ␤  at /home/p6eval/niecza/lib/CORE.setting line 2176 (CORE C1040_ANON @ 2) ␤  at /home/p6eval/nie…
17:54 pmichaud (chemo)  we hope so also.  :)
18:01 PacoLinux joined #perl6
18:01 mj41 joined #perl6
18:02 pnu joined #perl6
18:07 gfldex jnthn: Mega = Megacyte\n
18:08 GlitchMr joined #perl6
18:08 gfldex jnthn: i would like to point out that there seams to be a problem with arithmetics on linux 32bit that may even come from parrot right now. I will boot in a bit and check if the bug pops up on 64bit too.
18:08 dalek nqp: d2d759f | pmichaud++ | src/QRegex/Cursor.nqp:
18:08 dalek nqp: Restore old meaning of $!regexsub to support intra-regex usage of $/.
18:08 dalek nqp: Add $!restart attribute to cursors to flag/control restart ability.
18:08 dalek nqp: review: https://github.com/perl6/nqp/commit/d2d759f967
18:09 benabik gfldex: What's the arithmetic bug?
18:10 pmichaud that latest nqp commit should fix the regex bug; I'm re-spectesting rakudo against it now.
18:10 gfldex benabik: my Rat $sum = 0.Rat; $sum += 24537130 * 3.37; $sum += 5678 * 4.28; say $sum;
18:10 pmichaud I don't have a good test case for the regex bug
18:10 gfldex gives: -3184915.98
18:10 gfldex and that's a little small :)
18:10 gfldex gcc (Debian 4.6.1-15) 4.6.1
18:11 pmichaud nom: say 5678 * 4.28
18:11 p6eval nom 9c3d3d: OUTPUT«24301.84␤»
18:11 pmichaud nom: say 24537130 * 3.37
18:11 p6eval nom 9c3d3d: OUTPUT«82690128.1␤»
18:11 gfldex i had other problems before with the new GCC that got fixed already
18:11 pmichaud yeah, I'm guessing a 32-bit overflow in Rat calculations
18:11 gfldex is there a test box for parrot with 32bit?
18:12 benabik Rats are parrot int over parrot in?
18:12 jnthn yeah
18:12 benabik (Or P6 type that stores a pint.)
18:12 pmichaud right now all Int calculations are done in 'int' precision
18:12 pmichaud I'm going to fix that.
18:12 benabik Oh, I have 64b box here.  Bleh.
18:12 pmichaud (autopromote to Num/num)
18:13 jnthn I plan to deal with bigint support in the near future, now my tuit supply is recovering :)
18:14 benabik nom: say 2 ** 31 -1
18:14 p6eval nom 9c3d3d: OUTPUT«2147483647␤»
18:14 colomon jnthn++
18:14 benabik nom: say 826901281 > 2147483647
18:15 p6eval nom 9c3d3d: OUTPUT«Bool::False␤»
18:15 benabik nom: say 8269012810 > 2147483647
18:15 p6eval nom 9c3d3d: OUTPUT«Bool::True␤»
18:15 pmichaud actually, it'll be * 100  I suspect
18:15 pmichaud 82690128100
18:15 benabik 82690128.1 * 100 = 8269012810, which is the second case I tried.  :-)
18:15 pmichaud although the code might be using lcm
18:15 pmichaud ahhh
18:15 pmichaud off-by-one-decimal error for me
18:16 carlin joined #perl6
18:24 pmichaud gfldex: let me know if feb9401 fixes your regex bug.
18:25 pmichaud (just pushed)
18:25 dalek rakudo/nom: feb9401 | pmichaud++ | tools/build/NQP_REVISION:
18:25 dalek rakudo/nom: Bump NQP_REVISION to get CAPSHASH/$!regexsub fix from nqp.
18:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/feb94015a0
18:25 gfldex pmichaud: will do
18:25 pmichaud if not, I need a better test case to work with.
18:29 pmichaud what sorts of bad things happen if I remove the "returns Int" from multi infix:<+>(Int:D \$a, Int:D \$b) returns Int {
18:29 pmichaud ?
18:29 pmichaud (I'm not talking about removing the "returns int" from the native case)
18:30 pmichaud or are those just decorative for now?
18:30 Entonian joined #perl6
18:31 pmichaud I'm surprised to see the "nqp::want" lines in the native case -- are those just temporary?
18:33 jnthn pmichaud: The optimizer loses out.
18:33 jnthn pmichaud: It can - in some cases - decide at compile time that this is the candidate that will be called.
18:34 jnthn pmichaud: If we have $a * ($b + $c) and it knows they're all Int:D, then it needs to know that $b + $c produces an Int, so it can resolve the call to infix:<*>
18:34 jnthn pmichaud: And if it does resolve these ones it can inline them.
18:35 jnthn pmichaud: Yeah, the "want" thingy deserves sugar.
18:35 pmichaud I think it mustn't be there.
18:35 pmichaud it's wrong to declare  'returns int' on something that returns an Int
18:36 * masak reads http://opendylan.org/books/drm/Hygiene with interest
18:36 [Coke] pmichaud: does it autocast the return of an Int to an int?
18:36 jnthn pmichaud: At the moment it's there for the benefit of the inliner. The real answer is that all the nqp:: ops know how to tag the generated PAST nodes with the return type.
18:37 jnthn pmichaud: But that felt like something to resolve in the migration to QAST.
18:37 pmichaud I'm saying that the inliner needs to decide that 'wants int' before it ever selects a 'returns int' candidate.
18:39 pmichaud I'm okay if we have those nqp::wants in there as a temporary optimization, but the use of 'want' there seems like it cannot be at all a permanent solution (and I'm worried it'll become a pervasive incorrect pattern that gets replicated throughout the codebases)
18:40 jnthn pmichaud: I'm not quite sure the "knows it wants int" is right either; it probably boils down to some of the issues that mean we don't have "want" in Perl 6 any more.
18:41 pmichaud no matter what, I'm pretty sure that it's a fundamental error to have a function that declares "returns int" return anything that isn't an "int"
18:41 masak +1
18:42 masak (that's what 'returns' means!)
18:42 jnthn Aside from S12 says Perl 6 does autoboxing/autounboxing. :)
18:42 jnthn But yes, I don't think the current factoring is what we should end up with.
18:42 pmichaud yes, but declaring 'returns int' really means you're removing the "auto" from the boxing.
18:42 pmichaud and any autoboxing/unboxing needs to take place outside of the function, not within it.
18:43 masak ...what pmichaud said.
18:45 jnthn That's fine but it means we need to work out what return looks like in the native case, for example.
18:46 jnthn Anyway, I agree it's not how it should be.
18:46 pmichaud sure thing.  I'm just making sure that what exists there now isn't planned to be the basis of the solution, because I think it cannot work.
18:46 pmichaud going back to "returns Int" -- a couple of weeks ago I thought we had decided to temporarily auto-promote out-of-range Int values into Num
18:46 pmichaud but I can't do that if we declare "returns Int" and code relies on the things actually being Int
18:47 jnthn pmichaud: OK. Those annotations landed with the merging of the optimizer branch.
18:47 jnthn If you want, you can remove them for a bit.
18:47 pmichaud wfm
18:48 pmichaud I'm open for whatever path you (and others) want to take
18:48 pmichaud we can leave them in and say "wait for bigint support" for 32-bit platforms, if that's preferred.  But I think that's likely to be too big a regression.
18:50 jnthn pmichaud: OK, my take is: if somebody has tuits to implement the num auto-promotion, we can strip off the Int annotations to make it work out. If I get bigint in before anybody gets the num auto-promote in place, then we don't need to. :)
18:51 pmichaud wfm
18:51 pmichaud num autopromotion is actually pretty straightforward
18:51 pmichaud so I expect to be able to do it relatively soon
18:51 pmichaud (but my expectations are bogus)
18:51 pmichaud anyway, if I do the autopromote and need to remove the annotations, I'll do it -- if you beat me to the punch, I'll celebrate and buy you some beer
18:52 jnthn \o/
18:58 mls joined #perl6
18:59 mls Speaking about int/Int autopromotion, I sometimes wonder if parrot shouldn't have a "generic" register type
19:00 mls i.e. a register that can store both an INT and a PMC
19:01 mls so an add op would be $R2 = $R0 + $R1
19:01 benabik mls: You do that by using Integer PMCs.
19:01 mls and an occuring overflow would convert to a PMC
19:02 benabik mls: Trying to have the register be both makes many other things confused.
19:02 mls I do not like Integer PMCs
19:02 mls PMC allocation costs quite a bit
19:02 pmichaud Parrot has some fundamental flaws in how it treats opcodes; this is one of them.
19:02 mls I want it to be as fast as INT for the standard cases
19:03 jnthn Also Parrot doesn't have a concept of references.
19:03 pmichaud Anyway, I doubt those choices are in the realm of being open to change at this stage.
19:03 benabik mls: If the register is both, how do you distinguish the cases for the garbage collector?  What do you do with method calls on these?
19:04 mls the register would also hold a type
19:04 benabik mls: And if the register is just int/Int PMC, you slow down all int/int math by having to check to see if one of them is a PMC.
19:04 benabik mls: Then you slow down _all_ math by the cost of checking the type.
19:04 jnthn mls: fwiw, in Perl 6 we always know statically when we have a native.
19:04 pmichaud "always"?  or "often"?
19:05 benabik jnthn: There's some incomplete and poorly thought out stuff about proxies and the like.  I'd love to rip it out and replace it with proper container semantics.
19:05 benabik Our opcodes conflate setting registers and assigning to containers.  I do not like.
19:06 pmichaud benabik: welcome to the choir.  :-)
19:06 mls Native regs should stay native. I just don't see how we can implement Perl6's Int semantics without using PMCs for every operation
19:06 benabik pmichaud: I don't think it's "unlikely to change".  I think it's not at the top of the list for fixing.
19:06 PerlJam mls: you can always come up with your own VM  :)
19:06 pmichaud benabik: I did say "at this stage".
19:07 jnthn mls: Well, given Int really is potentially always a bigint, there's probably on escaping allocation in that sense.
19:07 jnthn s/on/no
19:07 mls Most of time time it's an error to restart from scratch ,)
19:08 mls Yeah, that's why I said we would need some different register type that's just potentially an PMC, but can stay a native int for most of the cases
19:08 benabik But then you have to check the type on every op.  And that's slow.
19:08 benabik That slows down the common case.
19:08 PerlJam mls: as long as you didn't repeat parrot's mistakes, this wouldn't be one of those cases.
19:08 PerlJam ;-)
19:08 mls ,)
19:08 pmichaud in some sense parrot itself was "restart from scratch", iiuc.  :-)
19:08 mls oops, meant ;)
19:08 benabik Parrot's open to change.
19:09 jnthn mls: Yes, what I'm saying is that you don't always statically know which it's going to be.
19:09 pmichaud benabik: I don't think anyone here is claiming that Parrot isn't open to change.
19:09 benabik And, to some extent, we do want to restart some.  The M0/6model work we want to do is something like b -> nom.  We just don't have as prolific people as pmichaud and jnthn working on it.
19:09 jnthn mls: And doing the checks would not be so ideal.
19:10 jnthn mls: What would work out better here is the optimizer spotting such things and emitting two code paths
19:10 mls I don't really like the two code path solution
19:11 mls You would have the same type checks, but coded in parrot opcodes
19:11 pmichaud right
19:11 pmichaud that's a two-code path solution also :)
19:11 pmichaud that's just putting the two paths inside the opcode instead of in the things that call the opcodes :)
19:12 jnthn mls: The two code path solution works out better for the places where we care about such optimization, I think.
19:12 jnthn mls: e.g. tight loops
19:13 jnthn mls: Where we'd emit the loop twice and its optimal as it can be in each of the paths, rather than having to do the checks again and again. It's hard to optimize a check out of an opcode.
19:14 mls yes, maybe
19:16 shi joined #perl6
19:18 cotto benabik: what I really need to do is retire early. ;)
19:19 benabik cotto: +1  :-D
19:24 Sarten-X joined #perl6
19:24 nebuchadnezzar joined #perl6
19:24 wk joined #perl6
19:26 zby_home_ joined #perl6
19:30 whiteknight joined #perl6
19:31 skangas joined #perl6
19:32 bluescreen10 joined #perl6
19:33 im2ee Good night! :)
19:33 im2ee o/
19:36 masak 'branoc, imarcusthis
19:36 masak er argh, im2ee.
19:36 * masak makes a mental note not to tab complete on people who already left the channel
19:41 masak TimToady: jnthn just proved to me that in a quasi with placeholders, type registration can't happen at parse time.
19:41 masak TimToady: I guess we can still register the type "names" in some loose sense, but the actual types will have to be constructed at macro expansion time in the worst case.
19:43 [Coke] joined #perl6
19:45 alester joined #perl6
19:48 mj41 joined #perl6
19:48 masak sorear: which means that your 'quasi { has $.x is rw }' isn't a completely lost case, I guess.
19:52 tadzik masak: see http://irclog.perlgeek.de/perl6/2011-10-18#i_4585443
19:53 [Coke] (open to change) I wouldn't say parrot isn't open to change.
19:53 diakopter being open to and being able to are different things
19:55 masak tadzik: I blame imarcusthis.
19:55 benabik Parrot could change faster if more people would work on it.
19:56 masak benabik: as opposed to all those overstaffed open source projects out there :P
19:56 benabik masak: Sure, work on the ones you want to work.
19:56 imarcusthis masak: everybody blames me :/
19:57 imarcusthis what did I do this time?
19:57 masak imarcusthis: your nick starts with 'im'
19:57 benabik masak: But don't say F/OSS project X isn't changing fast enough.  We're all volunteers and work when we can.  It's a truism of all open source.
19:57 imarcusthis masak: asl?
19:57 wk joined #perl6
19:58 * _sri blames imarcusthis too
19:58 gfldex pmichaud++: match problem gone
19:59 masak benabik: agreed. in return, please try not to treat us as a homogenous mass. not all of us are saying "hey parrot, hurry up!".
20:00 masak imarcusthis: does that mean "age/sex/location"? in that case, I'm a precocious teenage girl from Indonesia.
20:00 benabik masak: I'm making responses to comments as I see them, not trying to yell at #perl6 in general.
20:01 masak benabik: goodie.
20:02 benabik masak: Perhaps trying to dig through years old trac tickets is just making me grouchy.
20:02 imarcusthis masak: Then I'm not interested. Only looking for middleaged males from sweden.
20:02 masak dang.
20:02 [Coke] benabik: BWAHAHAHAHAHAHAHAHAHAHAA
20:02 benabik [Coke]: Yeah, eah.
20:02 [Coke] I've done more work on ticket queues on parrot and perl6 than... I've done a lot. ;)
20:03 [Coke] I wish you luck, stout adventurer!
20:03 * jnthn likes adventures involving stout :)
20:04 masak imarcusthis: actually, I'm really an autonomous bot from the year 2043, with built-in antigravity and a Singularity damper.
20:06 PerlJam masak: a perl 6 bot?
20:06 dalek nqp: 763b9c5 | benabik++ | src/HLL/Compiler.pm:
20:06 dalek nqp: Use Hash.update for command line args
20:06 dalek nqp: review: https://github.com/perl6/nqp/commit/763b9c542f
20:06 dalek nqp: 05b7873 | benabik++ | src/HLL/Compiler.pm:
20:06 dalek nqp: HLL::Compiler: Allow --target with -e
20:06 dalek nqp:
20:06 dalek nqp: Prior to this, using --target with -e would just result in the
20:06 dalek nqp: compiler ending early with no output.  Of course, this would be more
20:06 dalek nqp: useful if we taught _dumper how to deal with 6model objects.
20:06 dalek nqp:
20:06 dalek nqp: Based on a patch from chrisdolan in Parrot TT366
20:06 dalek nqp: review: https://github.com/perl6/nqp/commit/05b7873eda
20:07 masak PerlJam: actually, I have bad news about that. turns out it was PHP that won out in the end.
20:07 masak PerlJam: "worse is better" and all that stuff, you know.
20:08 masak PerlJam: my advice is to start liking \ as a package separator, sooner rather than later...
20:09 masak imarcusthis: also, who are you calling middle-aged, young whippersnapper? ;)
20:09 imarcusthis masak: I was born in 1976 =)
20:09 masak dang again :)
20:12 PerlJam masak: so ... the message is get worser faster?
20:13 PerlJam As long as we can choose a different timeline from the one that masak-bot came from, we're good.
20:16 masak nooooo you'll violate causa^#%@NO CARRIER
20:27 masak moritz: ping
20:49 cyri_ joined #perl6
20:52 localhost joined #perl6
20:53 dalek rakudo/nom: 973ebc9 | jnthn++ | src/Perl6/Actions.pm:
20:53 dalek rakudo/nom: Fix return type check issue reported in RT#101364.
20:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/973ebc94fe
20:55 tadzik make spectest  2210.87s user 148.94s system 95% cpu 41:04.40 total
20:55 jnthn phenny: tell japhb Does your work on MAIN resolve https://rt.perl.org/rt3/Ticket/Display.html?id=92986 ?
20:55 phenny jnthn: I'll pass that on when japhb is around.
20:56 jnthn tadzik: 228 wallclock secs here ;)
20:56 jnthn Which is more than it has been in the past, but...more tests.
20:56 jnthn Still, I want better :0
20:56 jnthn *:)
20:56 tadzik jnthn: what worries me is that last value recorded is make spectest  1163.76s user 93.29s system 98% cpu 21:11.38 total
20:56 tadzik on 2011-09-17
20:57 jnthn oh, ouch. :S
20:57 jnthn That's practically a doubling. I've seen nothing on that order of magnitude.
21:05 Chillance joined #perl6
21:06 soh_cah_toa joined #perl6
21:11 masak hi people -- I've put together this little text about D4 and environs. https://gist.github.com/1293853
21:11 Tene Starts with "Heal the World"; ambitious.
21:11 masak partly to make it a bit more of a known quantity, partly to show that these things while non-trivial are definitely doable.
21:12 masak much of the things outlined in there have fallen into place in the last month or so while I've been implementing macros.
21:13 masak I'd be interested to hear if Tene or sorear have considered the "We're not done yet, it gets worse" part. my guess is "yes", but it took me quite a while to see that bit.
21:14 * masak posts the gist as a comment on the Hague Grant application blog post
21:15 envi_ joined #perl6
21:16 Tene masak: Reading the post now.
21:21 soh_cah_toa joined #perl6
21:24 masak augh, need to sleep.
21:26 masak 'night, fireflies and butterscotch.
21:27 colomon o/
21:27 colomon mmmm, butterscotch
21:27 mkramer joined #perl6
21:27 colomon mmmmm, scotch
21:27 benabik mmmm, butter
21:27 mkramer left #perl6
21:28 tadzik mmmm, mmmmm
21:28 colomon benabik: good point.  :)
21:28 colomon nothing wrong with fireflies, either, but they're not tasty, as far as I know.
21:31 jnthn mmm...czech pivo :)
21:31 * jnthn spectests a fix for another RT ticket
21:33 mj41 joined #perl6
21:33 dalek rakudo/nom: 07b9b00 | jnthn++ | src/Perl6/Grammar.pm:
21:33 dalek rakudo/nom: Fix for RT#89208 (oddness when declaring a sub in a for loop that needs to get an implicit $_).
21:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/07b9b00739
21:34 jnthn std: class A { has $.a, $.b; }; A.new(a => 1, b => 10)
21:34 p6eval std 580b69a: OUTPUT«[31m===[0mSORRY![31m===[0m�Variable $.b used where no 'self' is available at /tmp/nSsjx59v2C line 1:�------> [32mclass A { has $.a, [33m�[31m$.b; }; A.new(a => 1, b => 10)[0m�Check failed�FAILED 00:01 124m�»
21:37 jnthn std: class A { has $.a; has $.b = 2 * $.a; }
21:37 p6eval std 580b69a: OUTPUT«[31m===[0mSORRY![31m===[0m�Variable $.a used where no 'self' is available at /tmp/VmNOngw8a4 line 1:�------> [32mclass A { has $.a; has $.b = 2 * [33m�[31m$.a; }[0m�Check failed�FAILED 00:01 122m�»
21:37 jnthn std: class A { has $.a; has $.b = 2 * $!a; }
21:37 p6eval std 580b69a: OUTPUT«[31m===[0mSORRY![31m===[0m�Variable $!a used where no 'self' is available at /tmp/7FFsP6gn0Y line 1:�------> [32mclass A { has $.a; has $.b = 2 * [33m�[31m$!a; }[0m�Check failed�FAILED 00:01 122m�»
21:38 jnthn TimToady: ^^
21:38 Trashlord joined #perl6
21:39 dorlamm joined #perl6
21:40 jnthn That looks a little hard to fix, given when we parse the RHS we probably don't know it's an attribute initializer and will be promoted to an anonymous method.
21:56 jnthn Well, that's some more RTs either fixed or tagged testneeded :)
21:57 jnthn rakudo.org/testneeded always shows me zero tickets... :(
21:58 TimToady a good argument for my original view that declarators should parse = specially
21:58 TimToady I don't remember why I was argued out of that...
21:59 jnthn TimToady: Me either...
21:59 jnthn TimToady: But this is the nth time I wish you hadn't been.
22:00 jnthn TimToady: constant, our, has etc all end up needing a similar hack due to their non-usual initialization.
22:00 jnthn Oh, and state
22:00 TimToady perhaps it was to catch precedence errors like $a + new $b = $c
22:01 jnthn new? :)
22:01 TimToady my
22:01 jnthn phew!
22:01 jnthn .oO( what scope declarator did they add while I was away teaching?! )
22:01 TimToady sorry, lingering nap
22:01 jnthn :)
22:02 jnthn phenny: ask [Coke] how do I find out how many tickets are tagged [testneeded]?
22:02 phenny jnthn: I'll pass that on when [Coke] is around.
22:04 TimToady okay, >>todo at least
22:04 jnthn Thanks.
22:04 * jnthn decides to wait and see what STD does here
22:04 jnthn :)
22:04 * TimToady too...
22:05 diakopter heh
22:05 TimToady well, in any case, it's probably more important to fix the = semantics than to catch the precedence error for now
22:06 TimToady so we'll probably move that direction
22:06 jnthn std: (use Foo)()
22:06 p6eval std 580b69a: OUTPUT«[31m===[0mSORRY![31m===[0m�Cannot locate module Foo at /tmp/qd_xEcKMIf line 1:�------> [32m(use Foo[33m�[31m)()[0m�Check failed�FAILED 00:01 119m�»
22:06 jnthn std: (use STD)()
22:06 p6eval std 580b69a: OUTPUT«ok 00:01 139m␤»
22:06 jnthn What does a use statement evaluate to?
22:06 jnthn (if anything...)
22:07 TimToady S06:2994
22:08 jnthn whoa!
22:09 TimToady that's been in there for years :)
22:09 jnthn Do...do you still want it implemented?
22:10 TimToady seems very handy, but I wouldn't worry about it too much for starters
22:10 jnthn Yeah; the issue is that at the moment it evaluates to...nothing at all...and the above explodes with an IMCC error.
22:10 TimToady .oO(did I just claim that jnthn++ was just starting?)
22:10 * jnthn wsa looking in S10/S11 :)
22:11 TimToady it also seems a bit difficult, insofar as 'use' has probably already imported stuff
22:11 jnthn Yeah
22:11 jnthn You'd kinda want to know you had to do it as you imported.
22:11 TimToady unless we assume that use returns something that does the import
22:12 jnthn Well, apart from the import needs to happen at compile time
22:12 jnthn And the method call would happen at runtime.
22:12 TimToady there's that too
22:12 TimToady well, modules will happen
22:12 jnthn Cute idea. Probably not quite the right factoring.
22:13 jnthn Anyway, I guess the answer is not "the use statement evaluates to the last thingy in the module".
22:13 TimToady no, if anything it's a sort of macro
22:16 TimToady a self-calling macro, constructed by agreement of the export and import data
22:16 TimToady but perhaps also explicitly overridable by the module in question to do questionable at use time
22:16 jnthn But that still doesn't really answer the question of "what's there by runtime"
22:17 TimToady I guess it would depend on what the macro put there as the return value, if anything
22:17 TimToady might be useful someday, so maybe we should keep the option open
22:18 TimToady it's no worse than BEGIN returning something
22:18 jnthn *nod*
22:18 jnthn I'll just do Nil for now until we get to looking at that.
22:18 TimToady is fine for now
22:20 cognominal joined #perl6
22:35 dalek rakudo/nom: 433839e | jnthn++ | src/Perl6/Actions.pm:
22:35 dalek rakudo/nom: Ensure import, use and need return something (Nil for now), so we don't get IMCC errors if you try and use the result of the use statement for something.
22:35 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/433839eefb
22:35 buubot_backup joined #perl6
22:35 wolfman2000 joined #perl6
22:46 dalek rakudo/nom: aa32037 | jnthn++ | src/Perl6/Actions.pm:
22:46 dalek rakudo/nom: Fix (and greatly simplify) handling of 'use fatal' (doubt we actually look at it anywhere yet, but this at least gets us beyond 'use fatal' giving a weird error).
22:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/aa32037afa
22:50 daniel-s joined #perl6
22:59 dalek rakudo/nom: a0c370d | jnthn++ | src/Perl6/Actions.pm:
22:59 dalek rakudo/nom: Get require to work again, though no import lists yet.
22:59 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a0c370ddd1
22:59 dalek features: 11e3427 | jnthn++ | features.json:
22:59 dalek features: nom now supports require, though without import lists yet (so it gets +-).
22:59 dalek features: review: https://github.com/perl6/features/commit/11e3427744
23:02 buubot_backup joined #perl6
23:04 [Coke] joined #perl6
23:05 kfo joined #perl6
23:10 [Coke] joined #perl6
23:11 [Coke] jnthn: first, login to rt. then go to:
23:11 phenny [Coke]: 22:02Z <jnthn> ask [Coke] how do I find out how many tickets are tagged [testneeded]?
23:11 [Coke] rakudo.org/rt/testneeded
23:12 [Coke] jnthn:
23:12 [Coke] (91 tickets current block on needing tests.)
23:14 jnthn [Coke]: I am logged in and still when I go there I get 0
23:14 jnthn nom: say 714 - 91
23:14 p6eval nom aa3203: OUTPUT«623␤»
23:19 [Coke] joined #perl6
23:22 jnthn sleep &
23:24 aqz left #perl6
23:25 [Coke] joined #perl6
23:32 molaf_ joined #perl6
23:41 [Coke] phenny: help
23:41 phenny [Coke]: Hi, I'm a bot. Say ".commands" to me in private for a list of my commands, or see http://inamidst.com/phenny/ for more general details. My owner is sbp.
23:42 [Coke] phenny: tell jnthn that to get the # of tickets iwth testneeded, to login to rt, then go to http://rakudo.org/rt/testneeded
23:42 phenny [Coke]: I'll pass that on when jnthn is around.

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

Perl 6 | Reference Documentation | Rakudo