»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
dalek ecza/serialize: 3dc4789 | sorear++ | lib/ (2 files):
Implement freezing for types
00:00
00:01 uasi left 00:15 whiteknight joined 00:16 uasi joined 00:19 uasi left, jaldhar joined 00:29 whiteknight left 00:30 whiteknight joined 00:37 donri left 00:51 am0c left
dalek ecza/serialize: dc6dd55 | sorear++ | lib/ (5 files):
Implement serialization for Frame, finally kill off hashtable lexicals
00:54
sjohnson (´ー` ) 01:01
01:20 wolfman2000 joined
ingy TimToady: did you cancel your install? 01:22
I can't imagine that you are a happy camper if you didn't :)
nom: say 7**7**7 01:31
p6eval nom ce15be: OUTPUT«-9223372036854775808␤»
sorear nice and fast.
ingy niecza: say 7**7**7
unless it's wrong
:)
p6eval niecza v10-46-gb99829c: OUTPUT«(timeout)» 01:32
ingy it looks hella wrong
as it should be a 695k digit positive integer
pugs: say 7**7**7 01:33
p6eval pugs c943eeb: OUTPUT«37598235267837885389221309308959108170663338059843769637876671028620503749437009877925935534580551076982787849712140205012377935385665515045664751687736249019437077979989526456436651735516461110172819432169190223389490833141266444067484549869286875086025837440442573…
colomon that's asking a lot ... damn, pugs is fast at that!
ingy that's more like it
colomon: on my slow 32 bit machine ruby takes 7 sec, niecza 19, pugs 0.12 01:34
sorear can explain why :)
and nom can't do math
colomon huh. niecza's still trying to figure it out on my machine
two minutes and counting
ingy pugs: say 8**8**8 01:35
p6eval pugs c943eeb: OUTPUT«Inf␤»
ingy that's a bug I'm working on
colomon 8**8**8 is?
niecza: say 8**8
p6eval niecza v10-46-gb99829c: OUTPUT«16777216␤»
ingy nom: say 8**8 01:36
p6eval nom ce15be: OUTPUT«16777216␤»
ingy pugs: say 8**8
p6eval pugs c943eeb: OUTPUT«16777216␤»
ingy nom can do some math I guess :)
pugs: say 2**2**2 01:37
p6eval pugs c943eeb: OUTPUT«16␤»
ingy pugs: say 3**3**3
p6eval pugs c943eeb: OUTPUT«7625597484987␤»
colomon nom's just completely braindead when it comes to things that overflow int64. (maybe int32 on some machines)
ingy pugs: say 3**27
p6eval pugs c943eeb: OUTPUT«7625597484987␤»
ingy pugs: say 27**3 01:38
p6eval pugs c943eeb: OUTPUT«19683␤»
ingy right assoc
nom: say 3**3**3
colomon yup
p6eval nom ce15be: OUTPUT«7625597484987␤»
ingy ok
it's got the assoc right (npi)
snarkyboojum nom: 2**64, 2**63, 2**62 01:39
p6eval nom ce15be: ( no output )
ingy nom: say 6**6**6
p6eval nom ce15be: OUTPUT«-9223372036854775808␤»
ingy meh
snarkyboojum nom: say 2**64, 2**63, 2**62
p6eval nom ce15be: OUTPUT«-9223372036854775808-92233720368547758084611686018427387904␤»
snarkyboojum so it can do 2**62 :)
ingy :)
01:39 kmwallio joined
TiMBuS is nom or parrot supposed to handle auto-bignumification 01:40
colomon ingy: the thing is, older versions of rakudo went to great lengths to trap overflowing native int operations. nom doesn't do that because the Right Thing To Do is to switch to bignums. Unfortunately, nom doesn't have bignums yet.
TiMBuS: nom
TiMBuS what um. whats parrots job again :v
ingy :D
the parrot is dead, man 01:41
snarkyboojum actually running it on hardware :)
ingy he's just asleep
colomon ingy: what, it joined the bleeding choir invisible?
01:47 ZapZ joined 01:48 ggoebel left, snarkyboojum left, ggoebel joined 01:49 snarkyboojum joined 01:52 [Coke] left 01:59 whiteknight left 02:03 packetknife joined 02:05 icwiener left
sorear TiMBuS: Parrot is like Java, but with an insane design because the sane designs are all patented. 02:12
TiMBuS that didnt stop google :p 02:13
sorear see also chromatic's latest blog post
TiMBuS angrymanblogs.com 02:14
sorear I can see where they're coming from, and sometimes I'm even tempted to join them
but I don't think there's a lot of point in niecza competing for the "Perl 6 implementation that runs on parrot" niche, nom fills that adequately 02:15
02:16 kmwallio left
snarkyboojum it'll be great when rakudo master can run code which was written to run on the previous incarnation e.g. regex stuff is filled out 02:18
like panda
and we can start using the module ecosystem again on nom 02:19
02:21 drbean left
TiMBuS looking through this source here, i guess noms idea is to make all ints/numbers bignums? because there's certainly no futureproofing that i can see in place for eg, auto-upgrading ints 02:25
python3k style
02:27 drbean joined, mkramer left 02:28 mkramer joined 02:34 drbean left 02:57 risou_awy is now known as risou 02:58 cognominal left, drbean joined 03:01 cognominal joined 03:05 cognominal left 03:10 packetknife left 03:33 uasi joined 03:37 wooden joined 03:39 risou is now known as risou_awy 03:40 lateau__ joined
dalek ecza/serialize: 8ed36ea | sorear++ | / (4 files):
Wire up serializer to run after pre-compiler
03:47
sorear now has a .ser file. Almost certainly mis-written
tadzik phenny: pl "ser"? 03:48
phenny tadzik: "cheese" (pl to en, translate.google.com)
sorear phenny: es "ser"?
phenny sorear: "be" (es to en, translate.google.com)
snarkyboojum rakudo: class A { method a($a as Str) {} } 03:49
p6eval rakudo ce15be: ( no output )
snarkyboojum niecza: class A { method a($a as Str) {} }
p6eval niecza v10-46-gb99829c: OUTPUT«===SORRY!===␤␤Action method trait_mod:as not yet implemented at /tmp/s4PyNbdltr line 1:␤------> class A { method a($a as Str⏏) {} }␤␤␤Unhandled Exception: Cannot use hash access on an object of type Str␤ at line 0 (Ex…
snarkyboojum wah
where would that feature be found in the compiler feature comparison list 03:50
sorear I'm pretty sure that was removed from the spec 03:51
snarkyboojum ah
sorear or rather that syntax was
it's something like a(Str() $a) now
(no, it's not in niecza)
snarkyboojum std doesn't complain about it 03:52
std: class A { method a($a as Str) {} }
p6eval std 580b69a: OUTPUT«Potential difficulties:␤ $a is declared but not used at /tmp/lbtYZ3yT1V line 1:␤------> class A { method a(⏏$a as Str) {} }␤ok 00:01 121m␤»
sorear std: class A { method a($a does snarkyboojum) { } }
p6eval std 580b69a: OUTPUT«===SORRY!===␤Unable to parse signature at /tmp/n9NULLcPXB line 1:␤------> class A { method a⏏($a does snarkyboojum) { } }␤Couldn't find final ')'; gave up at /tmp/n9NULLcPXB line 1:␤------> class A { method a($a does ⏏[…
sorear std: class A { method a($a is snarkyboojum) { } }
p6eval std 580b69a: OUTPUT«Potential difficulties:␤ $a is declared but not used at /tmp/oAMb45_jK9 line 1:␤------> class A { method a(⏏$a is snarkyboojum) { } }␤ok 00:01 121m␤»
sorear std categorically ignores traits
snarkyboojum that's helpful 03:53
03:55 arthur-_ left
snarkyboojum I find it difficult to find errors when using Niecza - I don't often get a reference to the user code causing the problem 03:57
e.g. 'Unhandled Exception: Unable to resolve method ast in class Any' then a big stacktrace, but no reference to user code
I kinda hacked unlink and mkdir into Niecza to try and get panda running, and now I get that helpful error :D 04:01
sorear snarkyboojum: if you get that, it's an internal compiler error, not a user code error 04:02
that said it would certainly be nice to be able to see at a glance what's causing it
snarkyboojum sorear: ok - bugger :)
sorear NIECZA_RX_TRACE=1 may help 04:03
snarkyboojum sorear: ok then - will have a play. Thanks.
04:08 arthur-_ joined 04:13 drbean left 04:16 risou_awy is now known as risou 04:18 drbean joined
sorear diakopter: ping 04:30
04:32 uasi left 04:35 risou is now known as risou_awy 04:36 benabik left 04:38 soh_cah_toa left 04:48 drbean left, benabik joined
diakopter sorear: pong 04:53
04:53 drbean joined
diakopter sorear: pong pong 04:56
sorear diakopter: you mentioned earlier that you wanted to relax --safe rules 05:01
diakopter: what rules would you like to see?
diakopter I think reading files is okay; writing isn't; network connections aren't ok; CLR objects should be allowed, except those that do UDP/TCP 05:02
hm, actually. 05:03
CLR objects would be hard to prevent file writing
maybe we should make p6eval run its children as nobody 05:04
sorear p6eval runs its children in a chroot, is that good enough?
(I guess not)
maybe I could try and finish my ptrace isolating container project 05:05
diakopter if a p5 script sets uid to nobody, do child invocations follow that?
sorear yes
diakopter I just don't want to have to rebuild the chroot
sorear but that will only work if p6eval itself runs as uid 0
diakopter moritz already had enough work this week rebuilding .cabal 05:06
oh
sorear nobody isn't special to the kernel; any nonzero uid process cannot change uid
(except by execing a suid program, or in special cases if the process was started suid)
er. sorry, I'm overexplaining again 05:07
diakopter I don't think so
I vaguely remember the concepts to which you refer
sorear we could start p6eval as user nobody, if we aren't already 05:08
b: say $*UID
p6eval b 1b7dd1: ( no output )
sorear b: say $*USER
p6eval b 1b7dd1: ( no output )
sorear b: pir::spawn__is("whoami")
p6eval b 1b7dd1: OUTPUT«error:imcc:syntax error, unexpected IREG, expecting '(' ('$I100')␤ in file '(file unknown)' line 382␤error:imcc:syntax error ... somewhere␤ in file '(file unknown)' line 561␤===SORRY!===␤syntax error ... somewhere␤»
sorear b: pir::spawn__vS("whoami") 05:09
p6eval b 1b7dd1: OUTPUT«error:imcc:syntax error, unexpected SREG, expecting '(' ('$S100')␤ in file '(file unknown)' line 48776830␤error:imcc:syntax error ... somewhere␤ in file '(file unknown)' line 48777009␤===SORRY!===␤syntax error ... somewhere␤»
diakopter I just think it would be cool if colomon could gist a long script that uses CLR objects and send it to niecza
sorear b: pir::spawnw__vS("whoami")
p6eval b 1b7dd1: OUTPUT«===SORRY!===␤error:imcc:The opcode 'spawnw_s' (spawnw<1>) was not found. Check the type and number of the arguments␤ in file '(file unknown)' line 78366670␤»
sorear b: pir::spawnw__iS("whoami")
p6eval b 1b7dd1: OUTPUT«p6eval␤»
diakopter hee
b: pir::spawnw__iS("w") 05:10
p6eval b 1b7dd1: OUTPUT« 05:10:17 up 378 days, 11:02, 0 users, load average: 0.12, 0.04, 0.01␤USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT␤»
diakopter 0 users
sorear diakopter: btw, the people in ##jsoftware are currently complaining about ENOBOT. mind if I host a J evaluator on host04?
diakopter would you mind using a different chroot? 05:11
05:11 orafu left, orafu joined
sorear diakopter: no 05:11
diakopter actually I guess the /chroot one is fine; just create a different user
see my msg about colomon above 05:12
I want to see a niecza program that creates an assembly through reflection and invokes it. :D 05:13
hee hee
sorear diakopter: so you're fine with unrestricted CLR access if I change p6eval to run as nobody? 05:14
diakopter well, hrm.
I am slightly afraid of malicious network connections, even though that's quite far fetched. :/ 05:15
probably I'm being overly paranoid there.
malicious network connections including spam 05:16
sorear right
sorear reads iptables docs 05:17
diakopter I guess we could restrict outbound connections to only DNS and IRC 05:18
sorear that's what I'm thinking 05:19
restrict outbound connections to (github.com,https), (our-dns-server,dns), (freenode,irc), (magnet,irc)
remember we want to be able to download colomon's gists :D
diakopter ah yes.
oh, also, commit p6eval updates to github over ssh 05:20
sorear it depends on how much precision I can get with iptables 05:21
diakopter I didn't think iptables could take hostnames; it'd be tricky to cover the whole ranges of freenode,magnet,github
sorear ideally, only uid=nobody would be restricted
diakopter b: pir::spawnw__iS("w") 05:22
p6eval b 1b7dd1: OUTPUT« 05:22:34 up 378 days, 11:14, 0 users, load average: 0.15, 0.03, 0.01␤USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT␤»
sorear diakopter: host -v irc.freenode.net | grep -w A
diakopter I thought they did geodns 05:23
b: pir::spawnw__iS("w")
p6eval b 1b7dd1: OUTPUT« 05:23:49 up 378 days, 11:15, 0 users, load average: 0.12, 0.04, 0.01␤USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT␤»
diakopter weird. I have a root login session to the chroot 05:24
oh, maybe not login
sorear diakopter: I would guess that the chroot doesn't have a writable /var/run/wtmp
diakopter oh
sorear urp 05:25
looks like w actually uses /var/run/utmp
which the chroot has 05:26
diakopter oh well
sorear diakopter: if I screw up iptables and break my ssh connection to it, do you have a way to recover? 05:27
diakopter ergh
it involves Java 05:28
yes, I can get console to it; just block outbound 25 and call it done
if spawnw can be malicious to the filesystem, niecza gets to as well 05:31
go ahead and take a .tar.bz2 of /chroot/home/p6eval; it'd be good to have 05:33
you are getting very sleepy 05:37
your breath slows as your eyelids start to close
I guess colomon's work is mostly with Gtk anyway 05:38
05:38 mkramer left
diakopter that's kinda hard to demo over irc 05:38
05:39 mkramer joined
diakopter stares at "char *** substrings" in mberends' code 05:42
ah, his comment makes it all ok: /* yes, triple pointer */
sorear sarcasm? 05:43
diakopter me? yes. for a C beginner, I'm finding it hard to follow the usage 05:44
*as a C beginner
he wrote this "lightweight TAP harness" 05:45
(prove.c)
sorear: have you ever used **** ? 05:47
TimToady: same question to you :) 05:48
sorear diakopter: not directly, I don't think 05:51
diakopter not directly, heh
sorear maybe if you count typedefs/structs I have
05:54 drbean left
diakopter sorear: I guess I meant, have you you ever typed "****" in C code 05:54
06:01 drbean joined
sorear hopes moritz doesn't mind what ey's doing right now 06:03
(I'm directly accessing the p6eval console to make it run as nobody 06:04
)
diakopter will it still be able to process control instructions and write temporary files?
sorear hmm, minor problem here, I can't sudo su nobody -c ... while logged in as moritz without moritz' password ;) 06:06
I guess the simple solution here is to ^C and run it from my screen.
06:06 p6eval left
diakopter will p6eval still be able to send control instructions to the rebuild daemon 06:10
sorear there is no rebuild demon
diakopter oh
how will the various rebuilds be launched as the p6eval user then 06:13
sorear you've found a major hole in my plan... :| 06:16
06:17 p6eval joined, ChanServ sets mode: +v p6eval
sorear project aborted 06:17
I was able to get an outbound firewall set up for user nobody 06:18
diakopter :)
sorear but it's not going to fly until I work out a rebuild daemon
which it's too late to do tonight
diakopter: you may find the lonely file in ~sorear interesting 06:21
diakopter yes. sleep beckons 06:22
06:26 lateau__ left 06:28 uasi joined, bhandari joined
bhandari Why the loop construct loop/c-like-for is the only looping construct that requires parenthesis "()"? 06:31
06:32 daniel-s joined 06:43 uasi left
sorear bhandari: maybe because it has semicolons in it, which would make it harder to scan otherwise? ask TimToady 06:46
06:50 uasi joined, uasi left 06:55 uasi joined 07:13 bhandari left
snarkyboojum sorear: how do I use NIECZA_RX_TRACE=1? 07:20
or anyone else :) 07:22
sorear snarkyboojum: NIECZA_RX_TRACE=1 your command line here 07:26
snarkyboojum oic - cheers 07:27
oh this looks fun - lots of information! 07:38
07:40 lateau__ joined 07:41 uasi left 07:46 uasi joined
TiMBuS the advanced range gen syntax went out the window a long time ago didn't it? 07:47
sorear you mean :by?
TiMBuS ie 1..10 :by 2
sorear yes
use 1,3...10 now
TiMBuS yeah
sorear erm, 1,3...11
TiMBuS does the range gen have a filter in it
or do we use grep still
sorear no
TiMBuS i know it's almost never needed, but I just like how List::Maker does it 07:48
07:52 risou_awy is now known as risou 07:53 GlitchMr joined
sorear o/ GlitchMr 07:53
dalek ecza/serialize: a4ed5fb | sorear++ | lib/Kernel.cs:
Fixes to allow the true CORE to serialize
07:54
ecza/serialize: 1c5bb04 | sorear++ | / (3 files):
Small refactor to AssemblyBuilder setup, start thaw coding
07:55 mj41 joined 07:59 newb joined 08:04 araujo left 08:05 uasi left 08:08 uasi joined, araujo joined
dalek ecza/serialize: fe6e595 | sorear++ | lib/ (2 files):
Thaw for SimpleVariable, StashEnt
08:17
sorear sleep
08:18 uasi left 08:22 trexy left 08:24 uasi joined 08:27 risou is now known as risou_awy 08:30 cognominal joined 08:34 uasi left 08:36 risou_awy is now known as risou, risou is now known as risou_awy, espadrine joined 08:37 drbean left 08:44 Trashlord joined, drbean joined, dukeleto left 08:57 MayDaniel joined 09:03 newb left 09:19 drbean left
masak morning, friends. 09:25
09:25 drbean joined 09:33 mberends joined
mberends oh hai masak 09:35
masak "a revolution in search of a cause."
yeah. that's us :)
09:36 molaf joined
masak C<1, 3 ... 10> would it be unreasonable for a compiler to catch this and say "oh no you feel off a cliff" -- at least for arithmetic and geometric sequences? 09:41
09:43 dual left
mberends very unreasonable, since even the runtime does not catch it :P 09:47
it's a little one-line halting problem 09:48
09:48 drbean left 09:53 espadrine left, BLZbubba left, drbean joined, BLZbubba joined
moritz mberends: it could at least catch those where the generator is inferred, and thus known 09:54
masak mberends: that's why I said "at least for arithmetic and geometric sequences". 09:59
mberends that means nom's current generator-generator is busted 10:00
C<1, 3 ... 11> works locally, C<1, 3 ... 10> loops infinitely 10:01
masak well, that's to spec. 10:02
I was talking about *catching* those thinkos, at least giving a warning.
mberends for all terminating values? C<0.000001, 0.000002, 1000000.0000005> ? 10:03
masak with arithmetic sequences, solve a linear equation, see if the solution comes out non-integer. 10:05
flag a warning.
cognominal eiro is wearing a tshirt signed by masak at the belgium perl workshop
masak \o/
the message on that t-shirt reflects my recent obsession with non-DRY solutions... :)
snarkyboojum heh 10:06
masak mberends: with geometric sequences, do a logarithmic transformation, and then proceed as with the arithmetic sequences. 10:07
10:10 cognominal left 10:11 jimmy1980 joined 10:13 drbean left 10:14 drbean joined 10:19 Chillance joined 10:25 kaare_ joined 10:29 trexy joined
mberends masak: using an equality as an iteration terminating condition is only reliable with exact numeric data. Logarithms are approximate, except for some trivial cases, therefore generally unsafe with equality tests. 10:40
10:43 GlitchMr42 joined
masak troo. 10:43
but since we're not looking for *equality* here but *inequeality*, that's less of a problem than usual.
a false negative will just mean the user doesn't get a friendly warning. 10:44
10:45 GlitchMr left, GlitchMr42 is now known as GlitchMr 11:06 mj41 left 11:07 nebuchadnezzar left 11:08 nebuchadnezzar joined 11:12 lateau_ joined 11:20 mj41 joined
lateau_ is there any way to handle @ARGV in nqp? 11:27
11:27 mj41 left
lateau_ i tried @ARGV but I got syntax error 11:27
mberends lateau_: try @*ARGV 11:31
lateau_ OK THANKS! 11:32
masak lateau_: Perl 6 uses * for variables with dynamic scope. @*ARGS is an example. 11:33
lateau_ hmm 11:34
parrot-nqp can handle all features of nqp?
i tried @*ARGV but I've got error again 11:35
masak nqp: say @*ARGS.elems
lateau_ masak: I got it. thanks!
p6eval nqp: OUTPUT«Confused at line 1, near "say @*ARGS"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23698 (src/stage2/gen/NQPHLL.pir:6757) (src/stage2/gen/NQPHLL.pm:329)␤»
masak nqp: say(@*ARGS.elems)
p6eval nqp: OUTPUT«Contextual @*ARGS not found␤current instr.: '_block1000' pc 43 ((file unknown):40) (/tmp/VgQneDoNxA:1)␤»
jnthn I think think NQP has automatic @*ARGS set up 11:36
masak seems not.
jnthn However, you can write a sub MAIN(@ARGS) { } or so
lateau_ jnthn: thank you! i try it
jnthn github.com/rakudo/rakudo/blob/nom/src/main.nqp for example does that.
11:37 Psyche^ joined
lateau_ jnthn: perfect example for me! thanks again! 11:37
11:41 Patterner left, Psyche^ is now known as Patterner 11:51 GlitchMr42 joined 11:54 GlitchMr left 11:56 GlitchMr42 left 12:00 risou_awy left 12:03 whiteknight joined 12:04 cognominal joined 12:09 risou_awy joined 12:18 trexy left 12:29 dual joined 12:58 whiteknight left 13:10 sayu joined 13:23 sayu left 13:26 uasi joined 13:31 jimmy1980 left, localhost left 13:33 localhost joined 13:37 jimmy1980 joined
dalek kudo/optimizer: e0cc816 | masak++ | NOMMAP.markdown:
[NOMMAP.markdown] typography fixes
13:45
kudo/optimizer: 3fd3534 | moritz++ | t/spectest.data:
run mro.t
kudo/optimizer: 3e66bdf | Coke++ | t/spectest.data:
track failures, run fudges
kudo/optimizer: ce15be4 | Coke++ | t/spectest.data:
run fudged test
kudo/optimizer: 03f4606 | jnthn++ | / (2 files):
Merge branch 'nom' into optimizer
kudo/optimizer: 11c3ffd | jnthn++ | src/Perl6/Optimizer.pm:
Fix line numbers consistently being off-by-one in optimizer detected errors.
kudo/optimizer: 96234ca | jnthn++ | src/binder/ (2 files):
Fix optimizer bug that could bust junction auto-threading.
13:46 shinobicl_ joined
dalek kudo/optimizer: d59f093 | jnthn++ | src/Perl6/Optimizer.pm:
Twiddle an error message wording to be a bit more accurate, and make a test happy.
13:50
jnthn OK...time to merge this branch.
Gives us some days before the release.
14:01 GlitchMr joined 14:04 Trashlord left
dalek kudo/nom: 03f4606 | jnthn++ | / (2 files):
Merge branch 'nom' into optimizer
14:07
kudo/nom: 11c3ffd | jnthn++ | src/Perl6/Optimizer.pm:
Fix line numbers consistently being off-by-one in optimizer detected errors.
kudo/nom: 96234ca | jnthn++ | src/binder/ (2 files):
Fix optimizer bug that could bust junction auto-threading.
kudo/nom: d59f093 | jnthn++ | src/Perl6/Optimizer.pm:
Twiddle an error message wording to be a bit more accurate, and make a test happy.
jnthn ...dalek fail :) 14:08
I merged optimizer into nom :)
Have fun; blog post coming soon.
14:08 wk left
masak jnthn++ 14:09
14:18 Trashlord joined 14:20 GlitchMr42 joined 14:22 jimmy1980 left
masak blog post! \o/ strangelyconsistent.org/blog/macros...hey-really 14:23
14:23 GlitchMr left 14:26 trexy joined
masak macros, essentially, are compiler callbacks. 14:27
flussence psst, typo - "DateTIme"
masak flussence++: thank you. fixing. 14:28
14:28 jimmy1980 joined
masak they should be an excellent tool for people who like Ruby-like DSL-y stuff. at least if we allow enough introspection into the AST. 14:30
wonder if we'll see a bunch of routines for easily manipulating ASTs... 14:31
sub concat-ASTs(Perl6::AST $a, Perl6::AST $b) { quasi { {{{$a}}}; {{{$b}}} } }
I wonder if anyone's ever attempted to write a C compiler with AST macro support. 14:40
macros are the programmer and the compiler having an adult discussion about which code to generate ;) 14:48
14:48 risou_awy is now known as risou 14:50 grondilu joined
masak heh, Perl 6 placeholder parameters are mentioned at c2.com/cgi/wiki?CommonLispMacroExamples 14:51
grondilu it's pretty cool they can do that in lisp inside the language itself. Lisp is really great. 14:52
14:53 shinobicl_ left
masak grondilu: stand by for macros in Rakudo ;) 14:54
grondilu I still haven't read much about macros in perl6 :)
(so much to learn...)
masak grondilu: strangelyconsistent.org/blog/macros...hey-really :) 14:55
grondilu bookmarked this ;) 14:56
masak so good to be out of my blogger's block :)
grondilu I've just submitted a 'chess grammar' in rosetta.org. I plan on working on that as a way to learn Perl6 14:57
14:57 GlitchMr joined
sorear good * #perl6 14:57
15:00 GlitchMr42 left
TimToady jnthn: seeing MAIN(@array) bothers me, since that should only bind the first argument 15:11
jnthn TimToady: NQP. 15:13
TimToady: But yeah, I know.
TimToady: Should really fix it at some point.
(We get it right in Rakudo proper.) 15:14
Not sure we'll ever try and make NQP do the handling so extensively as full Perl 6 wants it.
15:15 donri joined
jnthn But compatability for the bits it can do would seem worthwhile. 15:15
nom: foo
p6eval nom d59f09: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&foo' called (line 1)␤»
jnthn phew, it built post-merge :)
15:16 shinobicl_ joined
masak whoa, new semantics! 15:17
masak loves the smell of rakudobugs in the morning...
jnthn uh-oh
masak :)
jnthn masak: STD has those semantics too :)
masak I know, I know.
jnthn masak: At least break some of the harder stuff it goes :P 15:18
masak and I'm not implying that you write less-than-excellent code, jnthn.
jnthn nom: sub foo($x) { }; foo()
15:18 mishin joined
p6eval nom d59f09: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'foo' will never work with no arguments (line 1)␤ Expected: :(Any $x)␤» 15:18
masak just that bugs are inevitable.
jnthn oh, I know :)
And I'd be happy to find/fix any ahead of next week's releas.e
masak jnthn++ # wow!
jnthn Thus why it's merged now :)
masak nom: sub foo() {}; foo(42)
p6eval nom d59f09: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'foo' will never work with argument types (int) (line 1)␤ Expected: :()␤»
masak dang, it still thinks that types are more important than number of args :/ 15:19
just like the runtime binder does...
jnthn masak: hey, you told me you wanted to write the patch to fix that for the compile time analysis like, a week or so ago
:P
It was in the bar with nice beer though... ;-) 15:20
Fixing the runtime one is a bit more involved. 15:21
masak haha
I do want to fix it.
in my copious spare time.
jnthn :)
nom: multi foo(Int $a) { }; multi foo(Str $a) { }; foo() 15:24
p6eval nom d59f09: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'foo' will never work with no arguments (line 1)␤ Expected any of:␤ :(Int $a)␤ :(Str $a)␤»
jnthn Can do it with multis too. 15:25
In some cases.
masak \o/
sorear nice. 15:26
I look forward to stealing this.
jnthn nom: multi foo(Int $a) { }; multi foo(Str $a) { }; foo(2.5)
p6eval nom d59f09: OUTPUT«No applicable candidates found to dispatch to for 'foo'. Available candidates are:␤:(Int $a)␤:(Str $a)␤␤ in block <anon> at /tmp/XuznT8E1KT:1␤ in <anon> at /tmp/XuznT8E1KT:1␤»
jnthn Doesn't manage to detect that one, for example.
(yet ;))
masak I can see how that gets involved, yes. 15:27
15:27 shinobicl_ left
jnthn nom: sub foo(Num $n) { }; foo(1) # gets this one, mind... 15:28
p6eval nom d59f09: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'foo' will never work with argument types (int) (line 1)␤ Expected: :(Num $n)␤»
15:30 grondilu left
masak why, what's the difference? multiness? 15:32
sorear masak: 1 ~~ Int !~~ Num 15:33
jnthn nom: multi foo(Num $n) { }; foo(1) # gets this one, mind...
p6eval nom d59f09: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'foo' will never work with argument types (int) (line 1)␤ Expected any of:␤ :(Num $n)␤»
jnthn Evidently not that
oh...
15:33 Trashlord left
masak sorear: I know. 15:33
jnthn Looks like the AST is missing a type annotation.
(so that it knows 1.5 produces a Rat)
masak did I... find a bug? :D
jnthn masak: No 15:34
masak shucks.
jnthn masak: It catching things for you at compile time is a bonus :)
masak: That said, this is worth fixing. :)
masak aww, so I can only report false negatives, then?
jnthn You should certainly report those. 15:35
I'm not sure how to handle the other case.
masak or false positives, depending on what one considers positive...
jnthn :)
(the case where we agree it probably coulda caught something but didn't)
masak aye, that's probably not bug material.
sounds more like feature requests. 15:36
jnthn It's not a bug per se. It's more a "wouldn't it be nice if..." But we could clutter the RT queue with hundreds of those.
Which is probably counter-productive.
sorear I guess once this feature is more implemented we could start cluttering RT with inconsistency reports 15:37
jnthn inconsistency reports? 15:38
sorear "1.5 is typed at compile time but not 'foo', whyyy" 15:39
jnthn Literals probably always should be.
15:41 colomon left
dalek ecza/serialize: 351a66a | sorear++ | lib/ (3 files):
Improve saving of builtin types
15:49
jnthn I blug: 6guts.wordpress.com/2011/10/15/an-o...operators/ 15:57
15:57 GlitchMr42 joined
TimToady \o/ 15:57
mantovani \o 15:59
TimToady o
jnthn Gotta go back to focusing on preparing for teaching stuff for the rest of the weekend. My tuit level should improve quite a bit towards the second half of next week.
16:00 GlitchMr left
dalek atures: caab218 | jnthn++ | features.json:
nom can has +- for native operators.
16:03
jnthn phenny: ask moritz should nom have + or +- on "Variable interpolation" (regex) in features? 16:04
phenny jnthn: I'll pass that on when moritz is around.
jnthn oh, almost certainly +-
As like Niecza it only handles the scalar case
phenny: tell moritz did +-
phenny jnthn: I'll pass that on when moritz is around.
dalek atures: 07b6827 | jnthn++ | features.json:
Give nom +- for variable interpolation in regexes; pmichaud++ for implementing it.
16:05
16:21 trexy left 16:28 buubot_backup left 16:34 cognominal left
masak nom & 16:37
16:38 mishin left 16:41 GlitchMr joined 16:44 GlitchMr42 left 16:51 buubot_backup joined, wallberg joined
jnthn dinner & 16:52
16:53 soh_cah_toa joined
tadzik oh, is optimizer merged? BEGIN { Hello, #perl6 } 16:55
16:56 wallberg left, wallberg joined 16:58 GlitchMr left 17:01 wallberg left, wallberg joined 17:05 jferrero joined 17:06 wallberg left, wallberg joined 17:11 wallberg left, wallberg joined 17:29 colomon joined 17:36 replore_ left 17:49 pmurias joined
diakopter pmurias: hi 17:51
diakopter installs ubuntu 11.10 using VMWare Player's Easy-Install 17:59
18:00 tlhiv_laptop joined
tlhiv_laptop moritz: are you around? 18:01
pmurias diakopter: hi 18:02
diakopter: want to try niecza out?
diakopter pmurias: yep..
dalek ecza: fd1e6d8 | (Paweł Murias)++ | lib/p5embed.c:
fix segfault when eval perl5 code using a threaded perl
18:03
18:03 GlitchMr joined
pmurias diakopter: what stops niecza from working on windows? 18:05
the Makefile?
sorear pmurias: last I heard it works fine on Windows
pmurias: the Makefile isn't required to use niecza 18:06
diakopter pmurias: I just git pulled/remade/remade perl5 and examples/perl5.pl still says Aborted
pmurias what perl?
diakopter: you did a make -B perl5?
diakopter This is perl, v5.10.1 (*) built for i686-cygwin-thread-multi-64int
pmurias ahh on windows 18:07
diakopter whee; Easy-Install installs VMWare Tools for me 18:08
pmurias: I just tried make -B perl5 same result 18:09
tlhiv_laptop can someone help me figure out why line 8 doesn't cause the script to die? pastebin.tlhiv.org/3ZkWL4_a
pmurias diakopter: i'm not really familiar with how C level stuff works on that twisted platform, so i can't be of much help with that
tlhiv_laptop: try #perl 18:10
tlhiv_laptop sorry
but i did ;)
diakopter tlhiv_laptop: try #perl-help 18:11
tlhiv_laptop that's just me ;)
diakopter gazes in awe at Unity 18:12
pmurias tlhiv_laptop: #perl-help on irc.perl.org
tlhiv_laptop oh
pmurias tlhiv_laptop: why should line 8 cause the script to die?
tlhiv_laptop 2x should not parse i wouldn't think 18:13
2*x is "correct"
pmurias why not?
diakopter pmurias: it's not nice to call someone else's platform twisted
18:15 GlitchMr42 joined 18:16 GlitchMr left, GlitchMr42 is now known as GlitchMr 18:19 BLZbubba left
diakopter exit 18:19
pmurias hm?
diakopter (ww)
sorear diakopter: does cygwin have a sshd? 18:20
colomon i believe so
thought about setting it up once 18:21
o/
diakopter sorear: yes
with some fancy forwarding I might be able to get you access
diakopter works on it 18:22
18:22 shinobicl_ joined
sorear ...that was actually a rhetorical question and I was 100% sure you would say no. \o/ for being wrong 18:22
I would be happy to look into what's up with the perl5 plugin 18:23
erp
cc -shared -Wl,-soname,p5embed.so # this is extremely Linux-specific 18:24
not even Unix-portable
pmurias what's the portable way around that?
sorear why are you using soname? 18:25
I think sonames are a uniquely ELF feature
sorear looks them up
pmurias sorear: i cargo culted the incantation from somewhere 18:26
18:26 molaf left 18:27 replore_ joined 18:28 tlhiv_laptop left 18:29 trexy joined
pmurias sorear: i'll remove that option as it seems unnessesary 18:29
dalek ecza: 6c08103 | (Paweł Murias)++ | Makefile:
remove unnecessary -soname option when compiling the perl5 wrapper
18:31
pmurias sorear: would switching from a Makefile to a perl5 script help portability? 18:32
sorear pmurias: good question 18:37
18:40 HarryS left 18:41 HarryS joined
pmurias sorear: i'm not sure if the current mix of Makefile+shell+wget+zip+? is more portable then perl5 on linux systems 18:47
sorear: and it seems to be really unportable to windows
sorear pmurias: point 18:48
18:49 kaare_ left
pmurias so the choice seems to mostly between C# and perl5 18:50
s/mostly/be mostly
18:51 dukeleto joined
pmurias sorear: C# seems to be more work to make the switch but it seems to be the most portable 18:52
sorear: we could even have a tiny C# script that would fetch the boot/ and have the rest of the build system in Perl 6 18:54
sorear: library wise we could switch from .zip to .tar.gz an bundle code.google.com/p/tar-cs/ 18:56
sorear pmurias: the point of using .zip is so that Windows users can unpack it without extra software 18:58
pmurias sorear: does .net contain libs to unpack the .zip files? 18:59
18:59 GlitchMr42 joined
dalek ecza/serialize: 3f80fca | sorear++ | lib/ (4 files):
A procedure for serializing ContextHandler et al
18:59
sorear I'd be suprised if it didn't
System.IO.Packaging.ZipPackage looks promising 19:00
pmurias so no problems with that 19:01
sorear building STD.dll requires almost all of my memory, so a Perl 6 build system is right out
until I effect a *substantial* improvement in niecza's memory use anyway 19:02
19:02 GlitchMr left 19:05 pmurias left 19:15 uasi left 19:17 uasi joined 19:18 uasi left 19:32 jimmy1980 left
diakopter sorear: ping 19:32
jnthn tadzik: yes, it's merged 19:36
diakopter wonders what to eat today, if anything 19:37
19:37 jimmy1980 joined
colomon just stuck chestnuts in the oven to roast 19:39
jnthn just had a hot curry
sjohnson num num 19:41
19:43 replore_ left
colomon now has lasagna in the oven as well (Jen made it earlier this week and froze it without cooking it) 19:44
19:47 GlitchMr_42 joined 19:51 GlitchMr42 left, wk joined 19:59 GlitchMr_42 left 20:11 [Coke] joined 20:12 MayDaniel left
masak the curry. it was hot. 20:14
colomon the chestnuts. they were hot and buttery....
diakopter the Subway sandwich was cheap 20:15
soh_cah_toa just had swedish fish 20:16
phenny soh_cah_toa: 14 Oct 06:31Z <moritz> tell soh_cah_toa my log files have a good eye indeed :-)
soh_cah_toa candy's always good too ;)
i wonder if swedish fish are even made over in europe by most of you. i bet you have different candy 20:18
dalek ast: 780a83d | moritz++ | S04-exception-handlers/catch.t:
do not rely on coercion for error objects
20:25
20:35 mberends left 20:44 pmurias joined
pmurias diakopter: how did building niecza under ubuntu go? 20:44
diakopter haven't tried
dalek rixel: 20ef672 | (Matthew Wilson)++ | README:
initial README
20:45
diakopter whee, I blew away a repo
oh noes it wiped out the history too
:( :( :(
pmurias diakopter: what happened? 20:47
diakopter I was trying to delete all the files in a repo and apparently I did it the wrong way
20:49 mberends joined
diakopter mberends: hi 20:49
pmurias mberends: hi
mberends: i fixed the bug you encountered with the perl5/perl6 interop 20:50
masak mberends: hi
diakopter there, I saved a relatively recent copy of the C# perlesque/sprixel 20:55
sorear diakopter: pong
o/ mberends
20:56 trexy left 21:04 espadrine joined
dalek ast: ab29e7a | moritz++ | integration/error-reporting.t:
test that calls to non-existing routines are caught before run time
21:06
21:09 wallberg left, mj41 joined 21:39 mkramer left, mkramer joined 21:40 mj41 left 21:45 pmurias left 21:53 mj41 joined 22:14 espadrine left 22:15 mj41 left
diakopter hunh; I can paste from Windows to the Ubuntu VM, but not contrariwise 22:15
masak nom: role R[::T = role Q[::S = role { method baz { say "OH HAI" } }] { method bar { S.baz } }] { method foo { T.bar } }; R.new.foo 22:16
p6eval nom d59f09: OUTPUT«===SORRY!===␤Can only use get_who on a SixModelObject␤»
masak b: role R[::T = role Q[::S = role { method baz { say "OH HAI" } }] { method bar { S.baz } }] { method foo { T.bar } }; R.new.foo 22:17
p6eval b 1b7dd1: OUTPUT«OH HAI␤»
masak jnthn: why doesn't the above work in nom?
jnthn no idea 22:18
masak feels like such an obvious use case... :P 22:20
jnthn Clearly we'd ahve a spectest for it. 22:22
:P
oh wow
It explodes in the weirdest place
Well, more silliest than anything. 22:24
22:25 static_perl joined
jnthn masak: Guess you wanna know what's going on. Well, we encounter the package. We then go and start parsing it's signature. At that point a $*PACKAGE is introduced, but nothing is bound to it yet. When declaring Q, which should be installed in it, the package is thus missing. 22:26
And it's nasty to fix because we tend to like to have seen the traits before we go and create the type object (which the package hangs off). 22:27
Because we want to know what the repr will be.
I guess really though Q should not be declared inside R 22:28
(e.g. it's not R::Q)
As we're in the signature.
Not in the body.
masak right. 22:30
I wasn't sure how to parameterize an anonymous role.
jnthn Well, you can still give it a name 22:31
Just use anon modifier
masak oh!
b: role R[::T = anon role Q[::S = role { method baz { say "OH HAI" } }] { method bar { S.baz } }] { method foo { T.bar } }; R.new.foo
p6eval b 1b7dd1: OUTPUT«OH HAI␤»
masak nom: role R[::T = anon role Q[::S = role { method baz { say "OH HAI" } }] { method bar { S.baz } }] { method foo { T.bar } }; R.new.foo
p6eval nom d59f09: OUTPUT«===SORRY!===␤Can only use get_who on a SixModelObject␤»
masak still no work-y. :/ 22:32
jnthn spectesting a fix
(for the original issue)
masak \o/
masak submits rakudobug
jnthn Can you either add a test or submit a ticket?
thanks.
masak. doer or weird stuff 22:34
*of
nom: my $a = anon class Foo { } 22:35
p6eval nom d59f09: OUTPUT«===SORRY!===␤Cannot use anon scope with class at line 1, near "{ }"␤»
jnthn ah, anon is just NYI 22:36
masak ah.
jnthn: sometimes I imagine this big cross product table of all Perl 6 features combined with each other. with this one, I realized that I hadn't tried combining roles... and roles. :) 22:37
actually I was kind of amazed that it worked in b. 22:38
jnthn masak: Well, b had its own curious ideas about packages :)
masak 'branoc, #perl6
dalek kudo/nom: 0d0b9d0 | jnthn++ | src/Perl6/Grammar.pm:
Handle the crazy case where the signature of a role ends up declaring a package. People come up with all sorts...
22:39
masak :)
dalek kudo/nom: 06d230b | jnthn++ | src/Perl6/ (2 files):
Somehow managed to overlook anon scope modifier support for packages; here it is.
22:47
kudo/nom: ad9d89c | jnthn++ | src/Perl6/Metamodel/Mixins.pm:
Be sure not to lose boolification mode when mixing in.
23:02
23:03 icwiener joined 23:04 trexy joined 23:05 dual left 23:11 shi joined
shi hi everyone 23:11
sorear hello shi and welcome to #perl6. 23:13
How can we help you?
shi i'm just lurking :) 23:14
jnthn heh. 20% of S05-mass/rx.t is spent computing du-chains in IMCC... 23:18
Also it gets a disturbing number of type check cache misses...
jnthn stashes the profile away for further investigation once he's got tuits again. 23:19
'night o/ 23:20
23:32 am0c joined
[Coke] wonders why much of the failing tests are now failing with CHECK FAILED 23:45
23:49 wolfman2000 left
diakopter [Coke]: because jnthn added the optimizer branch, which also happens to do the CHECK phase more stringently 23:53
[Coke] diakopter: danke.