»ö« 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.
00:06 sqirrel left 00:18 yarp joined 00:19 japhb_ joined 00:24 tokuhiro_ left 00:27 Timbus joined 00:34 nohack left 00:39 dayangkun left 00:42 yarp left 00:43 japhb_ left 00:44 MikeFair left 00:47 MikeFair joined 00:59 PacoAir left 01:02 fgomez left 01:10 jakzale joined 01:12 fgomez joined
jakzale Hi, has anyone tried building rakudo 2012.08 using --with-parrot and --with-nqp options? 01:14
sorear I think I did 01:15
it didn't work, so I tried again with just --gen-nqp
jakzale ok, is the configure.pl script supposed to install nqp as well -- do I need to run it with necessary permissions, or can split the process like when using make? 01:18
sorear The compiler dev releases are not entirely intended to be installed system-wide 01:20
TimToady I never install rakudo, except as a subdirectory; I just symlink /usr/local/bin/perl6 to that 01:21
jakzale is it just --prefix=path? 01:22
TimToady the default 'make install' is local 01:23
sorear unlike most configure systems, rakudo does not default to /usr/local
TimToady local directory
sorear it defaults to $PWD/install
TimToady gah, current directory
sorear++ for precision :) 01:24
sorear jakzale: you are aware of the difference between the rakudo dev releases and rakudo star? 01:25
jakzale ok, my bad
i was talking about rakudo star 2012.08
sorear aah 01:26
I have never tried to build rakudo star so I can't help as much
TimToady most of us here don't eat that brand of dogfood...
since we're mostly on the bleeding edge
sorear and there's another compiler which for some reason I'm much more familiar with than rakudo 01:28
jakzale another thing when building rakudo dev, is there any difference between nqp which comes with parrot and the nqp from --gen-nqp? 01:31
japhb The nqp from --gen-nqp is a much newer generation. 01:33
Oh, and ...
o/
Spoke with my $day-job's web designer about the perl6.org websites again this afternoon. This time he seemed to be focused on making connections with different groups of people, 01:35
and helping them get what they are looking for.
For example, for the landing page of perl6.org, he suggested we needed to recognize different groups that may be curious about Perl 6 and give those people different ways to make their own connection with Perl 6. 01:36
He gave as examples: young kids, old *nix hackers, language design enthusiasts, web developers, data analysts, etc. 01:38
TimToady a web page with TMTOWTDI, who'd'a thunk... :)
japhb Yeah, strange, right? :-)
TimToady I think I like the way your web designer thinks...
japhb Ditto that.
TimToady obviously old *nix hackers should be redirected to perl6.museum :) 01:39
japhb heh
From another angle, he talked about getting people looking for different kinds of information: Looking for reference documentation for a particular function, class, etc.; looking for the general flavor of the language; looking for snippets of usable code that they can tinker with, and so on. 01:40
But in particular, allowing people to move between those views: 01:41
Someone comes in trying to get a feel for Perl 6. He's a data analyst, so he says "How would I go about parsing Apache logs?" for instance. We have a small grammar that does something like that (parsing line-oriented logs), with some explanatory text. But importantly, links into the reference documentation where appropriate, so he can learn bit-by-bit how to mold that grammar to do his bidding. 01:42
And in the reference documentation, links back to samples that say "Here's how this particular language feature gets used in larger context." 01:43
To answer the question: Given the technical difference between regex, token, and rule, how do they interact in a real grammar? 01:44
01:44 JimmyZ joined
japhb We also had a thread of discussion about people who want to know *why* Perl 6 is the way it is. 01:44
As he said: "A language this strongly mutable probably has a deep unifying reason for it. People coming to perl6.org ought to be able to discover that, and learn more about how the overarching design motif comes out in individual features." 01:45
(Well, not quite a quote, but pretty similar I think.) 01:46
japhb is trying to remember other parts of the conversation -- it was pretty dense. 01:47
I left with a bit of a swimming head.
01:53 JimmyZ left
japhb Oh, there was a short discussion about using Camelia in a stronger way in the website design. Not just like a logo, but embracing it in a deeper way. He talked about a "garden of ideas", a metaphor for how the ideas embraced by Perl 6 flowered into the features and designs of the language. Our butterfly serving as a host to an exploration of @Larry's mental model. 01:53
01:53 JimmyZ joined 01:54 FROGGS_ joined
japhb When I mentioned that I seemed to recall someone (TimToady?) coming up with a genus/species designation for Camelia, he pounced on it as a fun thing for people to explore. Turn something that some people view as "kid-friendly but adult-unfriendly" into "kid-friendly and adult-awesome". Which takes a lot of care, but can be very effective. 01:55
Basically, turn Camelia from a simple thing that is all to easy to ignore to something with a lot of depth that people want to play with. 01:56
01:58 flightrecorder left, FROGGS left
sorear irclog.perlgeek.de/perl6/2011-03-24#i_3421422 01:58
01:59 flightrecorder joined, thou left
skids jakzale: I had no problems with --gen-nqp on star 2012-08 01:59
japhb Ah, so PerlJam++ was the one
geekosaur just misread Canada for Camelia... oy
sorear sometimes it's very easy to search the logs 02:00
/lepid
skids jakzale: my config.status: /usr/bin/perl Configure.pl "--prefix=/usr/local" "--gen-parrot" "--gen-nqp" "--parrot-option=--optimize" $*
jakzale skids: does configure.pl attempt to build and install nqp and parrot? 02:02
02:06 orafu joined 02:08 cbk joined 02:10 OuLouFu left 02:14 am0c left 02:15 cbk left 02:21 jaldhar joined 02:32 jakzale left 02:37 jaldhar left 02:38 the joined, the is now known as Guest79327
skids jakzale: yes. I assume you were online when you tried? 02:39
02:39 jaldhar joined, jakzale joined
raiph phenny: tell Moritz gist.github.com/3662771 02:40
phenny raiph: I'll pass that on when Moritz is around.
02:40 jakzale left 02:45 lichtkind joined
lichtkind does anybody know which rosetta example larry used in YAPC::EUß 02:46
sorear lichtkind: sorting 02:50
merge sort, I think
lichtkind rosettacode.org/wiki/Sorting_algori.../Bead_sort
sorear I assume you meant his keynote
lichtkind bead sort
yes
sorear no, it was not merge sort
lichtkind i found it through history of user:timtoady 02:51
really?
sorear strand sort.
it was strand sort.
rosettacode.org/wiki/Sorting_algori...trand_sort 02:52
lichtkind yes user timtoady was on 95h august on that topic
thanks a lot
did you got my last message for you regarding err/orlese ? 02:53
sorear yes 02:54
lichtkind great
good night 02:55
02:55 raiph left 02:56 lichtkind left 03:07 Circlepuller_ joined 03:09 Circlepuller left
diakopter seen mberends 03:26
aloha mberends was last seen in #perl6 31 days 2 hours ago joining the channel.
diakopter seen fglock
aloha fglock was last seen in #perl6 3 days 9 hours ago joining the channel.
diakopter seen pmurias
aloha pmurias was last seen in #perl6 3 days 11 hours ago saying "jnthn: how do I hook it a js backend to nqp?".
diakopter seen pmichaud
aloha pmichaud was last seen in #perl6 1 days 13 hours ago joining the channel.
diakopter seen diakopter 03:27
aloha diakopter was last seen in #perl6 0 seconds ago saying "seen diakopter".
diakopter seen aloha
aloha aloha was last seen in #parrot 9 hours 41 mins ago joining the channel.
diakopter seen #parrot
aloha #parrot was last seen in 15598 days 3 hours ago .
03:59 xinming_ left 04:03 Chillance left 04:08 telex left 04:10 xinming joined 04:13 JimmyZ left 04:14 telex joined 04:16 ironcamel joined 04:21 telex left 04:22 thou joined 04:25 JimmyZ joined 04:34 Alpha64 joined
Alpha64 hello 04:34
sorear Hello Alpha64 and welcome to #perl6. 04:35
Alpha64 i saw this cool feature of perl6 but it gives "Constant type declarator not yet implemented"
what does that mean? feature not implemented or what?
sorear r: constant texas_pi = 3;
p6eval rakudo d62461: ( no output ) 04:36
sorear yes, it means feature not implemented
Alpha64 ideone.com/NqWd6
;_;
04:36 telex joined
sorear r: constant @fib = 0 04:36
p6eval rakudo d62461: ( no output )
sorear seems to work.
what's your perl6 -v ?
Alpha64 no idea, just using ideone 04:37
rakudo-2010.08
that might be a problem hahaha 2010 04:38
sorear yeaaaaahhhhhh 04:41
Alpha64 i'm staying on the channel since i want to learn this new stuff anyway 04:42
it works on the latest ver of rakudo :D 04:50
JimmyZ :) 04:51
05:00 mdupont joined 05:11 JimmyZ left 05:13 Circlepuller joined 05:14 Circlepuller_ left 05:18 benabik left 05:21 benabik joined 05:22 skids left 05:26 abercrombie joined 05:38 thou left 05:48 kaare__ joined
dalek ecza: d67e96f | sorear++ | lib/ (10 files):
Move all [CORESaved] statics to instance variables of Compartment

