»ö« 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 1Unhandled 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«123» | ||
sergot | nom: sub b(*@b) { .say for @b; say @b.perl }; sub a(*@a) { b(@a) }; b(1,2,3) | ||
p6eval | rakudo 81edc9: OUTPUT«123Array.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«123Array.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«123Array.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«123Array.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«123Array.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 11,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«DA39A3EE5E6B4B0D3255BFEF95601890AFD80709DA39A3EE5E6B4B0D3255BFEF95601890AFD80709» | ||
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 failedFAILED 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 failedFAILED 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 failedFAILED 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 failedFAILED 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 @numbersParse failedFAILED 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 1Check failedFAILED 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) |