More static variable removal.
06:36
FROGGS_ good morning 06:40
sorear o/ 06:43
06:51 zby_home joined 06:52 wamba joined
dalek ecza: 2ae0f72 | sorear++ | lib/ (4 files):
Move most of the [CompartmentGlobal] stuff into the compartment object
07:24
07:26 tadzik joined 07:39 yarp joined 07:46 mucker joined 07:48 yarp_ joined
tadzik sorear: re device, I think I'll just ask the Oslo office when I get to work on mon/tue 07:52
sorear o/ tadzik 07:57
tadzik sorear: o/ 07:58
dalek ecza: c3c572b | sorear++ | lib/ (4 files):
Move remaining [CompartmentGlobal]s into Compartment and retire CompartmentGlobal system
08:07
08:11 tadzik left 08:12 Alpha64 left 08:13 snearch joined 08:17 GlitchMr joined
FROGGS_ jnthn, arnsholt: what do you think about that? github.com/FROGGS/zavolaj/commit/8d9afca6d0 08:17
needs a bit improvement though 08:18
08:20 yarp left, Psyche^ joined 08:23 Patterner left, Psyche^ is now known as Patterner 08:26 tadzik joined 08:31 tadzik left 08:35 sqirrel joined
GlitchMr Just wondering, when perlcabal.org/~/ will be updated to include my public_html 08:43
Is it even updated?
Timbus To update this listing, run perl gen.pl in pugs/docs/feather/~ and wait for the automatic update. 08:44
GlitchMr (and why I cannot SSH login on perlcabal.org... does anybody use 100% of CPU or something) 08:45
Even HTTP seems slow
08:54 daniel-s_ is now known as daniel-s
GlitchMr Linux feather 2.6.32-5-amd64 #1 SMP Mon Mar 7 21:35:22 UTC 2011 x86_64 08:55
ok, so I have feeling I managed to login... after 10 minutes
(now I'm waiting for shell to appear)
Now I see MOTD 08:59
uhmmm... fun 09:00
Where is my shell?
moritz GlitchMr: if you find out which process consumes so many resources, let me know and I'll kill it 09:03
phenny moritz: 02:40Z <raiph> tell moritz gist.github.com/3662771
FROGGS_ .oO( please hold the line, your packets will be transferred to the next free shell ) 09:04
09:06 tadzik_home joined
tadzik_home hello #perl6 09:06
tadzik_home tries to run htop on feather now
sorear hello tadzik_home
who killed feather?
tadzik_home if it's my weechat again, I'm ditching this crap forever
09:10 leont joined
sorear o/ leont 09:10
leont Good * to you too 09:11
GlitchMr I'm at shell
But it's so slow that I don't see letters
tadzik_home GlitchMr: please just `killall -9 weechat-curses` 09:12
just in case
GlitchMr I have typed "top" and enter just in case
tadzik_home and it should be lightweight enough for feather to handle
GlitchMr Perhaps I will see results in 10 minutes
tadzik_home: I use weechat at my PC
Not on feather
ok, bash now runs "top" 09:13
(well, at least I see "top" in shell)
But for it to actually run, I have to wait
tadzik_home Juerd timeouts. We're doomed :) 09:24
arnsholt o/
dalek href="https://glitchmr.github.com:">glitchmr.github.com: 147f76c | GlitchMr++ | index.css:
Add <h3> and <h4> CSS style
09:25
GlitchMr I'm still waiting for "top"
Also, I have feeling I shouldn't add my website to dalek ;-)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 09:26
tadzik_home I don't see a reason for that, frankly :)
GlitchMr 10858 sergot 20 0 82604 2796 492 D 0,7 0,2 0:08.63 perl6
huh?
tadzik_home cronjobs 09:27
probably
but, wait, 0.7 CPU and 0.2 MEM
doesn't sound _that_ bad
GlitchMr gist.github.com/3727106
but... feather runs lots of processes
What?
What's going on 09:28
tadzik_home "just" network latency?
sorear 8067 p6eval 20 0 338m 3092 620 D 0,3 0,3 0:32.02 perl
GlitchMr That would make sense
tadzik_home oh, look
sorear 5433 p6eval 20 0 1969m 856m 1416 D 0,4 72,9 1:06.95 mono
tadzik_home right
that's plenty of ram :)
GlitchMr Huge network latency
Wait... 1969MB 09:29
what?
This is probably the reason
sorear kill it.
if you can.
GlitchMr I cannot
tadzik_home look at load average :D
GlitchMr It's not my process
sorear OTOH 09:30
KiB Swap: 2686060 total, 2227680 used, 458380 free, 18512 cached
tadzik_home evalbot restart
GlitchMr But perhaps...
tadzik_home how do I say this
sorear tadzik_home: don't
tadzik_home: the evalbot runs on feather3
tadzik_home ah, ok
09:30 mucker left
sorear tadzik_home: this could only be the rebuild process 09:30
so clearly it's my fault, I caused the niecza rebuild
GlitchMr n: say "Are you rebuilt?"
p6eval niecza v21-5-gd67e96f: OUTPUT«Are you rebuilt?␤»
moritz well, we should probably ulimit it
I still don't have a shell to kill that process :( 09:31
GlitchMr moritz: it took me 20 minutes to get shell access 09:32
Because it's so slow
tadzik_home everybody logout
maybe them moritz can get access :)
sorear here's a radical idea
moritz sorear: are you logged in? 09:33
sorear after the process is killed, let's run swapoff on feather.
tadzik_home or maybe everybody login, and _someone_ will get the cpu time :P
sorear moritz: no :(
GlitchMr tadzik_home: I have shell, but I cannot kill that process
sorear because with 1.2 GiB feather *does not need swap*
and all it does is slow stuff down
well
tadzik_home agreed
sorear hmm
moritz uhm
tadzik_home OOM is usually better than swapping
at least the system is usable 09:34
moritz if we can still build rakudo then, +1
GlitchMr Also, usually feather isn't slow when somebody uses 99% of CPU
moritz yes, it's only the swapping
09:34 Util left
sorear also, let's serialize the rebuilds 09:34
GlitchMr ok, it's now faster
tadzik_home yes 09:35
GlitchMr Reboot?
tadzik_home no
GlitchMr I can see that we lost 70 days of uptime
09:35 Juerd joined
tadzik_home Sorry, user tjs is not allowed to execute '/usr/bin/killall mono' as root on feather. 09:35
:(
sorear sorear@feather:~$ uptime 11:35:44 up 1 min, 6 users, load average: 4.16, 1.35, 0.47
tadzik_home oh, there's been reboot alright 09:36
09:36 sergot joined
Juerd rehi 09:36
I decided to just reboot when I couldn't even log in on the console anymore :)
sergot hi o/
tadzik_home reasonable choice, probably :)
sorear Juerd: can we do something to make the kernel not give so much priority to swapping processes?
GlitchMr Juerd: well, I have managed to log in after 20 minutes ;-)
09:36 topo joined
tadzik_home how do I set ulimit on myself? 09:37
Juerd sorear: No, but individuals can easily limit the amount of memory they'll use.
tadzik_home (Justin Case)
Juerd tadzik_home: man ulimit
sorear ulimit -v KILOBYTES
tadzik_home heh, thanks
GlitchMr tadzik_home: ulimit -something 21849
sorear help ulimit
moritz so, why can't I login now?
sorear not man, it's a shell builtin
tadzik_home maybe we could add some info to MOTD
GlitchMr To get -somethings, use ulimit -a
Juerd moritz: I don't know. I can login. What's the error message?
moritz Juerd: works now
a minute ago it hung 09:38
sorear moritz: a minute ago Juerd rebooted feather1
Juerd no, that was 4 minutes age
ago
11:38:17 up 4 min, 8 users, load average: 0,36, 0,83, 0,40
Whaaaat? Commas in my load averages?
moritz weird locale?
Juerd It's not weird
sorear so, what can we set ulimit to that will stop the nieczabuild from eating 1.7 gib but allow rakudo to eat 1.7 gib? 09:39
Juerd I'd expect commas if the rest of the message were in Dutch
GlitchMr glitchmr@feather ~> uptime
11:38:48 up 5 min, 8 users, load average: 0,20, 0,73, 0,38
I have commas too (locale in Polish)
Juerd But English and decimal commas look weird together.
09:39 tadzik joined
tadzik it's alive! \o/ 09:39
GlitchMr I have feeling it's locale
09:39 tadzik_home left
sorear I have real dots. :p 09:39
GlitchMr s/in/is/
moritz sorear: you can set a ulimit in the rebuild-niecza.{sh,pl} script in the evalbot repo
Juerd Anyhow, please don't kill feather again because the rest of the day I won't be available to reboot it :P 09:40
GlitchMr uptime uses dots or commas depending on locale. This sort of makes sense
Juerd GlitchMr: It'd make sense if it'd also use a translated line, IMO
sorear looks like niecza building takes <200MB here
so something must have glitched on p6eval, as opposed to a memory regression
Juerd sorear: Don't judge by looking at top. It may have subsecond peaks. 09:41
09:41 leont left
GlitchMr I would think it's not translated to work well with utilities that parse uptime 09:41
sorear Juerd: I get 151232512 maximum resident set size from /usr/bin/time -l
GlitchMr Except that doesn't make sense
glitchmr@feather ~> uptime | awk '{print 0 + $9}' 09:42
0
Code like this would work only in locales which use dot instead of comma
sorear some jerk at $dayjob gave me an 8GB computer and now I have to work to notice memory regressions
tadzik bah, I now don't remember what channels I was on :)
moritz sorear: you can always start a VM in there :-)
dalek albot: 86bf720 | moritz++ | build-scripts/rebuild-niecza.sh:
ulimit niecza rebuild
09:43
GlitchMr :-)
I hope that it won't crash feather1
moritz sorear: I've run git clean -xdf in p6eval's niecza dir, and rebuilding now
dalek ecza: a216174 | sorear++ | lib/ (2 files):
fix excessive replace, remove dead code
09:45
09:47 spider-mario joined
GlitchMr hugme: help 09:48
hugme GlitchMr: (add $who to $project | list projects | show $project | hug $nickname | tweet $twittername $message )
GlitchMr hugme: list projects
hugme GlitchMr: I know about Math-Model, Math-RungeKutta, MiniDBI, bench-scripts, book, gge, hugme, ilbot, java2perl6, json, modules.perl6.org, november, nqp-rx, nqpbook, perl6, perl6-examples, perl6-wtop, proto, pugs, rakudo, star, svg-matchdumper, svg-plot, tardis, try.rakudo.org, tufte, ufo, web, yapsi
GlitchMr Just wondering, is it possible to add my projects to that list?
add glitchmr to hugme 09:50
hugme: add GlitchMr to hugme
hugme GlitchMr: You need to register with freenode first
sorear GlitchMr: hugme has never been updated since the github api v1, and I don't think it currently works at all
GlitchMr oh, ok
sorear hugme: hug GlitchMr
hugme hugs GlitchMr
GlitchMr That sort of makes sense
sorear except that way
moritz hugme: add glitchmr to perl6 09:51
hugme moritz: You need to register with freenode first
moritz grml
GlitchMr Well, I'm registered, but hugme doesn't see that ;-)
moritz n: say 1 09:52
p6eval niecza v21-7-gc3c572b: OUTPUT«1␤»
GlitchMr Also, would it be possible to add glitchmr.github.com/index.xml to planetsix.perl.org/?
moritz GlitchMr: ping [Coke] about that when he reappears
GlitchMr ok
09:53 PacoAir joined
sorear sleep& 09:54
tadzik good knight sorear
09:58 PacoAir left, PacoAir joined 09:59 MayDaniel joined
GlitchMr I can use set(1, 2, 3) as short form of Set.new(1, 2, 3) 10:00
Can I do that with KeySets too?
moritz can you?
GlitchMr (I guess not, looking at output of .perl, but I can ask, right?)
moritz what happens if you try? 10:01
tadzik :>
GlitchMr Well, I can do KeySet.new(1, 2, 3)
But there is nothing like keyset(1, 2, 3)
tadzik r: keyset(1, 2, 3)
p6eval rakudo d62461: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&keyset' called (line 1)␤»
tadzik n: keyset(1, 2, 3)
moritz I guess that answers your question
p6eval niecza v21-8-ga216174: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'keyset' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1435 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /ho…
GlitchMr I guess that if I want mutable set, I have to use .new :-)
Also, just wondering, but is there anything like .add and .discard from Python for KeySet in Perl 6? 10:02
tadzik I don't know what's .add and .discard 10:03
moritz phenny: tell sorear on feather1 as p6eval, niecza rebuild succeeds, but the 'mono run/Niecza.exe -C Test JSYNC Threads' throws an exception with a backtrace too long for my screen buffer
phenny moritz: I'll pass that on when sorear is around.
tadzik use Magic::The::Gathering;
GlitchMr Like gist.github.com/3727197
tadzik so you can add mana to your mana poll, and discard cards
10:07 sqirrel left
GlitchMr perl6: (set(2) xx 4).perl.print 10:07
p6eval niecza v21-8-ga216174: OUTPUT«(set("2"), set("2"), set("2"), set("2")).list»
..rakudo d62461: OUTPUT«("2", "2", "2", "2").list»
GlitchMr Is it Rakudo bug?
moritz r: say set(1).list 10:08
p6eval rakudo d62461: OUTPUT«1␤»
moritz r: say set(1).list.perl
p6eval rakudo d62461: OUTPUT«("1",).list␤»
moritz r: say set(1, 2).list.perl
p6eval rakudo d62461: OUTPUT«("1", "2").list␤»
moritz n: say set(1, 2).list.perl
p6eval niecza v21-8-ga216174: OUTPUT«("1", "2").list␤»
moritz might, or might not be 10:09
GlitchMr What if I want four sets?
moritz nr: say (set(2).item xx 4).perl
p6eval rakudo d62461, niecza v21-8-ga216174: OUTPUT«(set("2"), set("2"), set("2"), set("2")).list␤»
GlitchMr oh, ok 10:10
evalbot: help 10:11
p6eval: help
p6eval GlitchMr: Usage: <(star|pugs|nqp|b|std|niecza|rakudo|nom|npr|n|r|perl6|prn|rn|p|rnp|nrp|pnr|rpn|p6|nr)(?^::\s) $perl6_program>
GlitchMr Why regexp?
moritz unambiguous 10:12
GlitchMr Anyways, can I append and remove entries form KeySet like I can do in Python: gist.github.com/3727197 10:15
dalek kudo/nom: 286df2a | moritz++ | t/spectest.data:
four more passing test files (is this Christmas? :-)
10:20
10:25 inokenty left
dalek ast: b94fb84 | GlitchMr++ | S29-os/system.t:
Remove special casing of Microsoft Windows in system test.

When pugs wasn't available on Windows machine, it was failing because test through that on Windows the only Perl 6 implementation is pugs.
10:26
timotimo i know Reverse Polish Notation, but what are prn, rnp, nrp and pnr? ;) 10:27
GlitchMr timotimo: it's Rakudo Pugs Niecza 10:28
tadzik :)
dalek ast: de96bae | GlitchMr++ | S02-types/declare.t:
Unfudge KeySet test for Rakudo
10:37
10:43 mdupont left 10:46 whiteknight joined 11:05 Su-Shee_ joined 11:06 pmurias joined
pmurias jnthn: pastie.org/4724796 throws a strange exception 11:07
11:08 Su-Shee left 11:15 JimmyZ joined
jnthn pmurias: That looks like a (weird) case of $*W not being initialized 11:19
pmurias: Which is really odd in that it gets set up in TOP... 11:20
moritz: system.t fails here, fwiw 11:34
(will look into it)
dalek ast: bb17bbe | jnthn++ | rosettacode/ (2 files):
Slightly inelegant but working fix for rosettacode tests on Windows.
11:37
jnthn moritz: The problem seems to be that it throws an exception on the program that doesn't exist 11:39
moritz it does? 11:41
jnthn yeah 11:42
Well, on Windows it does. 11:43
It looks like the generic case also looks like it has a code path whereby it may throw an exception too
11:54 Guest79327 left 11:56 wamba left
moritz that's curious 11:57
I never managed to trigger that
jnthn It looks like it'd take something odd for it to do so 11:58
But on Windows it apparently will trigger more easily
Well, got some fix here. Spectesting.
dalek p: 1fbc5ed | jnthn++ | src/how/NQPClassHOW.pm:
Cannot use say in the meta-objects, as they are compiled without the setting.
12:02
12:07 wamba joined
dalek kudo/nom: 81edc97 | jnthn++ | src/core/control.pm:
The spawnw op can in some cases throw an exception; be sure to handle it. Unbusts system.t on Windows.
12:08
12:11 wamba left 12:13 mucker joined 12:28 mdupont joined 12:29 mdupont left, mdupont joined
dalek p: ff65502 | jnthn++ | src/6model/reprs/P6opaque.c:
Improve wording of an error.
12:33
12:37 the joined, the is now known as Guest53549
pmurias jnthn: NQP::World fails to get created 12:42
food& 12:44
12:45 mucker left 12:46 Guest53549 left
moritz jnthn: it would be even more awesome if that error included the name of the type 12:52
i mean, the actual type
jnthn moritz: hm, good point. 12:53
Should be do-able.
GlitchMr Just wondering, I have Perl 6 regexp - how can I parse it? 12:56
Something like Regex.parse('abc'), except Regex should be grammar 12:58
dalek d: 27570f6 | GlitchMr++ | STD.pm6:
Propose $[*-1] instead of invalid $-1.
13:14
13:20 skids joined 13:35 yarp_ left 13:38 yarp joined
sergot nom: sub b(*@b) { .say for @b }; sub a(*@a) { b(@a) }; b(1,2,3) 13:42
p6eval rakudo 81edc9: OUTPUT«1␤2␤3␤»
sergot nom: sub b(*@b) { .say for @b; say @b.perl }; sub a(*@a) { b(@a) }; b(1,2,3)
p6eval rakudo 81edc9: OUTPUT«1␤2␤3␤Array.new(1, 2, 3)␤»
sergot nom: sub b(*@b) { .say for @b; say @b.perl }; sub a(*@a) { b(@a); say @a.perl }; b(1,2,3)
p6eval rakudo 81edc9: OUTPUT«1␤2␤3␤Array.new(1, 2, 3)␤»
sergot nom: sub b(*@b) { .say for @b; say @b.perl }; sub a(*@a) { b(@a); say @a.perl }; a(1,2,3) 13:43
p6eval rakudo 81edc9: OUTPUT«1␤2␤3␤Array.new(1, 2, 3)␤Array.new(1, 2, 3)␤»
sergot nom: sub b(*@b) { .say for @b; say @b.perl }; sub a(*@a) { b(@a); say @a.perl }; a((1,2,3)) 13:44
p6eval rakudo 81edc9: OUTPUT«1␤2␤3␤Array.new(1, 2, 3)␤Array.new(1, 2, 3)␤»
dalek p: 6046125 | jnthn++ | src/pmc/nqplexpad.pmc:
Update NQP lexpad to support natively typed lexicals.
13:46
p: 6878bf4 | jnthn++ | src/QAST/Compiler.nqp:
Fix/improvement to type and scope handling in QAST::Compiler.
p: 0c0bab6 | jnthn++ | src/NQP/Actions.pm:
Implement natively typed lexicals.
p: e417703 | jnthn++ | t/nqp/64-native.t:
Add initial tests for native ints.
sergot nom: sub b(*@b) { .say for @b; say @b.perl }; sub a(*@a) { b(|@a); say @a.perl }; a((1,2,3)) 13:47
p6eval rakudo 81edc9: OUTPUT«1␤2␤3␤Array.new(1, 2, 3)␤Array.new(1, 2, 3)␤»
skids nom: my @a = (1); (1,@a[],1).say; (1,@a[],1).perl.say; (1,@a[],1).gist.say; # not complaining, just to bake sergot's noodle. 13:49
p6eval rakudo 81edc9: OUTPUT«1 1 1␤(1, Array.new(1), 1)␤1 1 1␤»
skids oh oops.
nom: my @a = (); (1,@a[],1).say; (1,@a[],1).perl.say; (1,@a[],1).gist.say; # not complaining, just to bake sergot's noodle.
p6eval rakudo 81edc9: OUTPUT«1 1␤(1, Array.new(), 1)␤1 1␤»
13:50 mucker joined
skids nom: my @a = (); (1,@a[],1).say; (1,@a[],1).perl.say; (1,@a[],1).gist.say; (1,@a[],1).join(",").say; #forgot that 13:50
p6eval rakudo 81edc9: OUTPUT«1 1␤(1, Array.new(), 1)␤1 1␤1,1␤»
pmurias jnthn: what could be causing NQP::World.BUILD to return NQPMu? 13:57
jnthn pmurias: Maybe we're calling NQPMu.new... 13:58
pmurias the BUILD in either NQP::World or HLL::World doesn't get called
jnthn pmurias: Did you try doing this by doing a "use NQP;" and then using NQP::Compiler directly, rather than doing compreg?
pmurias I'll try that 13:59
skids suspects nqp::sha1 doesn't handle 0's in the string correctly.
14:00 yarp left
pmurias how do I set the path to NQP.pbc? 14:00
jnthn --module-path=... 14:01
skids r: nqp::p6box_s(nqp::sha1("\0\0\0")).say; nqp::p6box_s(nqp::sha1("")).say # hopefully hasn't caused any issues for what it is used for 14:03
p6eval rakudo 81edc9: OUTPUT«DA39A3EE5E6B4B0D3255BFEF95601890AFD80709␤DA39A3EE5E6B4B0D3255BFEF95601890AFD80709␤»
pmurias jnthn: there is only nqp.pbc 14:04
jnthn oh...hm
Yeah, I guess we put everything in there.
So it'd be "use nqp" 14:05
pmurias and I get an error where trying to use that (pastie.org/4725436)
14:05 kaare__ left
pmurias jnthn: which seems a bit crazy as the attribute is defined in the same file 14:07
jnthn Get it here too. Hm.
pmurias there is a MAIN in the backtrace 14:08
jnthn I'll twiddle the error to tell us what type of object it's trying to use.
uh
oh.. 14:09
but that's the MAIN for the current running NQP, not from the module.
pmurias right 14:10
jnthn I'm wondering if there's some weird globals related thing going on... :/ 14:11
Loading the compiler while running the compiler clearly should work, and must largely work otherwise we'd not be able to use NQP to compile NQP.
14:17 crab2313 joined
jnthn pmurias: oooh..hmm. 14:23
The serialization output stuff contains...things I don't expect.
GlitchMr Also, perlcabal.org/ doesn't work 14:24
jnthn It may or may not be connected.
GlitchMr HTTP server doesn't seem to be turned on
14:34 wamba joined
dalek p: 341b6d5 | jnthn++ | src/NQP/Actions.pm:
Get natively typed paramters working.
14:48
p: 25f6e41 | jnthn++ | src/stage0/ (9 files):
Update bootstrap so we can start using native types in the compiler.
p: 105e817 | jnthn++ | src/QRegex/Cursor.nqp:
Scatter some type annotations in Cursor.
GlitchMr perl6: my @array = {a => 'b'}, {a => 'c'}; @array»<a>.perl.say 14:50
p6eval rakudo 81edc9: OUTPUT«({"a" => Failure.new(exception => X::AdHoc.new(payload => "postcircumfix:<\{ }> not defined for type Str"))}, {"a" => Failure.new(exception => X::AdHoc.new(payload => "postcircumfix:<\{ }> not defined for type Str"))})␤»
..niecza v21-8-ga216174: OUTPUT«Unhandled exception: Cannot use hash access on an object of type Str␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 352 (Any.at_key @ 9) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/JpLH2Hx31y line 0 (ANON @ 1…
JimmyZ yeah, native type in NQP! 14:51
GlitchMr Why @array»<a> doesn't work? 14:52
Or rather, it works on hash values in array 14:53
Not on hashes in array
I know that I can use @array.map(*<a>), but why @array»<a> doesn't? 14:57
15:01 Celelibi joined 15:08 snearch left 15:11 marmay joined
moritz GlitchMr: hypers recurse into hashes too 15:18
15:18 Chillance joined, benabik left 15:19 benabik joined
GlitchMr moritz: this is feature, I guess? 15:19
moritz GlitchMr: yes 15:20
(I don't like it, but that doesn't stop it from being a feature)
jnthn++ # native types in nqp 15:23
arnsholt phenny: tell sorear Since you're on CA time (IIRC) and jnthn and I are on EU time, maybe the easiest way to start a discussion on portable NativeCall is something asynchronous, like a gist or just email? 15:25
phenny arnsholt: I'll pass that on when sorear is around.
dalek p: c06c0e8 | jnthn++ | src/HLL/Grammar.pm:
Use native types in HLL::Grammar.
15:33
p: b7126b8 | jnthn++ | src/QRegex/NFA.nqp:
Use native types in QRegex::NFA.
GlitchMr std: my $set = set 1, 2, 3;
p6eval std cfe8d43: OUTPUT«ok 00:00 44m␤»
jnthn moritz: It saves some boxing/unboxing, at least 15:36
Another small step in my battle to be able to spectest in under 4 minutes again :)
Made harder by us passing an increasing number of tests :P
dalek kudo/nom: 5ac5f88 | jnthn++ | tools/build/NQP_REVISION:
NQP version bump for better error message and a slight performance win thanks to NQP having native types.
15:39
GlitchMr my class KitchenSink { }
Uhmmm... what is KitchenSink?
moritz nqp: my int $x = 3; $x++; say $x
p6eval nqp: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near " 3; $x++; "␤current instr.: 'panic' pc 19998 (src/stage2/gen/NQPHLL.pir:7314) (src/stage2/gen/NQPHLL.pm:325)␤»
moritz nqp: my int $x := 3; $x++; say $x
p6eval nqp: OUTPUT«Confused at line 2, near "say $x"␤current instr.: 'panic' pc 19998 (src/stage2/gen/NQPHLL.pir:7314) (src/stage2/gen/NQPHLL.pm:325)␤»
GlitchMr And why Apache isn't ran on feather1?
moritz nqp: my int $x := 3; $x++; say($x)
p6eval nqp: OUTPUT«4␤»
jnthn Fun fact: NQP re-writes $x++ into (TMP := $x; $x := $x + 1; TMP) at the AST level 15:41
moritz I thought so
which is why it works in nqp, but not in rakudo 15:42
jnthn Right
Rakudo needs the harder problem of "is rw" native parameters solving.
moritz but does it box for native types?
jnthn "it"?
moritz nqp's ++
jnthn Shoudln't
moritz oh yes it does 15:43
and it even goes through $N registers
jnthn hmmm 15:44
well, the N registers don't surprise me
but yeah, the boxing is...
moritz jnthn: gist.github.com/3728515
jnthn ...hm, wtf
moritz that's the generated code
jnthn It boxes the 1??
oh no
moritz no, the $I10I is bound to $x
jnthn ah 15:45
right
$x := $x + 1; # does not box
It's the temporary that forces the boxing.
moritz thought so
15:46 the joined
jnthn That's kinda annoying. 15:46
moritz ++$x doesn't box
jnthn Yeah
15:46 the is now known as Guest65337
moritz though still pointlessly goes through $N registers 15:46
jnthn That's actually an improvement on pre-QAST NQP, fwiw.
moritz (pointlessly because the result goes into an int anyway)
15:47 M_o_C joined
jnthn That would box the 1 15:47
Anyway, spotting we got two ints and turning add_n into add_i is a task for the optimizer.
15:47 M_o_C left
moritz do we have one? :-) 15:47
jnthn Not yet... ;-) 15:48
All being well, NQP will sometime before the end of this month :)
It's relatively high on my todo list.
(Partly 'cus it's -Ofun to do :)) 15:49
moritz probably easier than in rakudo
jnthn aye
moritz also my int $x = 3 first sets $x to 0, and then to 3
(though that's much cheaper than boxing, I assume) 15:50
GlitchMr I've problem with "make all" on STD - gist.github.com/3728546
jnthn Yeah, aware of that.
GlitchMr Am I doing something incorrectly?
moritz maybe TimToady++ forgot to add the CORE5.setting file? 15:51
TimToady hmm
GlitchMr std: say $^N 15:54
p6eval std cfe8d43: OUTPUT«===SORRY!===␤Unsupported use of $^N variable; in Perl 6 please use $-1 at /tmp/AyOySL3Q2J line 1 (EOF):␤------> say $^N⏏<EOL>␤Parse failed␤FAILED 00:00 42m␤»
GlitchMr $-1 is back (ok, I already have fixed that)
I guess I have to wait for std to recompile
mst www.cpantesters.org/distro/R/Rakudo-Star.html 15:59
build failures!
(this is exciting, and good :)
GlitchMr Build failures called "UNKNOWN" 16:02
This sort of makes sense
moritz jnthn: I tried to declare the temporary variable as QAST::Var.new( :name($tmp), :scope('local'), :decl('var'), :returns($var.returns) ) but that alone didn't help 16:03
dalek d: aab1162 | larry++ | CORE5.setting:
add CORE5.setting
16:05
GlitchMr Also
std: $|++
p6eval std cfe8d43: OUTPUT«===SORRY!===␤Bogus statement at /tmp/mJbJER8m_Z line 1:␤------> <BOL>⏏$|++␤Parse failed␤FAILED 00:00 43m␤»
GlitchMr This should make error similar to that:
std: $|
p6eval std cfe8d43: OUTPUT«===SORRY!===␤Unsupported use of $| variable; in Perl 6 please use :autoflush on open at /tmp/mcREnX5who line 1:␤------> $|⏏<EOL>␤Parse failed␤FAILED 00:00 41m␤»
GlitchMr $|++ will happen, so it should be supported
Actually, I will make issue, ok? 16:06
geekosaur "supported"? 16:07
GlitchMr Well, should make different error
geekosaur std: $|++; 16:08
p6eval std cfe8d43: OUTPUT«===SORRY!===␤Bogus statement at /tmp/C1uCai0AS_ line 1:␤------> <BOL>⏏$|++;␤Parse failed␤FAILED 00:00 43m␤»
geekosaur hm. ok, I see your point, that's a failure of std
GlitchMr github.com/perl6/std/issues/3
Perl 6 should have good error messages 16:09
moritz jnthn: ah, it seems that for a lexical to get installed as a native one, I have to do $block.symbol($varname, :type($type)) 16:12
which we might not want for temporary vars 16:13
mst GlitchMr: UNKNOWN means "didn't get far enough to PASS/FAIL"
moritz hm, can I make it a register instead? 16:14
16:15 perlhack joined
jnthn QAST::Var.new( :name($tmp), :scope('local'), :decl('var') ), 16:16
moritz: ^ already is a local
Add :returns($var.returns) to that
16:16 Bucciarati left
moritz jnthn: that's what I tried 16:16
jnthn And then be sure to add it to the lookup also
QAST::Var.new( :name($tmp), :scope('local') ),
That also wants to get a .returns, I think
well, maybe it shouldn't need it...but maybe it does. 16:17
moritz I'll try
huh, changing src/NQP/Ops.pm doesn't cause 'make' to rebuild :( 16:18
never mind
typed 'make' in the wrong dir :(
16:18 Bucciarati joined 16:19 perlhack left
jnthn phew :) 16:20
time for a break...back later 16:21
GlitchMr std: 1, 2, 3 ==> sort ==> my @numbers 16:24
p6eval std cfe8d43: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix ==> instead at /tmp/sKJ4QQAq1t line 1:␤------> 1, 2, 3 ==> sort ⏏==> my @numbers␤Parse failed␤FAILED 00:00 43m␤»
16:30 JimmyZ left 16:34 raiph joined
GlitchMr wow, I ran 'make snaptest' and somehow it found 'roast' on my PC 16:34
raiph hi all 16:35
moritz hi raiph
GlitchMr cd snap && $(PERL) teststd $(realpath ../roast)
ok, it was just a coincidence that it has found it :-) 16:36
raiph o/ moritz.
i've got a dilemma. gonna outline it here on channel. then go out for a few hours. will backlog tonight.
16:36 crab2313 left
GlitchMr std: sub foo6 (|capture) { bar6(|capture) } 16:37
p6eval std cfe8d43: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'bar6' used at line 1␤Check failed␤FAILED 00:00 44m␤»
raiph i took forever to do the one day summary blogs.perl.org/users/perl_6_reports...09-02.html
GlitchMr std: sub bar6 {...}; sub foo6 (|capture) { bar6(|capture) }
p6eval std cfe8d43: OUTPUT«ok 00:00 45m␤»
raiph i can repeat that approach more quickly than this first day. but it's still very slow. and i'm getting carpal tunnel from all the repetitive keystrokes. 16:38
moritz well, don't
raiph and i'm 2 weeks behind.
moritz rather work on automating it
I will too, but my hacking time is limited :(
raiph moritz: right. problem is i'm a very weak and even slower coder. 16:39
i'm guessing it would take me many weeks to create the solution i outlined in my gist.
(gist.github.com/3662771) 16:40
moritz raiph: well, but I guess it only takes a few hours hacking time to get to a point where you can copy&paste the HTML for a piece of sumamrized IRC log
raiph phase 1 in my gist? 16:41
moritz roughly
fwiw I haven't done it with a log in 16:42
so anybody can summarize
I want to experiment with how well this works
16:43 crab2313 joined
raiph knowing me it would take me weeks to do what others can do in hours. 16:43
moritz before adding accounts if it doesn't work
16:43 marmay left
moritz raiph: I'll try to get the initial changes live by tomorrow 16:43
raiph moritiz: yes. my hope was that anyone could and would summarize.
moritz just hope that $daughter goes to bed soon; that would increase the chances a lot :-) 16:44
16:46 crab2313 left 16:49 crab2313 joined
raiph moritz: (I don't mean to offend. I find this hilarious. Hope you do too.) en.wikipedia.org/wiki/Go_the_Fuck_to_Sleep 16:50
moritz raiph: I know that book :-) 16:52
raiph I've never had kids, but that book still spoke to me eloquently! 16:54
MikeFair Howdy all! I'm not comprehending exactly where I'm going wrong here with making my if statement, here's the error: 16:55
Error while compiling block : Error while compiling block : Error while compiling op if: invoke() not implemented in class 'NQPMu'
dalek d: a8f1a47 | larry++ | STD.pm6:
update special variable guards, GlitchMr++

fixes #3
16:56
MikeFair From what I recall, I think it means that I passed a null in for on of the params to my QAST.Op.new call for :op='if'
16:57 raiph left
MikeFair Which would correspond to the line: 16:57
my $qast := QAST::Op.new( $<cond>.ast, $<then>.ast, :op('if'), :node($/) );
Could my problem be that $<then> will contain either a <statement> or a <statement_list> and I somehow have to distinguish them? 17:00
TimToady well, sure, but why would you want to design a language like that? ;) 17:03
moritz MikeFair: a statement_list also parses a statement
why make that distinction?
MikeFair moritz: Because in the if statement it can either be a single statement or many statements depending on syntax 17:04
moritz anyway, you need to set $<then>.ast
MikeFair Maybe like this?
my $then := $<then><statement_list> ?? $<then><statement_list>.ast !! $<then><statement>.ast;
moritz method then($/) { if $<statement> { make $<statement>.ast } else { make $<staetment_list>.ast } }
TimToady MikeFair: we get that part; does you statement_list have delimiters like begin/end or {}? 17:05
MikeFair TimToady: No it doesn't
TimToady what prevents a statement_list from parsing statement as a degenerate case?
MikeFair if <EXPR> then <statement>
or if <EXPR> then <newline> <statement_list> end if 17:06
TimToady then newline is your delimiter
MikeFair nods.
17:06 SHODAN joined
MikeFair TimToady: Well the presence or non-presence is 17:06
TimToady: I'm happy to take suggestions, but I've been unable to create something that treats the two cases the same way 17:10
moritz MikeFair: I hope you reuse that concept for other constructs, like loops
17:11 MayDaniel left
MikeFair moritz: Well the repeat statement always has an end repeat 17:11
moritz why?
that seems inconsistent
MikeFair moritz: everything else in fact has an "end" as far as I can tell
moritz well, reusing syntactic ideas for different areas is a good idea 17:12
fewer special cases
MikeFair moritz: It's the way HyperTalk was built, I plan on making a modified version of it after I get the first version working
moritz ah well 17:14
MikeFair moritz: I'd like to make something consistent of course 17:15
:)
moritz :-)
TimToady :--)
17:15 xinming left
MikeFair Though in its commitment to being english like, there's a few 'exceptions' 17:15
TimToady I'd image there's about 300 exceptions, given how many syntax rules English actually has 17:16
*imagine
MikeFair For instance, for single parameter functions you can use "sqrt of 4" as a function call
17:16 Juerd left
MikeFair TimToady: Fortunately it's not trying to be a native language parses 17:16
moritz I can't decide right now if that's cute or scary
17:17 xinming joined, Juerd joined
MikeFair moritz: I know the feeling! :) 17:17
moritz: Though after a while of working with a variant of the language (the family of languages like this are referred to as xTalk) I actually really came to appreciate the native language connection 17:18
TimToady imagines a language in which you can say 4's sqrt 17:19
MikeFair moritz: I was kind of biggoted at first about its verbosity, it's multiple ways to say the same thing, and it's lack of consistency, but after a while it became clear to me that what they are attempting to do with the language is a laudable goal and worthy of pursuing
TimToady: hehe - I hadn't considered that 17:20
TimToady: ' is the possissive operator ;)
err 's
moritz but only if the object has just one syllable :-)
TimToady huh? 17:21
MikeFair moritz: And it's name doens't in s otherwise it's his' sqrt
MikeFair wonders if there's something wrong with this keyboard.
moritz wait, that was the rule for 'more $adj' vs $adj ~ 'er'
TimToady and it has exceptions in any case
you can't even restrict 's to a single word 17:22
MikeFair TimToady: but you can say things like "put 'Mike' before the second word of field txtentry"
TimToady famous example: the King of England's hat
moritz jnthn: adding the :returns($var.returns) to both mentions of the temp var didn't help, it still declares it as a .local pmc 17:23
TimToady England's King's hat doesn't quite work out as well somehow
moritz: "pretty" -> "prettier" 17:24
MikeFair TimToady: using Parrot my goal actually is to allow the programmer to publish new Grammar rules at least at compile time and possibly even runtime
TimToady: So we could make an attempt at adding the 's operator :) 17:25
17:26 MayDaniel joined
MikeFair TimToady: But back on my if, what prevents statement_list from catching the 'single <statement>' is that there's no 'end if' clause to stop it from sucking up everything 17:27
jnthn MikeFair: All of the interesting stuff there is in NQP, not really in Parrot :) 17:28
MikeFair jnthn: I think I'm coming to realize that
jnthn MikeFair: So when NQP runs in other places, you can get those same nice properties on other VMs too :)
MikeFair jnthn: Though I'm wondering if I'd be more comfortable in Winxed that NQP
jnthn Then you don't have the nice grammar stuff and are tied to Parrot :) 17:29
GlitchMr github.com/organizations/perl6/das...state=open
jnthn moritz: ohhhh
MikeFair jnthn: I'm actually considering just doing the whole thing in P6 instead
jnthn moritz: Because NQP doesn't tag every usage with the type.
moritz: It stores it in the block symbol table at declaration.
MikeFair jnthn: But when Parrot starts using 6model will it really make that much a difference?
moritz jnthn: in src/NQP/Ops.pm how do I get hold of the block? 17:30
MikeFair: then you still won't have the grammar engine in parrot, but in nqp
jnthn: or is the right way to tag the usages with the types in the actions? 17:31
MikeFair moritz: Right, but the Grammar engine is always going to be the P6 Grammar rules regardless right? The main difference is in Actions.pm I thought
moritz MikeFair: I'm confused by that question 17:32
MikeFair moritz: Well Grammar.pm while always be some form of the P6 grammar rules, regardless of which technology I'm using
jnthn moritz: See what happens in QAST::Compiler to look it up there, where we compile QAST::Var. 17:33
MikeFair that just seems common to all of them
jnthn moritz: It looks into $*BLOCK
moritz: But you'll end up copying-pasting...so maybe factor it into a method on $*BLOCK.
(which is a BlockInfo)
MikeFair native P6, NQP, or Winxed -- Grammar.pm looks very much the same
moritz jnthn: erm, factor what into a method?
you mean something like $*BLOCK.returns($var) ? 17:34
MikeFair moritz: However Actions.pm looks very different between PAST/QAST (and if I did a native P6 version, it likely wouldn't even have an Actions.pm file) 17:35
GlitchMr Just wondering, when github.com/perl6/specs/issues/20 will be fixed?
17:35 thou joined
moritz MikeFair: if you did a native P6 version, you'd still need rules for how to compile stuff 17:36
MikeFair moritz: Well I could just make a Perl6 interpretter
moritz GlitchMr: when somebody gets around to it
MikeFair: yes, but you'd still need some actions 17:37
jnthn moritz: No, the while loop around line 836
(In QAST::Compiler)
It looks for the type in the symbol table outer chain.
MikeFair moritz: yes, but the direct connection to an Actions.pm might work some entirely different way
moritz: My comment was really just pointing to that the P6 Grammar described in S05 seems to be the way that the syntax of the langauge will be described almost regardless of what I do 17:38
17:39 crab2313 left
GlitchMr Also, let's say I totally break Perl 6 grammar in code. .perl doesn't work correctly then. And I guess it's feature 17:39
MikeFair All that aside, jnthn's comment is still accurate, all the magic I'm really looking for is coming from NQP more than Parrot 17:40
And there's a lot of semantics in P6 that are identical in xTalk, just the syntax is very different 17:41
So I'm thinking that what I'm aiming to ultimately accomplish is extremely doable. (And would likely only take one of the folks with a cleaner grok of the situation a few hours where it'll likely take me months) :) 17:44
jnthn dinner & 17:47
17:48 crab2313 joined 17:51 mucker left
MikeFair moritz: I think I'm doing something wrong... I added the method then($/) which did the branch and called make on the two nodes 17:55
but it doesn't seem to be called
I even tried explicitly 'make $<then>.ast' in my if_expr method and it still isn't being called... I can see that the if_expr itself is being called though 17:56
moritz MikeFair: push your changes (maybe to a branch) so that I can look at them 17:57
17:59 crab2313 left
MikeFair ok checked in 18:00
I just did it straight to master
18:00 Juerd left
moritz did you also push your changes? 18:00
18:00 crab2313 joined
MikeFair I have now. *grin* ;) 18:01
moritz MikeFair: oh, you don't call a subrule for the 'then' part 18:03
then an action method won't trigger either
MikeFair right, I'm assigning it, I could make it a subrule though
sorear good * #perl6
phenny sorear: 10:03Z <moritz> tell sorear on feather1 as p6eval, niecza rebuild succeeds, but the 'mono run/Niecza.exe -C Test JSYNC Threads' throws an exception with a backtrace too long for my screen buffer
sorear: 15:25Z <arnsholt> tell sorear Since you're on CA time (IIRC) and jnthn and I are on EU time, maybe the easiest way to start a discussion on portable NativeCall is something asynchronous, like a gist or just email?
sorear arnsholt: ping
moritz MikeFair: or use the ternary you suggested earlier 18:04
might be easier in this case
18:05 abercrombie left
MikeFair moritz: Well in thinking about the ternary, the problem comes in a multi if with a single else 18:05
if 1 then 2; 3; 4; else 5
versus if 1 then 2; 3; 4; else 5; 6; 7; end if 18:06
hmm
MikeFair checks the BNF he has to see if the end if is required in that first case
nope 18:07
<elseBlock> = else {<stmnt> | <return> <stmntList> end if}
moritz: If I explicitly call "make $<then>.ast" in my if_expr action method, wouldn't that do it? 18:09
moritz MikeFair: just check if $<then>.ast is what you think it should be
MikeFair I was originally playing with this: if ( $<then><statement> ) { make $<then><statment> } else { make $<then><statement_list> } but I wasn't sure if that was doing anything at all 18:11
I guess I'm not understanding what I'm checking where, then should contain either a statement or statement_list match 18:12
moritz so, add a say($<then>.ast) 18:13
MikeFair I thought the method action calls would have been automatically called but I think what I'm getting now is that they need to be explicitly made
moritz MikeFair: for each subrule call an action method is called if it exists
MikeFair: but you never call <then>
so the action method called 'then' won't get called either 18:14
MikeFair THEN: say "hi" 18:16
; THENAST: QAST::Stmts<-824484227>
say("THEN: ", $<then>, "; THENAST: ", $<then>.ast);
18:16 Juerd joined
MikeFair That's at the top of my if_expr 18:16
moritz ok, $<then>.ast isn't null 18:17
and it's some other thing that's wrong
MikeFair checks <cond>
moritz what was the error message again?
arnsholt sorear: Pong 18:18
MikeFair Error while compiling block : Error while compiling block : Error while compiling op if: invoke() not implemented in class 'NQPMu' 18:19
So $<cond>.ast and $<then>.ast both have values 18:20
18:21 Juerd left
moritz if ($<else>) { 18:21
make $<else>.ast;
that part is wrong
it replaces the previous ast with $<else>.ast
MikeFair oh interesting
moritz in general you're doing something wrong if you call make() more than once per action method 18:22
MikeFair Ok that makes sense
So I'm going to think of "make" as "create this node"
moritz make($foo) is roughly the same as $/.ast = $foo;
MikeFair And everything else before it is "build up the node to add"
ok yeah "assign the AST for this node" 18:23
I can get that
moritz: ok I pushed a couple minor updates 18:24
If you build the latest and the run ./installable_safire i
you'll see a simple test case, one single if, one multi if, no else claises 18:25
err clauses
moritz $qast.push( $<else>.ast ); 18:26
but the rule is called elsePart
MikeFair looks 18:27
Right ok, and inside elsePart I assign else 18:28
moritz but that would be $<elsePart><else> inside the if_expr action method
MikeFair So in this case I'm looking for $<elsePart><statement>
18:29 snearch joined
MikeFair And I can get rid of the else assignment inside elsePart 18:29
I only did that because I was having a hard time comprehending the combinations of <statement> and <statement_list> arrays
moritz add an method elsePart($/) { make ($<statement> || $<statement_list>).ast }
18:29 imarcusthis joined
moritz to actions 18:30
and then use $<elsePart>.ast in if_expr
Public Service Announcement: I'll shorlty do a schema change in the irclog table, and the IRC logs will be unavailable during that time 18:31
ETA: 30..60min
GlitchMr I hope that IRC logs will be still logged
moritz GlitchMr: I hope so too
update running 18:33
MikeFair moritz: added method elsePart($/) { make ( $<statement> || $<statement_list> ).ast } 18:34
GlitchMr I can access IRC logs, I just don't see changes
MikeFair moritz: modified if_expr to use $<elsePart> in place of $<else>
moritz has no idea how mysql handles schema changes and concurrent writes 18:35
18:35 marmay joined
moritz not that first time I wish I'd started out with postgres instead 18:36
MikeFair: does the error message change?
MikeFair nope
moritz MikeFair: push! push! 18:37
MikeFair well I added code to set the name of the "handler" block so 'slightly'
arnsholt moritz: At a guess, badly
IIRC mysql has very little safety around schema manipulation
18:37 _ilbot left
moritz well, one thing it does is only change the schema of a copy of the DB 18:38
so if you abort a schema change, you can still use the table :-)
arnsholt Well, that's good
MikeFair moritz: pushed ! :-)
jnthn back 18:39
MikeFair hi there jnthn 18:41
Good dinner I assume. :)
18:42 _ilbot joined 18:43 gongyiliao joined
MikeFair moritz: What about this.... If the empty newlines are being treated as "statements" and then an AST tries to get made out of them? 18:43
moritz MikeFair: does $<EXPR>.ast work? 18:44
MikeFair: have you tried that?
MikeFair Yes
COND: 1; CONDAST: QAST::IVal<1225439772>
moritz || [ <.ws> \v ]+ 18:45
MikeFair Does the blank lines in this cause a problem:
THEN: say "hi"
; THENAST: QAST::Op<1241277467>
(oh they got filtered)
moritz if that branch of <statement> is taken, $<statement>.ast will be NQPMu
MikeFair moritz: I think that causes an infinite loop 18:46
moritz IRC logs are back
Query OK, 6643088 rows affected (8 min 37.26 sec) 18:47
GlitchMr That was fast compared to 30..60min
moritz well, it took 40min on my laptop
I didn't know the server was that much faster :-)
GlitchMr Well, it means that you have good server ;-)
moritz aye, no complaints there :-) 18:48
MikeFair moritz: ok if I strip that out of statement, which I'm happy to do, then my code breaks on multiple newlines
GlitchMr faui2k3.org/
jnthn MikeFair: Yes, spicy stuff... :)
GlitchMr This?
moritz GlitchMr: yes 18:49
jnthn MikeFair: I'm a bit surprised about the invoke() not implemented, fwiw
MikeFair: It feels like the QAST::Compiler should really be able to give you a better explanation of what's going on...
moritz MikeFair: maybe stmntEnd should parse multiple newlines?
MikeFair jnthn: That does make me feel better, but I'm suspecting that it's going to turn out that I'm doing something stupid in some respect 18:50
moritz fwiw the IRC logs now have a very basic summary mode
MikeFair moritz: Yeah I've gotten lots of infinite loops trying to do that...
oh wait, maybe * instead of ?
jnthn MikeFair: Yes, I suspect there's a bug in what you have, but I like to try and get decent error reporting :)
I tended to improve ones I ran into.
moritz MikeFair: you get infinite loops when you try to quantify a rule that matches the empty string 18:51
MikeFair moritz: like <.ws>
moritz correct 18:52
there's no reason ever to write <.ws>* or <.ws>+
18:52 lue joined
GlitchMr How summary mode works? 18:52
moritz just write your ws rule to match all (insignificant) whitespace in the first place
MikeFair jnthn: Well you're the second one to think there might be a big here
lue $ panda
===SORRY!===
SixModelObject does not implement get_pmc_keyed_int
(just upgraded perl6, but not panda) 18:53
MikeFair moritz: ok well \n is insigificant "sometimes"
gotta go to a soccer game for my daughter
moritz GlitchMr: there's a link on top of the page that enables it, then you can check a checkbox for each line that you want to belong to the summary
GlitchMr: and then there's another link for submitting those changes to the server
MikeFair jnthn: If you'd like to look: github.com/MikeFair/Safire
it's not too big
bbl 18:54
GlitchMr Well, technically somebody could choose every line for summary
moritz yes, but that wouldn't be too useful
lue Has anyone else experienced this break in panda?
18:55 brrt joined
moritz I haven't, but I haven't used panda for a while either 18:58
GlitchMr panda works. Why it would need updates?
lue: ./rebootstrap.pl
18:58 marmay left
GlitchMr I meant, perl6 rebootstrap.pl 18:59
jnthn MikeFair: I dunno if it's related, but "make $<statement_control> ?? $<statement_control>.ast !! $<EXPR>.ast;" doesn't handle the third alternation branch.
lue thanks GlitchMr. I hadn't pulled an update of panda with rebootstrap.pl in existence, so I wouldn't have guessed that :) . 19:01
19:02 imarcusthis left
sorear arnsholt: ping again sorry 19:03
arnsholt: we share several hours, especially on weekends :D
GlitchMr I should make Panda installation guide 19:04
19:08 imarcusthis joined 19:09 topo left
arnsholt sorear: Pong! 19:14
(Hopefully not missing you this time)
We do share hours, that's true =)
sorear not missing me :D 19:15
arnsholt Yay =)
But yeah, I was glad you pinged me about making NativeCall work on more than Rakudo 19:17
I've been mulling over the topic a bit, but given my complete lack of knowledge of how Niecza works internally, it's been mostly philosophical =)
sorear why? what do you have to do with nativecall? 19:18
moritz arnsholt did most of the recent nativecall work
arnsholt I've been hacking quite a bit on it 19:19
moritz like, callbacks
and arrays
jnthn arnsholt++ has done all the recent improvements :)
arnsholt At the Oslo hackathon a while back, I wanted to do some stuff (ZMQ, specifically), but that blocked on a pile of Zavolaj stuff, so I ended up spending the weekend learning how Zavolaj works internally
moritz wow, I remembered my IRC log code as a tightly coupled emss 19:21
*mess
but the parts I'm touching now are actually quite hackable
probably because I haven't touched the rewrite rules yet :-) 19:22
arnsholt Irclogging, I realize sorear never actually adressed me 19:24
I just assumed he had, since it was NativeCall-related. Oops =)
jnthn ah, dang 19:25
NQP still accidentally makes forward references...
dalek href="https://glitchmr.github.com:">glitchmr.github.com: 110c310 | GlitchMr++ | _posts/2012-09-15-how-i-learned-to-stop-worrying-and-install-the-panda.md:
How I learned to stop worrying and install the panda blog article
arnsholt But anyways, +1 for shareable NativeCalls
jnthn QAST::Compiler is a HLL::Compiler, but then it mentions HLL::Compiler 19:26
er
QAST::Compiler
Which works accidentallyish... :)
moritz erm, what?
jnthn Right :)
moritz HLL::Compiler mentions QAST::Compiler?
sorear arnsholt: *you* addressed *me*
arnsholt: so I think you want to talk to me about NativeCall on Niecza
arnsholt Yes =)
jnthn moritz: Yes 19:27
arnsholt I got things confused in my head. Terribly sorry about that
GlitchMr Now I've blog article to direct people to when next day somebody will appear ask will ask why `panda` won't install :-)
moritz jnthn: you said it the other way 'round :-)
jnthn method post($source, *%adverbs) {
QAST::Compiler.post($source)
}
sorear arnsholt: So? Do you?
jnthn well, the other way round is that QAST::Compiler inherits from HLL::Compiler.
arnsholt Anyways, you said some stuff about sharable NativeCall versions some time back
19:27 imarcusthis left
jnthn vive le circularity... 19:27
sorear arnsholt: you mean like yesterday?
arnsholt Yes, right 19:28
moritz jnthn: vive la circulation :-)
jnthn sorear, arnsholt: fwiw, I suspect it'll be possible to standardize the interface of NativeCall support in Perl 6, but implementations of that interface will always be quite specific to different Perl 6 implementations.
arnsholt I wouldn't mind helping, is all I'm saying, I guess
sorear jnthn: that is my expectation as well 19:29
arnsholt Ditto
sorear arnsholt: ok, so you did not have specific items to discuss _now_?
arnsholt It adresses a well-known weak spot of Perl 5
Not terribly specific, no
sorear when I'm ready to start I'll give you a call
arnsholt Cool 19:30
jnthn If we want to take the current NativeCall API and make it draft-spec then evolve it from there, that works for me.
sorear or if you get impatient and want to start it without me, give me a call and I'll help however I can
dalek href="https://glitchmr.github.com:">glitchmr.github.com: 2f4c3c1 | GlitchMr++ | _posts/2012-09-15-how-i-learned-to-stop-worrying-and-install-the-panda.md:
Fix `git clone` command to actually mention `git clone`
arnsholt I just wanted to let you know I'm interested in the project and maybe find out what your thoughts about it were 19:31
Cool. I remember the C# FFI stuff looking pretty neat way back when I skimmed some of it
sorear it does.
arnsholt Anyways, sorry about the confusion 19:32
I do that occasionally
sorear a couple days ago I looked over the options for dynamic generation, and there's no obstacle on that front
moritz irclog.perlgeek.de/out.pl?channel=p...;summary=1 19:33
arnsholt Sounds good
lue How would supporting other languages' libraries (aside from existing C/C++ support, that is) look in Nativecall? (just curious) 19:34
GlitchMr Isn't like everything written in C or C++? 19:35
Including compilers
moritz lue: fortran support would look like C support, but also require some name mangling
(which is compiler-specific)
GlitchMr But perhaps Java would be nice 19:36
jnthn hmmm, I seem to have an NQP REPL that allows multiple commands :)
arnsholt I don't expect NativeCall to support much beyond C, and I guess maybe Fortran
GlitchMr Also, NativeCall supports assembly
arnsholt C++ is not going to happen I think, due to name mangling being compiler-specific (with good reason) and probably other things as well 19:37
sorear C is the universal common language.
C++ has extern "C" 19:38
GlitchMr You could try using en.wikipedia.org/wiki/Vala_(progra..._language) - apperently it compiles to C, so it could work
sorear Anyways once we have a basic FFI foundation other people can write interface libraries for their favorite thing 19:39
jnthn pmurias: Got a patch here that fixes the compreg approach
pmurias: Need to check I didn't bust Rakudo in any way.
lue S21 currently only mentions use of Perl 5 and C code, which seems like a decent amount of coverage.
sorear for core, that's ample
moritz phenny: tell raiph phase one IRC log summaries are live. Enjoy! (and feedback welcome) 19:40
phenny moritz: I'll pass that on when raiph is around.
arnsholt moritz: Do you happen to know what level of name-mangling is required for Fortran, BTW? 19:44
moritz arnsholt: mostly it's just adding prefixes and postfixes 19:45
19:46 imarcusthis joined
arnsholt Right. That sounds doable 19:46
sorear core NativeCall should provide, on a best-effort basis, Cish bindings with a variety of calling conventions 19:48
most compiled languages without large runtimes can be treated as C after name and signature munging
let's cater for the darkpan. most people who want to bind to fortran don't need portability; let them do their own name munging 19:49
arnsholt True, true
sorear if someone else wants to write NativeCall::Fortran, don't stop them, but don't give them a monopoly either
arnsholt That's an excellent argument
19:51 topo joined
pmurias jnthn: re patch great 19:52
19:52 Juerd joined
jnthn pmurias: Yeah, but not so great is it busted the Rakudo build. 19:53
pmurias jnthn: what was the source of the issue?
jnthn pmurias: Some mess with global handling. 19:54
I noticed the error it gave was the one the REPL gives if issuing two commands... 19:56
moritz perl6.org/page-stats/ now has visitor stats for the most important perl6.org subdomains 19:58
jnthn whoa... Perl6::Grammar was mentioning the actions classes without doing a "use Perl6::Actions". 19:59
Separate compilation fail
20:03 GlitchMr left
moritz I've noticed that modules.perl6.org is still the old page, not the awsome new page 20:04
what's blocking the transition?
lue
.oO(There's an awesome new page‽)
20:05
20:05 Juerd left 20:06 Alpha64 joined
dalek p: c2b6104 | jnthn++ | src/HLL/Compiler.pm:
Avoid referencing QAST::Compiler before it has been compiled (only worked due to bugs).
20:08
p: 81a27e9 | jnthn++ | src/NQP/ (2 files):
Fix separate compilation issues that busted running multiple commands in the REPL and getting at the NQP compiler through compreg from a built NQP.
kudo/nom: 4dd1240 | jnthn++ | / (2 files):
Add a missing use statement/dependency, now that a separate compilation hole is closed in NQP.
jnthn "jnthn closed the issue in a few seconds"...no, GitHub, it took me just a bit longer than that :P 20:09
moritz :-) 20:10
("in a few second" means "in the future")
lue or maybe it means it took you a few seconds to press "close" :) 20:15
pmurias moritz: how does the new modules page look like? 20:16
moritz pmurias: dunno; a test URL is somewhere in the backlog (but not today, it's a bit older)
20:17 topo left, sergot left, swflint joined, tadzik left
moritz n: sub term:<foo> { 42 }; say foo 20:18
p6eval niecza v21-8-ga216174: OUTPUT«42␤»
20:19 Juerd joined
Juerd Please use ulimit. 20:20
20:20 crab2313 left
jnthn nqp: class A { }; proto f(*@args) {*}; multi f(A $x) { say('A') }; f('str') 20:21
p6eval nqp: OUTPUT«No applicable candidates found to dispatch to for 'f'. Available candidates are:␤␤current instr.: 'f' pc 136 ((file unknown):74) (/tmp/pR_xWSohKX:1)␤»
dalek p: c0203bb | jnthn++ | / (2 files):
Fix parsing of pointy without sig. Closes #52.
20:22
20:22 masak joined
masak o/ 20:22
moritz \o masak
lue o/ masak
sorear Juerd: moritz ulimited the offending task (niecza rebuild), I think 20:23
o/ masak
LU!
moritz sorear: did you see my note about the niecza rebuild being busted?
dalek c: 0bfe5ec | moritz++ | lib/terms.pod:
more about identifier terms
20:24
sorear moritz: I saw your note that a command that previously did nothing is now throwing exceptions. I did not realize this constituted busting 20:25
moritz sorear: well, it means that the build step returns a non-zero exit status, and thus the rsync step isn't executed
sorear: so no new version on feather3 20:26
sorear: if the step isn't necessary, you can remove it from the rebuild-niecza.sh script
sorear ah
how is rebuilding set up new?
now
moritz sorear: see build-scripts/rebuild-niecza.sh in the evalbot repo? 20:27
(which is spawned from build.pl)
dalek albot: c9820f6 | sorear++ | build-scripts/rebuild-niecza.sh:
rebuild of Test,JSYNC,Threads needs --obj-dir to be useful now
20:29
sorear now I've pushed to github, now what?
sorear tries a git pull in the evalbot directory
moritz now a git pull in ~p6eval/evalbot/ on feather1
sorear error: Your local changes to the following files would be overwritten by merge: build-scripts/rebuild-niecza.sh
Please, commit your changes or stash them before you can merge 20:30
moritz you can discard the changes
sorear hopefully the changes were'n't needed
(bumping ulimit from 300m to 512)
moritz i just tried a higher ulimit
sorear now pulled 20:31
moritz to see if the exception went away
the next cron-triggered rebuild should work now
you can test it by running
perl build.pl niecza # in the evalbot dir
and tail -f log/niecza* in another shell
20:36 swflint left, swflint joined 20:42 imarcusthis left 20:49 imarcusthis joined 20:54 brrt left, imarcusthis left 20:55 imarcusthis joined 20:59 swflint left, swflint joined
FROGGS_ hi there 21:02
jnthn/arnsholt: do you had a chance to have a look at my commit?
github.com/FROGGS/zavo[􏿽x85]commit/8d9afca6d0 21:03
meh
this: github.com/FROGGS/zavolaj/commit/8d9afca6d0
21:06 snearch left
jnthn FROGGS_: Having a way to do/call inline C code seems sane, as does using the Zavolaj stuff to achieve it, but I don't think this belongs in Zavolaj itself. 21:06
Having to do the BEGIN thing is kinda icky, for example.
MikeFair jnthn / moritz: both of you guys mentioned that my statement action didn't handle the third alternation which would end up null if it matched. Would this work? 21:08
for $<statement> { if ($<statement>) { $qast.push( $_.ast ); } }
sorear +1 for Inline::C as a separate module
jnthn yeah 21:09
Not just from a "keeping modules focused" point of view, but also because we can probably do better in terms of API also.
MikeFair: if $_.ast { ... }
MikeFair actaully, in statement method I used this: 21:10
if ($<statement_control>) {
22 make $<statement_control> ?? $<statement_control>.ast !! $<EXPR>.ast;
23 }
jnthn You want to avoid pushing if there's no AST
masak MikeFair: you have superstitious parens after your 'if's.
jnthn huh, that won't attach EXPR if there's not a statement_control?
MikeFair masak: Indeed, I've think I get compilation errors without them sometimes. :) 21:11
jnthn: right!
MikeFair has clearly been staring at this a bit too long 21:12
21:12 zby_home left
masak MikeFair: that might be the case of 'if sub_call { ... }', which needs to be written 'if sub_call() { ... }' 21:12
MikeFair: because sub calls are listops if they aren't followed by parentheses. 21:13
MikeFair masak: Interesting -- what's it a list of?
masak MikeFair: think of 'say', for example. 21:14
r: say 1, 2, 3
p6eval rakudo 81edc9: OUTPUT«123␤»
masak r: say(1, 2, 3)
p6eval rakudo 81edc9: OUTPUT«123␤»
masak these ways of writing it are synonymous.
MikeFair masak: ok
FROGGS_ jnthn: I would like to misuse a =pod block or something similar, but since you cant grab the content of a pos block from another file its some kind of hard to implement
masak so the '{ ... }' risks becoming an argument to 'sub_call'.
FROGGS_ jnthn: maybe we should talk about the best design for it 21:15
masak std: if lines { say "gobbled!" }; say "oh noes!"
p6eval std a8f1a47: OUTPUT«===SORRY!===␤Function 'lines' needs parens to avoid gobbling block at /tmp/lTkuqNWfII line 1:␤------> if lines⏏ { say "gobbled!" }; say "oh noes!"␤Missing block (apparently gobbled by 'lines') at /tmp/lTkuqNWfII line 1:␤------> […
FROGGS_ jnthn: btw, you have to using BEGIN too if you want to do: is native($var), it is not just an issue for 'is inline' 21:18
jnthn FROGGS_: Right, but for that case it feels kinda OK (it's not the common case, and you could do it with a constant), but for inline it feels kinda odd 21:19
MikeFair masak: I think NQP requires the {}'s
14 for $<statement> { if ($_.ast) $qast.push( $_.ast );}
21:19 leont joined
MikeFair Missing block at line 15, near "$qast.push" 21:19
jnthn MikeFair: You seem to be confusing ()s and {}s :)
masak MikeFair: I never said the {}s were optional. 21:20
they're not optional, and have never been in any(Perl 5, Perl 6, nqp).
MikeFair oh superstitious "PARENS"
masak unless you do a statement modifier, which is also not what we were talking about :)
MikeFair oh yeah - totally
completely a force of habit, few languages I use don't take, makes it clear to me where the expression begins and ends 21:21
masak it's a matter of habit.
MikeFair the ) { is a clearer marker to me
:)
as is the if ( 21:22
To me they actually read like one transition word
masak nowadays I feel the "default" is without the parens, and putting in the parens feels cluttered.
FROGGS_ jnthn: I would like to have a '=begin inline C', and you have a zavolaj-similar sub 'is inline' that get the $=pod[0], but well, all the inline C is just a workaround for getting an OpaquePointer from an Int
MikeFair masak: and the {}'s aren't?
;) 21:23
masak MikeFair: we have plenty of people go "I'm never gonna stop using the parens!", and we go "oh, that's fine", and two weeks later they're backing saying "not using parens is awesome!" :P
21:23 swflint left
MikeFair hehe 21:23
masak MikeFair: no, the {}s are there to group the statements in the if branch and the else branch ;)
MikeFair and the () are to group the boolean expression statement (which could be complicated) making the branch determination ;) 21:24
MikeFair chuckles.
masak MikeFair: by requiring them there, we're helping (a) you not to make simple coding mistakes when one statement in there turns to many, and (b) the compiler not to make parsing misjudgements related to dangling elses.
note that these two reasons don't apply to the parens. 21:25
21:25 Guest65337 left
jnthn FROGGS_: Yeah, I guess nicest is if the C code we get comes from the sub's body 21:25
FROGGS_ ahh 21:26
thats better, ya
jnthn And we can even generate the C signautre automatically from the Perl 6 one.
MikeFair masak: Sounds like good enough reasoning to me :-)
jnthn Well, with a little care :)
MikeFair masak: I actually don't really, I just don't like thinking about it when I busy shifting between various langauges with subtle distinctions :) 21:27
FROGGS_ sub AplusB ( Int $a, Int $b) is native('C') { ... }
MikeFair err s/really/really care
FROGGS_ err, inline
jnthn is inline perhaps...
sorear any chance of adding an Int to OpaquePointer conversion function, jnthn?
FROGGS_ right
21:27 FROGGS_ left
jnthn sorear: Yes :) 21:27
MikeFair I don't use them when I write xTalk, but that's because there all symbols look out of place. :)
21:28 FROGGS joined
jnthn sorear: But shh...we can get an Inline::C if that ain't fixed too quickly ;-) ;-) 21:28
FROGGS *g*
well, my problem is that I dont know the rakudo/nqp internals to actually do that
but I will try
jnthn FROGGS: I don't think it'll need much in the way of internals, fwiw. 21:30
FROGGS: Note that you can programatically apply the is native trait also by calling trait_mod:<is>(...) directly
21:30 [particle] joined
jnthn So I'd guess the inline trait can just wrap the sub. On the first call it does callsame, and the sub returns the C code (so it just contains a quote). It goes off and compiles this into some temporary library, then applies the native trait to the sub, which again wraps it with the native calling stuff. 21:31
FROGGS I really like C
jnthn By this point the original sub probably feels like a matryoshka doll...but I think it'll work out :) 21:32
masak finds implementing macros makes him feel like the smallest doll in a matryoshka doll :P 21:34
MikeFair ok bbiab
FROGGS masak: but these "small dolls" have the major impact 21:35
21:35 MikeFair left
masak don't I know it. 21:35
jnthn Actually, if you drop 'em, I suspect it's the larger ones that are most impacted :P
masak :) 21:44
'night, #perl6 21:50
FROGGS gnight
quietfan1tic I wondered why it's called Native Call when it's actually C Call 21:51
quietfanatic or rather, CDECL Call 21:52
pmurias CDECL?
quietfanatic Calling conventions
There's also, like, stdcall and fastcall
cdecl is the one C uses (at least in 32-bit x86) 21:53
anyway, what I mean to say is C != native
sorear in parrot/rakduo land it is 21:54
but yeah funny 21:55
jnthn Java calls it Java Native Interface. Lua calls them Native Function Calls. etc.
quietfanatic Parrot and Rakudo assume that the only native functions are C functions
or those compatible with C functions.
jnthn Bull.
Anything that works through dlsym is fine.
quietfanatic Anything that works through dlsym and has cdecl calling convention. 21:56
Google's Go compiler, for instance, has a different calling convention, if I recall correctly
though I don't know if that compiler supports making shared libraries yet.
jnthn Note that dyncall (which NativeCall is built on) can handle things besides cdecl.
quietfanatic oh, can it? 21:57
jnthn er, and the NativeCall module also already exposes that :)
quietfanatic then it is, in fact, true native call, and you can ignore my ranting
jnthn :)
quietfanatic rants about things he doesn't actually know about again
jnthn ;)
jnthn had to go check the code to see if it actually does provide a way to pass an alternative convention to dyncall 21:58
quietfanatic when I was working with Parrot's NCI several years ago, it seems tuned to C functions at the time
jnthn NativeCall isn't built on Parrot's NCI, fwiw. 21:59
quietfanatic oh?
jnthn No, it's a clean implementation atop of dyncall, which integrates with the 6model stuff.
So C structures can just be normal objects with a different representation. 22:00
sorear parrot's NCI, iirc, expects to have a list of signatures which will be used at compile time
quietfanatic okay, I clearly am pretty out of the loop
diakopter welcome back to the loop
sorear which makes it less than ideal for zavolaj
jnthn The loop got less loopy while you were gone :)
quietfanatic heh 22:01
22:01 wk_ left
sorear Speak for yourself! :D 22:01
quietfanatic yeah, I stopped using Parrot's NCI because it only supports a finite number of signatures
(took me a while to figure out what meant by list of signatures at compile time) 22:02
sorear
.oO( zavolaj only supports a countable number of signatures )
22:03
quietfanatic :) 22:04
quietfanatic thinks that using C libraries should be as easy as 'use From::C "GL/gl.h" "libGL.so";' 22:05
quietfanatic also thinks that C compilers should support dumping out symbols and type information so that Perl 6 doesn't have to parse C code itself to use it. 22:06
jnthn Having it that easy would be pretty nice :) 22:07
urgh, exhausted already :/ 22:08
'night o/
FROGGS gnight
22:11 MikeFair_ joined
MikeFair_ Hey guys, I think I've found something that might be indicative 22:13
moritz / jnthn: If I enter the interactive shell and execute 'if 1 then ; say 1; end if'
I've eliminated all spurious newlines and other noise, I output what exactly is in the .asts of both $<cond> and $<then> (which look good) and I get the error 22:14
same op if: invoke() not implemented 22:15
pmurias quietfanatic: use have to deal with a very Cish interface if you want to have the binding done fully automatically
quietfanatic: like getting a char* instead of a string
MikeFair_ moritz / jnthn: I added ; as part of the <return> match for just such a use case so I can put a "newline" on a single line 22:16
22:24 pmurias left 22:26 the joined, the is now known as Guest86105 22:28 gongyiliao left 22:35 MayDaniel left 22:38 jaldhar left
quietfanatic phenny: tell pmurias I'm pretty sure solving type conversions like char* -> Str is an AI-complete problem, or at least domain-specific. 22:39
phenny quietfanatic: I'll pass that on when pmurias is around.
sorear quietfanatic: that is precisely pmurias' point 22:42
you proposed fully automated binding, pmurias replied that it was AI-complete to properly deal with things like char*
quietfanatic phenny: tell pmurias So if the programmer wants to use a C library, I'd presume they have that library's documentation around 22:43
phenny quietfanatic: I'll pass that on when pmurias is around.
quietfanatic sorear: yeah, I'm agree while sounding like I'm disagreeing
*agreeiung
*agreeing
and saying: yes, that's what I want. 22:44
22:49 not_gerd joined
not_gerd just for the record: parrot supports arbitrary NCI signatures through libffi since 2010 22:50
22:54 tadzik joined 22:55 pmurias joined
tadzik hrm, was thee a reboot again? 22:58
22:58 benabik left 22:59 benabik joined
sorear tadzik: hrm, uptime is 2h46m so I guess 23:03
quietfanatic not_gerd: oh, cool 23:04
tadzik hm, strange 23:05
oh, no, it sounds okay-ish
23:06 leont left 23:15 benabik left
not_gerd quietfanatic: the issue with libffi is that it doesn't work with MSVC out of the box, just MinGW 23:17
good night, #perl6 23:30
23:30 not_gerd left 23:35 yarp joined
TimToady rosettacode.org/wiki/Total_Circles_Area#Perl_6 <- interesting problem 23:45
23:46 rsimoes joined 23:50 MikeFair_ left
timotimo there's no guarantee that nobody will create a Rect where the points don't have right angles :P 23:58
well, it won't happen in that code i'm sure, but ...
oh, hold on. "rectangle" doesn't even mean that. never mind me, then 23:59
(the area function isn't 'really' correct in that case, though)