»ö« 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. |
|||
pmichaud | jnthn: pong | 00:00 | |
(will catch jnthn++ tomorrow) | |||
00:03
silent_h joined
00:09
leprevost left
|
|||
dalek | ar: 6ed6e37 | pmichaud++ | skel/build/Makefile.in: Add code to install 'panda' and 'ufobuilder' into $(BINDIR). |
00:13 | |
00:24
lue left,
lue joined
00:26
nrr left
00:27
nrr joined
00:28
justatheory left
00:35
noganex joined
00:36
noganex_ left
|
|||
pmichaud | draft version of new rakudo.org site at rakudoperl.org/ . Comments and suggestions welcomed. | 00:46 | |
00:46
leprevost joined
00:50
mtk left
00:51
[Coke] left,
cdarroch left
00:52
[Coke] joined
|
|||
lue | pmichaud: looks much better, and doesn't deviate too much from rakudo.org | 00:56 | |
00:59
mtk joined,
justatheory joined
01:05
SatoshiHayazaki joined
01:06
Entonian joined
01:08
noganex left
01:09
noganex joined
01:14
am0c left
01:20
am0c^ joined,
am0c^ left
01:27
Entonian left
01:50
woosley joined
01:52
whiteknight left
02:27
am0c joined
02:29
araujo joined
|
|||
jdhore | pmichaud, My only complaint would be that the current site looks like a Drupal site and the new one looks like a wordpress site...IMO, I think if possible, sites should avoid fitting the "default" look of the software they use if possible | 02:48 | |
02:49
leprevost left
03:13
awwaiid left
03:15
awwaiid joined
|
|||
sorear | phenny: tell pmurias I don't like the way Proxy overloads new. IMHO $class.new.WHAT should always === $class | 03:17 | |
phenny | sorear: I'll pass that on when pmurias is around. | ||
03:21
awwaiid left
|
|||
pmichaud | jdhore: it's certainly possible for us to switch rakudoperl.org to a different template... but someone else needs to find/create the template :) | 03:23 | |
I'm happy to switch to any wordpress template I can easily get my hands on :) | |||
and the current rakudoperl.org WP theme is a customization of the default twentyten theme | 03:24 | ||
jdhore | ah | ||
pmichaud | (a very simple customization :-) | ||
(mainly to avoid the silly 940x198 image that twentyten wants to default to | 03:25 | ||
jdhore | pmichaud, Well, don't take what I say with too much merit. I've got about the same aestetic skills as a giraffe. | ||
*aesthetic | |||
03:26
Su-Shee left
03:28
Su-Shee joined
03:29
ymasory joined
03:35
hudnix left
03:36
satyavvd joined
03:38
araujo left
03:42
araujo joined
03:43
satyavvd left
|
|||
dalek | ar: 0f607e2 | pmichaud++ | skel/README: Update release number in README. |
04:11 | |
ar: 15a246c | pmichaud++ | skel/docs/announce/2011.04: Fix January -> April in announcement text. |
|||
04:21
orafu left
04:22
_jaldhar joined,
plobsing_ left
04:23
orafu joined,
kaare__ joined
|
|||
pmichaud | phenny: tell alester Feel free to point rakudo.org to the rakudoperl.org server whenever you're ready | 04:28 | |
phenny | pmichaud: I'll pass that on when alester is around. | ||
04:33
SatoshiHayazaki left
04:51
ymasory left
05:00
silent_h left
05:08
molaf joined
05:10
molaf left
05:17
sftp left
05:24
birdwindupbird joined,
yegor joined
05:33
birdwindupbird left
05:36
justatheory left,
birdwindupbird joined,
justatheory joined
05:41
justatheory left
06:00
wtw joined
06:03
nymacro joined
06:10
Mowah joined
06:24
yegor_ joined,
yegor left
06:47
rhebus joined,
yegor_ left
06:50
mj41 joined
|
|||
frettled | pmichaud: congrats on getting 2011.04 out the door! | 06:57 | |
07:00
Tedd1 left,
yegor_ joined
07:01
rhebus_ joined
07:02
rhebus left,
rhebus_ is now known as rhebus
07:04
birdwindupbird left
07:13
rhebus_ joined
07:14
rhebus left,
rhebus_ is now known as rhebus
|
|||
moritz | pmichaud++ # star release | 07:14 | |
07:14
fhelmberger joined
|
|||
tadzik | yay, Star :) | 07:14 | |
pmichaud++ | |||
though I'm afraid ufobuilder made it into Star rather accidentally | 07:17 | ||
jdhore | pmichaud++ | 07:18 | |
moritz | phenny: tell pmichaud that rakudoperl.org doesn't show the rakudo favicon - might be worth fixing | 07:20 | |
phenny | moritz: I'll pass that on when pmichaud is around. | ||
07:23
birdwindupbird joined
07:25
rhebus_ joined,
rhebus left,
rhebus_ is now known as rhebus
07:26
yegor_ left
|
|||
jdhore | question: Why do you guys use phenny for memos and not just MemoServ? | 07:30 | |
07:33
cali_gurl87 joined,
icwiener joined
07:34
cali_gurl87 left
07:36
yegor_ joined
07:39
rhebus left
07:40
rhebus joined
|
|||
moritz | because phenny is cute and polite :-) | 07:53 | |
jdhore | ah | 07:57 | |
08:06
krunen left,
krunen joined
|
|||
mathw | Morning | 08:12 | |
08:12
Tedd1 joined
|
|||
mathw | moritz: In German, should I say "Ich bin nach <somewhere> gefahren"? I got thinking on the way to work about the ones that take sein instead of haben, and irregular past participle formation, and I realised I couldn't remember most of it :( | 08:13 | |
08:22
rhebus left
08:26
drbean left
|
|||
ingy | tadzik: where's the SHELTER list? | 08:27 | |
08:28
drbean joined
|
|||
ingy | tadzik: I can try to fix things up. | 08:28 | |
08:32
drbean left
|
|||
Su-Shee | mathw: "Ich bin nach Koeln gefahren" "Ich war in Koeln" | 08:32 | |
mathw: "I drove to...." "I was in ..." | 08:33 | ||
08:34
drbean joined,
am0c left
08:36
Tedd1 left
|
|||
mathw | Su-Shee: thanks. I thought it was like that, but I wasn't sure | 08:37 | |
08:38
mtk left
08:39
drbean left
|
|||
Su-Shee | mathw: there is a simple past like "drove" in german as well but it's not really used in spoken language. "Ich fuhr nach Koeln" sounds weird. (Used in literature, though.) | 08:39 | |
08:40
drbean joined
08:41
Tedd1 joined
|
|||
mathw | Su-Shee: yeah I remember being taught about that. I never got much practice at it, as most of our lessons were focussed on spoken, and we tended to write like that too. | 08:42 | |
08:44
drbean left
08:45
drbean joined
08:46
krunen left
08:47
mtk joined
08:49
pmurias joined
08:51
drbean left
08:52
drbean joined
|
|||
Su-Shee | mathw: the overly proper use of past tense usally indicates people from eastern europe; I don't know exactly why but they either learn german differently or feel comfortable with certain tenses. and they get it perfectly right, better than most germans :) | 08:53 | |
tadzik | ingy: perl6/ecosystem | ||
08:56
drbean left
08:57
drbean joined
|
|||
Patterner | it's like english and americans, Su-Shee | 09:00 | |
09:00
aindilis left,
aindilis joined
09:02
drbean left
09:04
drbean joined
09:05
Sarten-X left
09:08
Nehru joined,
drbean left,
Nehru left
|
|||
nrr | with respect to the prÀteritum in german: there are small exceptions. forms of "sein," "wissen," and so on are sometimes used. | 09:08 | |
"ich wusste das nicht." instead "ich habe das nicht gewusst," though that varies a bit. | 09:09 | ||
09:10
drbean joined
09:11
Justin__ joined
|
|||
Justin__ | perl6: say "ciao"; | 09:11 | |
p6eval | pugs, rakudo 8533c3, niecza v4-76-g7bf5ef9: OUTPUT«ciao» | 09:12 | |
Justin__ | is it my network connection or it took 2 seconds to respond ! | ||
moritz wusste das nicht | |||
Justin__: it executes three different, slow compilers (and doesn't parallelize) | 09:13 | ||
Justin__: so 2s aren't too bad | |||
Justin__ | moritz: that was just a helo world.. now am scared to try it more :\ | ||
moritz | Justin__: no need to be scared, you don't get the bill for the computing time | 09:14 | |
Justin__: but it's faster if you talk to just one compiler | |||
rakudo: say 'OH HAI' | |||
Justin__ | haha! :D nice one | ||
p6eval | rakudo 8533c3: OUTPUT«OH HAI» | ||
09:15
drbean left,
pmurias left
09:16
tzhs joined,
drbean joined
09:19
Justin__ left
09:21
drbean left
09:22
drbean joined
09:28
drbean left
09:30
drbean joined
09:35
drbean left
09:36
drbean joined
09:41
drbean left
09:43
drbean joined
09:45
snearch joined
09:47
drbean left
09:48
drbean joined,
icwiener_ joined
09:49
icwiener left
09:50
s1n left
09:52
drbean left
09:54
drbean joined
09:57
drbean left,
s1n joined
09:59
drbean joined
10:02
wallberg joined
|
|||
moritz | jnthn: is nqp supposed to use the installed nqp-rx from parrot at all? | 10:02 | |
jnthn: it seems it does... nqp's 'make install' misses some pbcs, and after I run 'make install' the subsequent nqp build fails, complaining about the missing PBCs | 10:04 | ||
wallberg | hi all! is anyone planning to go to the Nordic Perl Workshop this year? conferences.yapceurope.org/npw2011/ | ||
10:04
drbean left
|
|||
moritz | wallberg: I'm pretty sure masak and jnthn are going :-) | 10:04 | |
10:05
drbean joined
|
|||
wallberg | moritz: :-) | 10:06 | |
jnthn | o/ | 10:07 | |
wallberg | btw has there been any efforts to make p6 GUI bindings for libraries like Tk, GTK, Qt, Wx... or XUL so far? | 10:08 | |
jnthn | moritz: No, it shouldn't depend on nqp-rx. | ||
moritz: However, it does depend on some things from the Parrot repo. | 10:09 | ||
moritz | jnthn: ah, I found it | ||
jnthn | moritz: Such as PAST.pbc | ||
tadzik | wallberg: I think the callbacks are the biggest blocker | ||
moritz | jnthn: the .ops file compilation uses the nqp-rx shipped with parrot | ||
wallberg | tadzik: ok. what is the status on those? | ||
tadzik | wallberg: none I think :) | ||
moritz | jnthn: and since 'make install' currently overrides at least NQP.pbc, that's bad | ||
10:10
drbean left
|
|||
moritz | wallberg: Tene did bindings for some obscure-ish GUI framework | 10:10 | |
wallberg: don't know if they still work | |||
jnthn | moritz: Oh, yes | ||
moritz: I suspect we may need to do some renaming. | |||
moritz++ # looking into the install issues, which will soon be very relevant :) | 10:11 | ||
10:11
woosley left
|
|||
jnthn | moritz: Is it just NQP.pbc that overlaps? | 10:11 | |
moritz | jnthn: not sure yet | ||
10:12
drbean joined
|
|||
dalek | p/ctmo: b3299e5 | moritz++ | build/Makefile.in: make nqp installable again Sadly this overwrites some files from parrots nqp-rx, which means that it breaks recompilation, because .ops file translation uses nqp-rx internally |
10:12 | |
jnthn fears there will be more | 10:13 | ||
tadzik | also,pararell build is broken again | 10:14 | |
jnthn | Oh. | ||
moritz | tadzik: yes | ||
jnthn | Wonder what regressed that...I'd tried to be careful. :/ | ||
moritz | error:imcc:loadlib directive could not find library `nqp_ops' in file 'src/PAST/SixModelPASTExtensions.pir' line 16 included from 'src/PASTRegex.pir' line 1 | 10:15 | |
should be an easy-ish fix | |||
jnthn | ah, yeah...that hadn't used to depend on the dynexts. | ||
10:16
awwaiid joined
|
|||
moritz tests a fix | 10:17 | ||
10:17
drbean left
10:18
krunen joined,
drbean joined
|
|||
dalek | p/ctmo: 86fd707 | moritz++ | build/Makefile.in: [build] unbreak parallel build |
10:18 | |
moritz | unfortunately that takes away a lot of benefit from the parallel build | 10:20 | |
jnthn | A bootstrapping compiler is hardly ideal for a parallel build really... | 10:21 | |
Every stage needs the last one. | |||
And stages need stuff within that stage too. | 10:22 | ||
HLL.pm does use P6Regex which in turn does use Regex which in turn needs the NQPCORE.setting. | |||
10:22
drbean left
|
|||
moritz | right | 10:22 | |
jnthn | Which kinda forces an ordering. | ||
We got away with far more before the compiler actually wanted to know something about the programs it was compiling. :) | 10:23 | ||
10:24
drbean joined
|
|||
moritz | fail, nqp installs nqprx.pbc :-) | 10:24 | |
both install a P6Regex.pbc | 10:25 | ||
a Regex.pbc | |||
jnthn | oh...we shouldn't be installing nqprx.pbc :) | ||
eep | |||
moritz | but nqp-rx install an nqp-rx.pbc :-) | ||
note the dash | |||
jnthn | and a HLL.pbc, I fear... | ||
oh... | 10:26 | ||
Where are we installing all of these to? | |||
moritz | yes, HLL.pbc too | ||
jnthn | Is there no "language directory"? | ||
moritz | the nqprx.pbc goes to languages/nqp | ||
the regex.pbc stuff to library/ | |||
jnthn | oh. | 10:27 | |
OK. | |||
moritz | and most of the other stuff to library/ too | ||
bbkr_ | i've released new version of my JSON::RPC github.com/bbkr/jsonrpc , what I have to do to place it in the ecosystem? and what is required for "Panda approval" ? | ||
moritz | bbkr_: add a link to your META.info in the 'META.list' file of the 'ecosystem' repo | 10:28 | |
no approval steps whatsoever | |||
dalek | p/ctmo: f73152c | moritz++ | build/Makefile.in: [build] stop installing nqprx.pbc |
10:29 | |
bbkr_ | moritz: thanks | ||
10:29
drbean left
|
|||
moritz | jnthn: turns out we installed the nqp.pbc twice :-) | 10:29 | |
jnthn | wow :) | ||
moritz | my fault probably | 10:30 | |
jnthn | moritz: I was kinda hoping that Parrot had a way to install libraires into a language's directory, e.g. that mapped to the .HLL | ||
But looking through the library location code in library.c, it seems not. | |||
moritz | jnthn: maybe that exists, but we're not using it? | ||
10:30
drbean joined
|
|||
jnthn | moritz: They do have a language directory thingy. But only for load_lang op, afaict. | 10:31 | |
moritz | jnthn: things are not so bad after all, it's only three files that conflict | 10:32 | |
HLL.pbc, P6Regex.pbc, Regex.pbc | |||
lunch & | |||
10:34
drbean left
|
|||
jnthn | moritz: OK, that's not so bad. Thanks for looking at it. | 10:35 | |
10:36
drbean joined
|
|||
tadzik | bbkr_: just _please_ make sure that your file is a legal JSON | 10:40 | |
so no missing commas or whatever | |||
10:40
drbean left
10:41
drbean joined
10:42
tzhs left
|
|||
dalek | osystem: 74793b8 | tadzik++ | META.list: Fix links |
10:43 | |
bbkr_ | tadzik: ofc, i've validated it with www.jsonlint.com/ | 10:44 | |
10:45
drbean left
10:46
drbean joined
|
|||
dalek | osystem: c7157ab | tadzik++ | META.list: More linkfixing |
10:47 | |
10:49
donri joined
|
|||
tadzik | We need a validation tool for this | 10:50 | |
10:51
drbean left
10:52
drbean joined
|
|||
Juerd | Malformed JSON is illegal now? | 10:54 | |
tadzik | well, it breaks the modules api living on feather, and modules.perl6.org as a result | ||
Juerd | Ouch | ||
That's quite bad | 10:55 | ||
tadzik | yeah | ||
I wonder if I can set up some obligatory commit hook which will validate the list | |||
10:57
drbean left
|
|||
tadzik | OR I can add a few try {} is the list generatior :) | 10:57 | |
s/is/in/ | |||
10:58
drbean joined
|
|||
tadzik | hugme: add bbkr_ to ecosystem | 11:00 | |
hugme | tadzik: sorry, I don't know anything about project 'ecosystem' | ||
tadzik | bbkr_: that's broken :) | 11:01 | |
bbkr_ | ? | ||
tadzik | I commented on that | 11:02 | |
Juerd | tadzik: Wouldn't it be better to just fix whatever breaks, rather than ensure its input is correct? | ||
bbkr_ | Sorry, didn't know about "raw" requirement. Fixing... | 11:03 | |
11:03
drbean left
|
|||
tadzik | bbkr_: the link needs to point to the JSON file, not the github page | 11:04 | |
11:05
drbean joined
|
|||
tadzik | Juerd: that's partly doable, yes | 11:05 | |
11:09
Trashlord left,
drbean left
|
|||
bbkr_ | tadzik: fixed, link to raw/ in pull request | 11:10 | |
11:11
drbean joined
11:12
pernatiy left
11:15
drbean left
11:16
pernatiy joined
11:17
drbean joined
11:18
birdwindupbird left
|
|||
tadzik | ok, merging | 11:21 | |
11:22
drbean left
|
|||
dalek | osystem: c6ebebc | (Pawel bbkr Pabian)++ | META.list: Added JSON::RPC module |
11:23 | |
osystem: 9481db4 | (Pawel bbkr Pabian)++ | META.list: Fixed META.info location of JSON::RPC to raw |
|||
osystem: 0f87c0b | tadzik++ | META.list: Merge branch 'master' of github.com/bbkr/ecosystem into bbkr-master Conflicts: META.list |
|||
11:24
drbean joined
|
|||
tadzik | yay, modules.perl6.org got updated | 11:24 | |
11:25
yegor_ left
|
|||
tadzik | 34 modules have Panda badges | 11:26 | |
11:27
yegor_ joined
11:28
drbean left
11:30
drbean joined
|
|||
moritz | tadzik: extra points for having an absent Panda badge point to an installation error log | 11:30 | |
tadzik: JSON doesn't have a badge, and I have no idea why | 11:31 | ||
11:31
birdwindupbird joined
11:35
drbean left,
drbean joined
11:36
[Coke] left
|
|||
tadzik | I'll take a look | 11:37 | |
moritz: the panda badge doesn't check the installation | |||
bbkr_ | Is anyone working on "Most wanted" Email::MIME ? I work in email marketing business on daily basis and I know RFC quite well, so I'm considering this as next goal. | ||
11:37
[Coke] joined
|
|||
moritz | tadzik: what does it check? | 11:37 | |
PerlJam | bbkr_: go for it. :) | 11:38 | |
11:40
drbean left
|
|||
tadzik | moritz: the presence of source-url | 11:40 | |
11:41
drbean joined
|
|||
PerlJam | ah, the dreaded switch from repo-url to source-url ;) | 11:42 | |
moritz | and I'm to blame :/ | ||
PerlJam | tadzik++ | ||
tadzik | :) | ||
PerlJam | I'm sitting in an airport terminal waiting for a flight back to Texas. There's a couple sitting across from me both with laptops open and doing stuff. The woman is typing *really fast* with only one finger. (faster than some people who use all of their fingers) | 11:45 | |
I wonder what her error rate is though. | |||
moritz | just look at how often she hits backspace | ||
moritz installs three panda badges | 11:46 | ||
PerlJam | I can't quite see what keys she's hitting because of the angle between us. | ||
11:46
drbean left
11:47
drbean joined
11:51
drbean left
|
|||
dalek | psi: 79609ac | moritz++ | META.info: fix META.info |
11:52 | |
moritz finds the panda badges maximally cute | |||
tadzik | the bigger image is even cuter :) | 11:53 | |
11:54
drbean joined
11:55
Patterner left
11:57
Psyche^ joined,
Psyche^ is now known as Patterner
11:58
drbean left
12:00
drbean joined,
pernatiy left
12:03
Sarten-X joined
12:05
drbean left
12:06
drbean joined,
wallberg left
12:07
pernatiy joined
12:09
takadonet joined
|
|||
takadonet | morning all | 12:09 | |
12:10
Tedd1 left
12:11
drbean left,
Holy_Cow joined
12:12
drbean joined
|
|||
Util | Morning, takadonet | 12:15 | |
pmichaud | good morning #perl6 | 12:16 | |
phenny | pmichaud: 07:20Z <moritz> tell pmichaud that rakudoperl.org doesn't show the rakudo favicon - might be worth fixing | ||
pmichaud | ...is there a rakudo favicon? | ||
12:17
drbean left
|
|||
moritz | pmichaud: rakudo.org used a scaled down version of the logo | 12:18 | |
pmichaud | I don't see one there now | ||
moritz | hm, maybe my mind is playing tricks on me :/ | ||
12:18
drbean joined
|
|||
pmichaud | anyway, if someone wants to create a favicon, I can certainly install it :) | 12:19 | |
12:19
MayDaniel joined
|
|||
jnthn | o/ pmichaud | 12:19 | |
pmichaud | o/ jnthn | 12:20 | |
moritz | pmichaud: try moritz.faui2k3.org/tmp/favicon.ico | ||
nothing fancy | |||
pmichaud | got the icon; have to take kid to school will install when I get back (in 15) | 12:22 | |
12:23
drbean left
|
|||
moritz | no hurry | 12:23 | |
12:25
drbean joined
12:29
drbean left
|
|||
Util updates Perl6-Math-Quaternion, trying for Panda badge. | 12:30 | ||
12:31
drbean joined
|
|||
moritz | jnthn: I've tried to rename some .pbc files, but ran into some troubles; it tried to fetch some thing from non-existant serialization context :( | 12:31 | |
jnthn: I guess I'm not proficient in the art of renaming files in a bootstrapped compiler | |||
pmichaud | favicon installed | 12:33 | |
12:33
plobsing joined
|
|||
moritz | ... and it shows up in my browser. Yay. | 12:35 | |
12:35
Moukeddar joined,
drbean left,
jevin left,
ponbiki left
12:37
jevin joined,
drbean joined
12:38
MayDaniel left,
IllvilJa left
12:39
ponbiki joined
12:42
drbean left,
Holy_Cow left
|
|||
jnthn | moritz: Ah, yes, one has to be careful :) | 12:43 | |
moritz | straw poll: should I put the new error spec into a new S\d\d? if yes, which? if not, into which should it go? | ||
jnthn | pmichaud: Any suggestions on the installation issues? We have some PBCs to install that conflict with existing ones (HLL, Regex, P6Regex). | ||
12:43
am0c joined
12:44
drbean joined
|
|||
pmichaud | jnthn: I'm still waking up here, so might have an answer a bit later :) | 12:44 | |
jnthn | pmichaud: OK. I'll save my question on the regex prefix handling for a little later too then ;) | ||
Well, I guess I could push it onto your mental stack. :) The immediate issue is that we're now constructing meta-objects as we compile, so all the gradual typing stuff is done. PAST::Compiler however emits an extra method to obtain the prefixes. Thing is, that's kinda "too late" - we'd already have composed the class by then. | 12:46 | ||
s/is done/is possible/ | |||
12:48
drbean left
12:50
f00li5h left,
drbean joined,
hudnix joined
|
|||
pmichaud | is there a hook to be able to generate the extra methods when the class is composed? | 12:52 | |
12:54
bluescreen10 joined,
drbean left
|
|||
jnthn | pmichaud: That's certainly be possible. | 12:55 | |
pmichaud | seems like we'll need something like that anyway, for other automatically-generated methods | ||
jnthn | pmichaud: compose is just a method call on the meta-object. It can do whatever it likes. | ||
Attribute accessors get added because composing the class visits each of its attributes and gives it a chance to do some composition-time work, for example. | |||
pmichaud | but it can also be done at the time of the regex | ||
so yes, it can be moved out of PAST::Compiler | 12:56 | ||
probably should be | |||
jnthn | Are the prefixes primarily data? | ||
pmichaud | currently yes, eventually no | ||
jnthn | Or is there logic involved that has to be delayed? | ||
Ah, OK | |||
12:56
cxreg2 joined
|
|||
pmichaud | I need to look at sorear++'s implementation of LTM | 12:56 | |
12:56
PerlPilot joined,
drbean joined
|
|||
jnthn | Do duplicate or empty prefixes have any semantics, ooc? | 12:56 | |
pmichaud | and that will determine what we need | 12:57 | |
shouldn't be any duplicate prefixes | |||
12:57
Util_ joined
|
|||
pmichaud | (there might be though) | 12:57 | |
jnthn | I looked through the output for NQP's grammar and duplicate empty prefixes show up quite a few times. | ||
pmichaud | hmmm | ||
jnthn | Does an empty prefix mean anything? | ||
12:57
patch__ joined
|
|||
pmichaud | yes | 12:57 | |
12:57
Moukeddar left
|
|||
jnthn | OK | 12:57 | |
12:58
bacek_ joined,
charsbar__ joined
|
|||
pmichaud | it means that the rule can match an empty string, so the ltm-cheater takes that into account | 12:58 | |
12:58
Eevee_ joined
|
|||
jnthn | ah, I see | 12:58 | |
12:58
nnunley_ joined
|
|||
jnthn | OK, makes sense. | 12:58 | |
pmichaud | the existence of duplicates doesn't really affect performance, iirc, because it's ultimately all hashed anyway | 12:59 | |
12:59
bacek left,
PerlJam left,
miso2217 left,
Eevee left,
Util left,
cxreg left,
chitragupt left,
nnunley left,
aloha left,
charsbar_ left,
arcus joined
|
|||
jnthn | Ah, OK. Then they concern me a bit less. | 12:59 | |
pmichaud | anyway, there will have to be a way for a regex to be able to return its prefixes, yes. | ||
12:59
aloha joined
13:00
chitragupt joined
|
|||
jnthn | And I guess in the future, non-literal prefixes. | 13:00 | |
pmichaud | ideally it should probably be a method on the regex method itself, rather than a separately-named method | ||
13:00
_twitch joined
|
|||
pmichaud | I didn't have that option with Parrot's default method model | 13:00 | |
but since we should be able to have a 'Regex' base class somewhere, it becomes much more plausible | 13:01 | ||
13:01
drbean left
|
|||
jnthn | Yes | 13:02 | |
pmichaud | i.e., ultimately I'd like to be able to do ®exxyz.prefixes() instead of !prefix_regexxyz() | ||
jnthn | Many things get more plausible :) | ||
13:03
drbean joined
|
|||
pmichaud | but it does ultimately become dynamic because the longest-token prefixes are determined by the grammar you happen to be in at runtime | 13:03 | |
tadzik | 43 panda-badged modules out of 92 existing in the database | ||
13:04
bluescreen10 left
|
|||
pmichaud | i.e.,: regex abc { 'foo' <xyz> } can have different prefixes depending on inheritance | 13:04 | |
13:04
snearch left
|
|||
flussence | almost half \o/ | 13:04 | |
tadzik | yes :) | ||
pmichaud | moritz: I'd suggest that exceptions should become S18, and that we switch around the synopses after that | 13:05 | |
13:05
tzhs joined
|
|||
pmichaud | or perhaps exceptions makes more sense as S17 | 13:06 | |
OR, if you want to use S07 or S08 for exceptions, I suspect I can fit iterators/captures/parcels into a single synopsis | 13:07 | ||
it's not clear why those should be split in two | |||
(at least not to me) | |||
13:07
drbean left
|
|||
pmichaud | so, my tentative suggestion: S07 - Exceptions, S08 - Lists, Iterators, Captures, Parcels | 13:07 | |
or vice-versa | 13:08 | ||
moritz | currently 15, 18, 23, 25, 27 and 30 are free | ||
pmichaud | yes, but exceptions seems like one of those "lower-level" items | 13:09 | |
on the other hand, if it's heavily object/class-based, then perhaps it belongs after 14 | |||
13:09
risou joined,
drbean joined
|
|||
moritz | in the Camel that would be Unicode, Compiling, Secuirty, Portable, Culture and Standard Library | 13:09 | |
pmichaud | the general principal is to "reduce forward references" | ||
*principle | |||
moritz | pmichaud: yes, it is heavily based on OO and roles | ||
S18 seems sensible | 13:10 | ||
pmichaud | so, if what you're writing is based heavily on knowing bits about the OO and role parts of Perl 6, then after S14 makes sense | ||
flussence | .oO( maybe the synopses should be autonumbered from a directed graph of links :) |
||
pmichaud | will IO need a good understanding of exceptions to be able to use it? | ||
moritz | ... and recalculates file names after each commit? | 13:11 | |
pmichaud: don't think so | |||
pmichaud | then yes, S18 seems like a good fit | ||
moritz | it might generate forward references though | ||
pmichaud | if what you're writing reads more like a library than anything else, then it could be a subsection of S32 | 13:12 | |
there's already a S32-Exception | |||
moritz | hm, point taken | ||
pmichaud | all of synopses 28 through 32 look like they might want a re-think | 13:13 | |
(in terms of numbering and content) | |||
moritz | much of it will look a lot like an API spec more than the narrative in S02-S06 | ||
pmichaud | yeah, api spec tends to be S32-ish, I think | ||
moritz | s/more/not/ | ||
pmichaud | much like the other builtin functions/methods | ||
moritz | aye | 13:14 | |
13:14
drbean left
13:15
drbean joined
13:16
_twitch left
13:17
VXZ joined
13:18
plobsing left
13:19
bluescreen10 joined
13:20
drbean left
13:21
arcus left
13:22
drbean joined
13:23
am0c left
13:24
newbee left
13:26
drbean left
13:27
IllvilJa joined
13:28
drbean joined
13:32
birdwindupbird left
13:33
drbean left
13:34
drbean joined,
ella joined,
birdwindupbird joined
|
|||
bbkr_ | rakudo: say so "" ~~ m/<[a..z]-[x]>/ # known bug? seems that exclude "-[x]" in char class fails when regexp containing such class is matched on empty string | 13:34 | |
p6eval | rakudo 8533c3: OUTPUT«Cannot take substr outside string in <anon> at line 22:/tmp/zpqtyrD_Aw in 'Cool::match' at line 2661:CORE.setting in main program body at line 22:/tmp/zpqtyrD_Aw» | ||
ella | rakudo: x | 13:35 | |
p6eval | rakudo 8533c3: OUTPUT«Could not find sub &x in main program body at line 22:/tmp/2DJLehGo29» | ||
ella | rakudo say x | ||
moritz | bbkr_: similar cases are known and have been fixed - I don't think this one | ||
bbkr_ reports just in case | |||
13:36
arcus joined
|
|||
moritz | bbkr_++ | 13:36 | |
13:37
wallberg joined
13:38
drbean left,
undee69 joined
13:40
drbean joined
13:41
miso2217 joined
|
|||
bbkr_ | rakudo: say so "a" ~~ /<[\x00..\xFF]>/ # what is the proper way to give hex ranges in regexp? this doesn't seem to work | 13:41 | |
p6eval | rakudo 8533c3: OUTPUT«Bool::False» | ||
moritz | bbkr_: rakudo doesn't understand any backslash sequences in char classes :( | 13:42 | |
13:42
arcus left
|
|||
ella | rakudo: say 1 | 13:42 | |
p6eval | rakudo 8533c3: OUTPUT«1» | 13:43 | |
ella | rakudo: say 17 | ||
p6eval | rakudo 8533c3: OUTPUT«17» | ||
jnthn | rakudo: say 17 + 25 | ||
p6eval | rakudo 8533c3: OUTPUT«42» | ||
jnthn | \o/ | ||
13:44
drbean left
|
|||
undee69 | rakudo: say 9+1 | 13:44 | |
p6eval | rakudo 8533c3: OUTPUT«10» | ||
moritz | rakudo: say (42/14).perl | 13:45 | |
p6eval | rakudo 8533c3: OUTPUT«3/1» | ||
13:45
woosley joined
13:46
drbean joined
|
|||
bbkr_ | moritz: time for workarounds then. luckily this works perfectly: m/^<[!..~]-[:]>+$/ (RFC2822 header name regexp for incoming Email::MIME) | 13:47 | |
tadzik | seen PerlPilot | 13:48 | |
aloha | PerlPilot was last seen in #perl6 68 days 20 hours ago saying "masak: We are the music makers and we are the dreamer of dreams. :)". | ||
13:48
undee69 is now known as undeevhanner
|
|||
tadzik | phenny: tell PerlPilot I've sent you a pull request for Benchmark.pm | 13:49 | |
phenny | tadzik: I'll pass that on when PerlPilot is around. | ||
moritz thought 'perlpilot' on github was PerlJam on #perl6 | 13:50 | ||
seen PerlJam | |||
aloha | PerlJam was last seen in #perl6 2 hours 3 mins ago saying "I can't quite see what keys she's hitting because of the angle between us.". | ||
tadzik | I never know :) | ||
13:50
drbean left
13:51
undeevhanner is now known as undee69
13:52
wallberg left,
drbean joined
13:55
ella left
13:57
drbean left,
_jaldhar is now known as jaldhar
13:59
drbean joined
14:03
drbean left,
plobsing joined
14:04
drbean joined
14:06
meswami joined
14:09
drbean left
14:11
drbean joined
14:15
drbean left
14:17
drbean joined
14:21
drbean left,
undee69 left
14:23
drbean joined
|
|||
meswami | hi every one.what is 'highlight' that u get with output in p6eval | 14:25 | |
? | |||
moritz | meswami: it used to give you an URL to a highlighted html file | 14:27 | |
meswami: seems it's broken now | |||
14:28
drbean left
14:30
drbean joined
14:32
slavik left
14:34
drbean left
14:35
bluescreen10 left
14:36
drbean joined
14:37
yegor_ is now known as vividsnow
14:40
drbean left
14:41
meswami left
14:42
drbean joined
14:45
drbean left,
mkramer joined
14:47
bluescreen10 joined,
mkramer left
14:48
drbean joined
14:52
drbean left
|
|||
TimToady | moritz: that doesn't make sense to me; I thought meswami was asking about error message colors | 14:53 | |
std: 1 2 | |||
p6eval | std 3468e14: OUTPUT«===SORRY!===Two terms in a row at /tmp/OVTxzpdR2L line 1:------> 1 ⏏2 expecting any of: bracketed infix infix or meta-infix statement modifier loopParse failedFAILED 00:01 119m» | ||
moritz | TimToady: p6eval also has a 'hilight' target | 14:54 | |
14:54
drbean joined
|
|||
moritz | hilight: my $x | 14:54 | |
TimToady | ah, ok | ||
moritz | highlight: my $x | ||
p6eval | Please use /msg p6eval my $x | ||
bbkr_ | is there any smart (and implemented) way to check if characters in string are within US-ASCII range 1-127 ? | ||
moritz | TimToady: your interpretation makes some sense too... not sure what meswami meant | 14:55 | |
jnthn | 1 <= @all($str.comb>>.ord) <= 127 | ||
14:56
slavik joined
|
|||
jnthn | or !$str.comb.first(1 <= *.ord <= 127) maybe | 14:57 | |
bbkr_ | jnthn: thanks. I wanted to avoid split/comb, but since \xHH is not yet implemented in regexp classes looks like I have no choice :) | ||
jnthn | Yeah, that would be ideal way | 14:58 | |
TimToady | eventually, <:ascii> should work | 14:59 | |
14:59
drbean left
15:00
drbean joined
|
|||
jnthn | rakudo: say "öl" ~~ /<ascii>+/ | 15:02 | |
p6eval | rakudo 8533c3: OUTPUT«Method 'ascii' not found for invocant of class 'Cursor' in <anon> at line 22:/tmp/VRVGFJwyVi in 'Cool::match' at line 2661:CORE.setting in 'Regex::ACCEPTS' at line 6354:CORE.setting in main program body at line 22:/tmp/VRVGFJwyVi» | 15:03 | |
jnthn | Aw. | ||
TimToady | we're trying to move most of the Unicode-ish properties to use pair notation to cut down the possibilities of collision with user-defined grammar rules | 15:04 | |
jnthn | oh. | ||
TimToady | and also because pair notation allows an argument | ||
moritz | rakudo: say "öl" ~~ /<isAscii>+/ | ||
jnthn | What does that really mean? | ||
p6eval | rakudo 8533c3: OUTPUT«Method 'isAscii' not found for invocant of class 'Cursor' in <anon> at line 22:/tmp/4pUb_ViZ3t in 'Cool::match' at line 2661:CORE.setting in 'Regex::ACCEPTS' at line 6354:CORE.setting in main program body at line 22:/tmp/4pUb_ViZ3t» | ||
jnthn | As in, what does <:foo> mean over <foo>? | ||
In terms of runtime semantics? | 15:05 | ||
15:05
tzhs left,
alester joined,
drbean left
|
|||
jnthn | That is, is it still some kinda method call? | 15:05 | |
15:06
molaf joined
15:07
drbean joined
|
|||
TimToady | likely, but it's not clear whether the method name is the key of the pair | 15:07 | |
bbkr_ | rakudo: any("\x01" .. "\x7F") # timeouts for me | ||
TimToady | and we may want to nail the namespace of character props down at compile time | ||
p6eval | rakudo 8533c3: OUTPUT«(timeout)» | ||
TimToady | (for efficiency) | 15:08 | |
moritz | (1..127)>>.chr | ||
jnthn | Ah, that's a good point. | ||
15:08
orevdiabl left
15:09
donri left,
revdiablo joined,
revdiablo left,
revdiablo joined
|
|||
TimToady | but the namespace of properties (and associated values) from Unicode is quite extensive, and we mainly want to avoid collisions, in addition to allowing specified values | 15:10 | |
perldoc.perl.org/perlunicode.html#U...Properties lists *some* of these properties | |||
though Perl 5's syntax is special rather than overloading pair notation | |||
15:11
drbean left
15:12
drbean joined,
woosley left
15:13
alester left
|
|||
TimToady | so where P5 uses \p{Bidi_Class:R} we'd use <:Bidi_Class<R>> | 15:13 | |
or <:Bidi_Class('R')> if you don't like nested angles | 15:14 | ||
pmichaud | I thought <ascii> was implemented. | ||
TimToady | using pair notation also gives us <:!Letter> | 15:15 | |
15:15
alester joined
|
|||
moritz | alpha: say "abc" ~~ /<ascii>+/ | 15:15 | |
p6eval | alpha : OUTPUT«(timeout) find regex 'ascii'in regex » | ||
TimToady | S05:1587 for the P6 spec on this | ||
moritz | pmichaud: the nqp char class implementation is... very incomplete | 15:16 | |
pmichaud | ah, S05 doesn't define <ascii> | ||
that's why nqp/rakudo doesn't have it. :-) | |||
moritz | pmichaud: it does spec backslash sequences in char classes though :-) | 15:17 | |
pmichaud | moritz: it does? ;-) | ||
15:17
drbean left
|
|||
pmichaud | moritz: I see no backslash sequence in char class spec in S05. :-P | 15:18 | |
15:18
rlb3 joined
|
|||
pmichaud | (not saying it's not valid... just that it's not specced) | 15:18 | |
moritz | S32 uses it :-) | ||
15:18
drbean joined
|
|||
moritz | and the test suite | 15:18 | |
pmichaud | S32 was speculative at the time that was written | ||
TimToady | it's specced in the spot that says "Just like P5 if we don't mention it" :P | 15:19 | |
moritz | but yes, it's underspecced | ||
TimToady | agreed | ||
pmichaud | and at the time I wrote NQP, even STD.pm didn't have a good way to parse that | ||
much less implement it | |||
moritz | but my ack agrees with you that it's not mentioned in S05 | 15:20 | |
(unless in a char class that spans multiple lines in the source) | |||
TimToady | it's specced in STD then :) | ||
moritz | ETOOMANYDIFFERENTSPECS | 15:21 | |
pmichaud | TimToady: I see that STD.pm goes into the <Q> parser for enumerated character classes.... what does the :cc tweak do? | 15:22 | |
15:22
drbean left
|
|||
pmichaud | oh, wait | 15:23 | |
hmmm | |||
15:23
mkramer joined
15:24
drbean joined
|
|||
pmichaud | okay, my question still stands... what does the :cc tweak do? | 15:24 | |
does it then make use of "role cc" ? | 15:25 | ||
moritz | it mixes the role cc in | ||
pmichaud | and that's what enables it to recognize the cc backslashes | ||
okay, we can perhaps do something similar | 15:26 | ||
at least that helps on the parsing side | 15:27 | ||
figuring out <+alnum-[\D]> is going to be fun, though. :-) | |||
jnthn | -Ofun ;) | 15:28 | |
15:28
drbean left
|
|||
moritz | which part? the subtraction? | 15:28 | |
pmichaud | the subtraction of the negation, yes. | ||
moritz | or getting a list of matched characters/ranges from alnum? | ||
sounds like not too hard with inversion lists | |||
pmichaud | I can do it with inversion lists.... but we really need some opcodes to do the actual match efficiently | ||
and to have a good way of encoding the inversion list in the generated code | 15:29 | ||
I've already solved this problem on paper | |||
I couldn't really implement it in nqp-rx because of the need/want for specialized opcodes to do the matching efficiently | |||
moritz | how? by generating a bit field in the end? | ||
pmichaud | that's not an issue in 'nqp' | ||
moritz | right | 15:30 | |
pmichaud | oh, I can match against an inversion list no problem | ||
but we really don't want it to be a bunch of PMCs | |||
15:30
drbean joined
|
|||
pmichaud | easier is to simply have a string of on/off codepoints | 15:30 | |
15:30
mkramer left,
vividsnow left
|
|||
moritz | matching against an inversion list should be O(log($list-length)) | 15:30 | |
pmichaud | right | 15:31 | |
it is | |||
moritz | subtraction is O($len1 + $len2) | ||
pmichaud | but I didn't necessarily want to code that in PIR | ||
moritz | inverting is O(1) | ||
understandable :-) | |||
pmichaud | as I said, I solved all of this on paper already, including union and renormalizing the lists | 15:32 | |
moritz | ok ok :-) | ||
jnthn | pmichaud: Please no more PIR. | ||
pmichaud: :) | |||
pmichaud | we also have to have a table to maintain the inversion lists for \d, \s, \h, \v, etc. | 15:33 | |
moritz | aye | ||
jnthn | pmichaud: The cost of developing in PIR in new-NQP is far higher. | ||
pmichaud | jnthn: np | ||
jnthn | pmichaud: And the fact that Regex.pbc isn't in PIR has been a source of regular pain and bugs during implementing separate compilation. :) | ||
er, *is* in PIR | |||
Or isn't in some HLL :) | |||
pmichaud | jnthn: as I said, I didn't necessarily want to code this in PIR. | 15:34 | |
moritz looked through PIR chunks in the nqp source, looking for ones that I could replace with nqp | |||
and some of the regex bits looked pretty hairy | |||
pmichaud | jnthn: which is why it hasn't been done yet | ||
15:34
bluescreen10 left
|
|||
moritz | like... the OPP in pir *shudder* | 15:34 | |
jnthn | pmichaud: Yes, makes sense. | ||
15:34
drbean left
15:35
drbean joined
|
|||
jnthn | pmichaud: Between some improvements to PAST and PAST::Compiler and writing a relaitvely straightforward optimizer, we can eliminate much of the overhead we get by writing stuff in NQP today compared to PIR also. :) | 15:36 | |
15:36
llabthgie joined
|
|||
pmichaud | good. | 15:36 | |
jnthn | pmichaud: We could do with things like, parameters that don't assume they need to go into a lexical. | 15:37 | |
If we have a block that declares no contextuals and has no nested blocks within it, we can optimize the lexicals out completely. | |||
I already wrote a first cut of that for nqpclr. | |||
Of course, non-PMC lexicals would also be good...I can deal with those at some point. | 15:38 | ||
I did a profile of NQP recently using the VS profiler. find_lex is actually a hot path. | 15:39 | ||
15:39
drbean left
|
|||
pmichaud | if we assume that lexical names never get rebound we can eliminate the find_lex also. | 15:40 | |
or, at least, have only one per block | |||
(one per lexical per block) | 15:41 | ||
jnthn | Well, we can statically know if they're rebound if they're non-contextual, I guess? | ||
Just analyze the block for :+ | |||
er, := | |||
And then flag the lexical somehow as non-rebound. | |||
pmichaud | even if they're contextual we can assume they're not rebound, at least in p6 | ||
15:41
drbean joined
|
|||
jnthn | Oh? | 15:41 | |
$*foo := 42; | 15:42 | ||
Could rebind something way down the call chain? | |||
pmichaud | that actually doesn't change the binding of the '$*foo' symbol -- it still points to the same pointer PMC | ||
15:42
justatheory joined
|
|||
pmichaud | at least, that's how it is in our current model | 15:42 | |
jnthn | Yeah, but our current model seems...broken. :( | ||
(In Rakudo, not in NQP). | |||
pmichaud | no, I mean the current p6 model | ||
jnthn | Oh. | ||
:= replaces the container though? | 15:43 | ||
Not just the value in it. | |||
pmichaud | no | ||
jnthn | Unless we have two levels of containers | ||
pmichaud | it doesn't replace the container, it simply makes one container refer to another | ||
same as binding in function calls | |||
jnthn | Ah | 15:44 | |
pmichaud | we have to keep them separate because the two containers might have different constraints | ||
jnthn | Yes, that's true. | ||
pmichaud | my $x = 5; | ||
my int $y := $x; | |||
*Int | |||
that's the same as | |||
my $x = 5; sub foo(Int $y) { ... }; foo($x) | 15:45 | ||
$y and $x are different containers | |||
so the symbol $y never gets rebound to a new PMC -- it always has the PMC that has the attached "Int" constraint | |||
moritz | rakudo: my $x = 5; sub f(Int $y) { $x = 'foo' }; f($x); say $x | ||
p6eval | rakudo 8533c3: OUTPUT«foo» | ||
moritz | rakudo: my $x = 5; sub f(Int $y) { $x := 'foo'; say $y }; f($x); say $x | ||
p6eval | rakudo 8533c3: OUTPUT«foofoo» | 15:46 | |
moritz | niecza: my $x = 5; sub f(Int $y) { $x := 'foo'; say $y }; f($x); say $x | ||
p6eval | niecza v4-76-g7bf5ef9: OUTPUT«===SORRY!===Any()In parameter declaration, typename 'Int' must be predeclared (or marked as declarative with :: prefix) at /tmp/KFCnvbalDA line 1:------> my $x = 5; sub f(Int⏏ $y) { $x := 'foo'; say $y }; f($x); sayParse | ||
..failed» | |||
15:46
drbean left
|
|||
moritz | niecza: my $x = 5; sub f(Num $y) { $x := 'foo'; say $y }; f($x); say $x | 15:46 | |
p6eval | niecza v4-76-g7bf5ef9: OUTPUT«5foo» | ||
moritz | which one is correct? or are both wrong? | ||
(think s/Num/Int/ in niecza) | 15:47 | ||
15:47
ymasory joined
15:48
drbean joined
|
|||
jnthn | moritz++ # great example | 15:48 | |
pmichaud | I asked TimToady this question at NPW'09 | ||
I don't think I got a clear answer. :-) | |||
jnthn | nqp: my $x = 5; sub f(Int $y) { $x := 'foo'; say $y }; f($x); say $x | ||
p6eval | nqp: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 1, near " 5; sub f("current instr.: 'nqp;HLL;Grammar;panic' pc 17577 (gen/hllgrammar-grammar.pir:5028)» | ||
jnthn | nqp: my $x := 5; sub f(Int $y) { $x := 'foo'; say $y }; f($x); say $x | 15:49 | |
p6eval | nqp: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 1current instr.: 'nqp;Regex;Cursor;FAILGOAL' pc 3435 (src/Regex/Cursor.pir:233)» | ||
moritz | say() | ||
jnthn | nqp: my $x := 5; sub f(Int $y) { $x := 'foo'; say($y) }; f($x); say($x) | ||
p6eval | nqp: OUTPUT«5foo» | ||
jnthn | Heh, thought that'd happen :) | ||
moritz finds rakudo's answer a bit confusing | |||
how can $y be 'foo' if it's typed as Int? | |||
jnthn | Niecza's view of binding is more like NQPs. | ||
pmichaud | I'm inclined to say that Rakudo is wrong there on the rebind | ||
well, maybe not | |||
15:50
bluescreen10 joined
|
|||
jnthn | afaik, anyway | 15:50 | |
pmichaud | NQP's view doesn't have any notion of containers, though. | ||
jnthn | No, that's true. | ||
pmichaud | anyway, my point is that in Rakudo we can actually assume that the lexical symbol $x remains bound to the same PMC throughout its lifetime | 15:52 | |
15:52
drbean left
15:53
rlb3 left
|
|||
pmichaud | if we want to implement p6 binding and constraint semantics, that's just the way it works out | 15:53 | |
15:53
vividsnow joined,
drbean joined,
rlb3 joined,
IllvilJa left
|
|||
jnthn | pmichaud: OK. Sounds like we can be more efficient then :) | 15:54 | |
pmichaud | it means PAST needs a way of being able to say "assume lexicals are never rebound and optimize for that" | 15:55 | |
while it's true for Rakudo, it might not be true for other languages | |||
jnthn wonders if that should be Var level or Block level | |||
pmichaud | both | ||
that's why PAST has a 'default' set of attributes for vars :-) | |||
jnthn | :) | 15:56 | |
pmichaud | so you can say "in this block, if a Var doesn't declare otherwise, assume it's scope/binding/whatever is ..." | ||
if require every Var to explicitly declare, that can get expensive | |||
jnthn | Yes, it would. | ||
15:58
drbean left
|
|||
TimToady | I suspect := and ::= are quite different | 15:59 | |
16:00
drbean joined
|
|||
TimToady | the first is (I hope) a simple pointer substitution, while the second is able to add constraints | 16:00 | |
moritz | TimToady: do you have an opinion on how my example should behave? | ||
TimToady | parameter binding is the second | ||
moritz | rakudo: my $x = 5; sub f(Int $y) { $x := 'foo'; say $y }; f($x); say $x | 16:01 | |
p6eval | rakudo 8533c3: OUTPUT«foofoo» | ||
TimToady | I think rebinding $x makes $x and $y point to different things | 16:02 | |
pmichaud | I can agree with that | ||
16:02
rhebus joined
|
|||
pmichaud | Rakudo needs to move to a two-layer system | 16:03 | |
moritz | so output should be 5\nfoo\n, right? | ||
TimToady | I believe so | ||
pmichaud | $x -> container -> 5 | ||
moritz submits rakudobug | |||
jnthn | pmichaud: Unless the lexpad's slot *is* the outer container. | ||
16:03
drbean left
|
|||
pmichaud | jnthn: two containers | 16:03 | |
TimToady | a "bvalue" to := should just be a pointer to a pointer | 16:04 | |
jnthn | pmichaud: Right, there's still two. :) | ||
pmichaud | the lexpad slot is the variable container | ||
TimToady | a "bvalue" to ::= is more complicated | ||
pmichaud | my $x results in the $x slot going to a PMC that points to a PMC that points to 5 | ||
TimToady | I'd like your first PMC to be a native type in most implementations | 16:05 | |
moritz | that feels... expensive | ||
jnthn | If 5 was some boxed object, it'd be a PMC pointing to a PMC that points to the object? | ||
pmichaud | jnthn: yes | ||
jnthn | That sounds costly | ||
TimToady | that is, := is modifying an unboxed native ref | ||
msot if the time | |||
pmichaud | TimToady: we have to have somewhere to hang constraints and properties of the variable itself | ||
16:06
drbean joined
|
|||
TimToady | that's the business of ::=, not := | 16:06 | |
::= can add to a linked list, but := shouldn't | |||
ashleydev | make it like an inside-out class and add the attributes somewhere else "if needed" | ||
16:06
rhebus_ joined
16:07
rhebus left,
rhebus_ is now known as rhebus
|
|||
TimToady | assuming there's a root pointer, := replaces the root pointer, and ::= inserts after it | 16:07 | |
pmichaud | so: my $x = 5; my Int $y := $x; $y = 'hello'; # valid? | ||
16:07
molaf left
|
|||
TimToady | probably valid but "erroneous" | 16:08 | |
jnthn | What does that mean? | 16:09 | |
pmichaud | in other words, binding a variable with := causes it to adopt whatever (non-) constraints exist on whatever it's being bound to? | ||
TimToady | I'm sure that making := fast and ::= smart will result in some "don't do thats" | ||
pmichaud | s/variable/symbol | ||
TimToady | pmichaud: yes, though perhaps we can catch some of those at compile time | ||
I'd like := to be very primitive, even if it defeats the type systems | 16:10 | ||
pmichaud | okay, I'm fine with that. | ||
jnthn: ignore what I said above about being able to optimize our lexical fetches. :-) | |||
16:10
drbean left
|
|||
jnthn | TimToady: That makes me nervous. | 16:10 | |
TimToady: Given I've plans to rely on things typed as Int actually *being* that. | 16:11 | ||
pmichaud | in rakudo's case, we may end up making binding fast only to make variable fetches slow. | ||
jnthn | TimToady: If we defeat that then I'm going to start dispatching to surprise methods. ;) | ||
16:12
drbean joined
|
|||
TimToady | or maybe we just need to make sure our native type system supports native refs adequately | 16:12 | |
pmichaud | rethinking a bit | ||
16:05 <jnthn> That sounds costly | |||
Which is more costly? | 16:13 | ||
jnthn | pmichaud: If lexical accesses were *cheap* we could worry far less. | ||
pmichaud | (more) | ||
1. Lexical fetch for $x -> container -> value | |||
2. Known $x -> container -> container -> value | |||
jnthn | We know at compile time for most lookups enough to map them to N pointer chases down the otuer chain, then a slot index. | ||
At the moment they're really costly because for every frame in the outer chain that we walk it doing a hash lookup. | 16:14 | ||
pmichaud | jnthn: sure, but if the lexical is known to be in a particular register already, we can avoid even the N pointer chases | ||
once we've looked it up once, we can keep it in that register for the rest of the block | |||
TimToady | what operation do you need a boxed pointer chase for that an unboxed pointer chase in the first step would be "too simple" | ||
? | |||
jnthn | Sure, but a container pointing to a container is a pointer chase too I guess. But it's at least 1 and not N. I grant that. | 16:15 | |
pmichaud | it's also not a slot lookup | ||
i.e., we're not indexing into an array | |||
jnthn | To the degree that Parrot register accesses aren't slot lookups, yes. ;) | ||
pmichaud | good point :-) | ||
16:16
justatheory left
|
|||
jnthn | TimToady: Part of what I'm wondering is "where do the constraints live" | 16:16 | |
In the model pmichaud is suggesting, afaict they'd be hung off the outer container. | |||
pmichaud | TimToady: if $x := means that we modify an unboxed pointer, then every access to $x has to do a lexpad lookup to find out what its current unboxed pointer value is | ||
and lexpad lookups are currently very expensive in Parrot | |||
16:16
drbean left
|
|||
jnthn | They are, but they don't have to be if it matters a lot to us that they're faster. | 16:17 | |
pmichaud | because the only way we have to maintain a reference to a pointer is to box it | ||
TimToady | well, that's a problem, ain't it? | ||
pmichaud | if you're suggesting that parrot needs a native reference type, perhaps. | 16:18 | |
I'm not the architect there. | |||
16:18
drbean joined
|
|||
pmichaud | all we have are native int, native str, native num, and PMC ref | 16:19 | |
TimToady | I'm saying I think we need to get to a primitive model a bit closer to C or Lisp here, seems like | ||
16:19
mj41 left
|
|||
pmichaud | we don't have a native type that can reference a PMC ref | 16:19 | |
TimToady | or at least not prevent such an implementation on VMs that can support native pointer to pointer | 16:20 | |
(internally, not necessaryily user-visible) | |||
this feels a bit like the boundary between "managed" and "unmanaged" code | 16:21 | ||
pmichaud | jnthn: we can speed up lexpad lookups a lot, but I don't think we can speed it up so much that it's less expensive than simply avoiding the lookups altogether :-) | ||
TimToady | I'd at least like to have a variant of P6 that can rival the speed of C/C++ eventually | ||
16:21
MayDaniel joined
|
|||
pmichaud | and we still need to know how my $x = 5; my Int $y := $x; $y = 'hello'; affects things | 16:22 | |
16:22
yegor_ joined
16:23
yegor_ left
|
|||
pmichaud | if we declare that "erroneous" but not enforced/enforceable, I'm fine with that. | 16:23 | |
16:23
drbean left,
vividsnow left
|
|||
TimToady | perhaps := should be disallowed between locations that are known to be different types at compile time | 16:23 | |
or require something to say "I mean it" | 16:24 | ||
16:24
IllvilJa joined
|
|||
TimToady | "with UNCHECKED_TYPE_CONVERSION" in Ada, for instance | 16:24 | |
pmichaud | I don't follow that. | ||
16:25
drbean joined
|
|||
pmichaud | (not sure I need to :-) | 16:25 | |
jnthn | TimToady: Allowing people to do stuff easily that isn't type safe seems like the path to a lot of pain. | ||
TimToady | my point is basically that we can't do any native types without the compiler knowing the type of the variable | ||
jnthn | Agree on that point. | ||
TimToady | jnthn: that's why it's in all caps | ||
much like MONKEY_TYPING | 16:26 | ||
jnthn | TimToady: OK. So long as you don't care that we'll go and find whatever method is in slot 42 of Int's vtable when the actual value is a Monkey. :) | ||
pmichaud | so, in this case the := would be disallowed because the Int constraint on $y doesn't match the Mu constraint of $x ? | ||
TimToady | phone | 16:27 | |
jnthn | pmichaud: At the moment I'm pondering that maybe our container is at the 6model level a parametric role. (more) | ||
role ScalarContainer[T] is repr('SomeCheapContainerThing') { has T $!data; } | 16:28 | ||
It'll then handle native type storage automagically. | |||
And we'd not need to worry about storing native types in the lexpad. | 16:29 | ||
16:29
drbean left
|
|||
pmichaud | I totally don't follow that last point | 16:29 | |
jnthn backs up a little | |||
my int $x = 42; | 16:30 | ||
pmichaud | nested blocks still need to access the native typed lexical, yes? | ||
jnthn | Somewhere we need to store that 42. We shouldn't box it. | ||
16:30
jferrero joined
|
|||
jnthn | If I understand the model you're proposing correctly, then the lexpad only ever points to a container which in turn has a value | 16:30 | |
That container would be a reference type, e.g. a PMC. | 16:31 | ||
16:31
drbean joined
|
|||
jnthn | So our actual native storage would not be in the lexpad itself, but in the container which the lexpad references. | 16:31 | |
Am I missing something? :) | 16:32 | ||
pmichaud | Okay. | ||
that makes more sense | |||
so our lexpad still only holds PMCs, but some of those PMCs are containers for native types | |||
jnthn | Yes | ||
pmichaud | actually, all of them are, if we consider a PMC ref to be a native type | ||
jnthn | Well, it kinda is :) | 16:33 | |
pmichaud | right | ||
jnthn | It's just a PMC* pointer. :) | ||
But that's how P6opaque already works today | |||
pmichaud | that feels very clean-ish | ||
but in the case of non-native types, we'd still end up with | |||
my $x = 5; | |||
5 is a boxed constant | |||
then we need a PMC for the variable | 16:34 | ||
then a PMC for $x | |||
16:34
birdwindupbird left
|
|||
jferrero | rakudo.org/status is blank? | 16:34 | |
jnthn | pmichaud: thinking... :) | ||
pmichaud | note that I don't have a problem with this at all | ||
jnthn | pmichaud: Note that we won't use Integer PMC any more. Int and Num will directly have the native value stored within them. | ||
pmichaud | yes | 16:35 | |
moritz | jferrero: we're in the process of migrating to a more reliable hosting solutioin | ||
pmichaud | but it's still 3 pmcs | ||
jnthn | Ouch. | ||
pmichaud | Int | ||
variable | |||
$x | |||
but we no longer need lookups for $x | |||
jferrero | rakudo.de/ is freeze? | ||
OK, moritz | |||
jnthn | pmichaud: How far can we share the $x? | 16:36 | |
pmichaud: Need we only clone it on a newclosure? | |||
16:36
drbean left
|
|||
moritz | jferrero: rakudo.de is my fault... I should take down that spectests graph | 16:36 | |
pmichaud | jnthn: thinking | ||
moritz | it doesn't mean anything, yet people try to ask deep questions about it | ||
jnthn | If so then I'm less scared. | ||
tadzik | whose child is rakudo.de? | 16:37 | |
jferrero | OK, moritz | ||
16:37
drbean joined
|
|||
moritz | tadzik: mine | 16:38 | |
pmichaud | well, even now we don't really "clone" the containers | ||
tadzik | moritz: still tracking proto projects? | ||
moritz | tadzik: I don't know what it tracks right now, if anything | 16:39 | |
jnthn | pmichaud: We create them every time we enter a block at the moment. | 16:40 | |
pmichaud | I think we still have to do that. | ||
jnthn | pmichaud: I'm thinking we could create the outermost ones once, and attach any type constraint info to them. | ||
pmichaud | (recursion) | ||
jnthn | Oh, that doesn't cause a newclosure, does it...hm. | 16:41 | |
Yeah, I'm thinking of the operation on the wrong block here. | |||
16:42
drbean left
|
|||
jnthn | I guess I'm just a little worried about my Foo $x .= new(); immediately creating you three GCable object allocations, which in truns is six heap allocations. | 16:43 | |
*in turn | |||
16:44
drbean joined
|
|||
pmichaud | we can "cheat" a bit | 16:44 | |
we could just have container + value, and then go to the multi-level container only if bound to | 16:45 | ||
being careful not to rebind the lexical | 16:46 | ||
for example, in $y ::= $x | |||
if $x isn't pointing to a container, we create an anonymous container *then*, then bind both $x and $y to that | |||
(bind in the := sense, not in the lexpad slot sense) | 16:47 | ||
i.e., only go multi-level when we know we need to | |||
so, for | |||
my $x = 5; # container for $x, Int 5 | 16:48 | ||
my $y; # container for $y | |||
$y ::= $x; # create an anonymous container, point it to $x's current value, cause $x and $y to reference the anonymous container | |||
16:49
drbean left
|
|||
jnthn | Sounds feasible | 16:49 | |
pmichaud | and, of course, once a variable is referencing a container, we don't need to repeat that step later | ||
so, it's lazy 3-level | |||
or lazy 2-level (or whatever we call it) | 16:50 | ||
16:50
odrm joined,
drbean joined
|
|||
jnthn | And avoids the copy op which seems to be source of various of our bind bugs today. | 16:50 | |
pmichaud | are we still using copy? | ||
16:51
cdarroch joined,
cdarroch left,
cdarroch joined
|
|||
jnthn | Only for := | 16:51 | |
How will this play out with arrays? (more) | |||
my int @x; # a package array of ints | |||
my Int @x; # array of Int objects, or array of containers pointing to Int objects? | 16:52 | ||
s/package/packed/ | |||
pmichaud | the second one is an array of containers | ||
(that's how it's implemented now) | |||
jnthn | OK. | ||
pmichaud | the first one is likely ArrayContainer[int] in the model you proposed above | ||
jnthn | OK | 16:53 | |
pmichaud | which has some nice potential for making things efficient there :-) | ||
(as in packed arrays) | |||
jnthn | Yes. | ||
pmichaud | actually, the second one might also be ArrayContainer[Int] and it could largely "just work", perhaps. | 16:54 | |
16:54
drbean left
|
|||
pmichaud | but Rakudo today assumes that Array is really Array of Scalar, and actually has each element as the equivalent of its own scalar container | 16:54 | |
jnthn | If it knew it needed the container, yes. | ||
Yeah, that's the disconnect I'm worried about | 16:55 | ||
Where will that complexity bite us... | |||
pmichaud | actually, thus far it seems to be fairly straightforward | ||
or by disconnect are you concerined with ArrayContainer[Int] versus ArrayContainer[int] ? | |||
*concerned | 16:56 | ||
jnthn | Yeah | ||
pmichaud | maybe | ||
ArrayContainer[ScalarContainer[Int]] | |||
jnthn | *nod* | ||
pmichaud | at least conceptually | ||
jnthn | Then we can wrap up the complexiyt | ||
16:56
drbean joined
|
|||
jnthn | *complexity | 16:56 | |
Inside of Array | |||
moritz | ok, rakudo.de/ is now "updated" | ||
jnthn | Or some such :) | ||
moritz | as in, stripped out everything that's not updated regularly anymore | ||
pmichaud | anyway, since you've been dealing with lexicals and the like lately, I'm thinking I'll leave it to you to decide the model based on today's discussions | 16:57 | |
moritz | if somebody wants to reconstruct historic module numbers, I might add statistics for the current numbers based on META.list in the ecosystem | ||
16:57
Moukeddar joined
|
|||
pmichaud | but I do think that avoiding the repeated lexical fetches is plausible now, where it wasn't in many earlier versions of Rakudo | 16:57 | |
16:58
odrm left
|
|||
pmichaud | (because Perl 6 basically requires that we have some sort of container PMC, to which a lexical slot can be "permanently" bound) | 16:58 | |
16:58
odrm joined
|
|||
jnthn | Yeah, I can see the value of avoiding the repeated fetches. | 16:58 | |
We do spend quite a lot on that. | |||
(repeatedly fetching, that is) | 16:59 | ||
pmichaud | so I think I'm saying I'll let you decide the repeated fetch versus indirections trade-off | ||
we know we'll have *some* indirections somewhere, especially on ::= binding | |||
jnthn | *nod* | ||
pmichaud | but we can make them really inexpensive | ||
jnthn | My other concern is that what we hand back from .VAR is actually a proper object. | 17:00 | |
pmichaud | note also that the lazy 2-level I described above also avoid the chain of references | ||
i.e., my $x; my $y ::= $x; my $z ::= $y; | |||
jnthn | But I think that can be done very cheaply. | ||
pmichaud | we don't end up with $z -> $y -> $x as we have now | ||
jnthn | Yes, that should not be a chain. | ||
17:00
drbean left
|
|||
jnthn | Right. | 17:00 | |
pmichaud | instead we end up with $x, $y, and $z all pointing to a common anonymous container, while each retains its own constraints | 17:01 | |
17:01
Chillance joined
|
|||
pmichaud | (we can decide if constraints need chaining... but that's workable in this model also) | 17:01 | |
jnthn | On the one hand, I'm uncomfortable with the number of allocations. On the other, I know that find_lex is pricey. | ||
pmichaud | right, I agree. | 17:02 | |
I figure you have a better sense of where the balance might lie. | |||
jnthn | And I suspect a mildly aggressive optimizer can eliminate quite a few of them too. | ||
17:02
JimmyZ_ joined
|
|||
pmichaud | but as far as the number of allocations goes... I think in some sense the language requires them | 17:02 | |
so I'm not sure we can completely avoid them | |||
17:02
drbean joined
|
|||
jnthn | Looking forward six months, I expect to be inlining tiny-bodied multis too. | 17:03 | |
pmichaud | +1 | ||
jnthn | When we have the type information to do so. | ||
17:03
Moukeddar left
|
|||
jnthn | Which we're building towards. | 17:03 | |
17:03
Entonian joined
|
|||
jnthn | So $a + $b where we know $a and $b are int (or Int) won't even be a call, meaning there won't even be containers to build for the parameters. | 17:03 | |
Or PCC, or a callcontext... ;-) | 17:04 | ||
pmichaud | alester: Feel free to point rakudo.org to rakudoperl.org whenever you're ready. | ||
alester: I think the new site is as ready as it needs to be for the domain repointing. | |||
jnthn: that sort of inlining will be awesome | 17:06 | ||
jnthn | pmichaud: Yes. There's some work to do to get there, but I feel I've got a reasonable sense of the path to it. | 17:07 | |
17:07
drbean left
|
|||
jnthn | The other thing we'll win a decent bit on is that typechecks should be a bunch cheaper. :) | 17:08 | |
17:09
drbean joined
|
|||
jnthn | nqp: class Foo is Bar { } | 17:09 | |
p6eval | nqp: OUTPUT«Can only use get_how on a RakudoObjectcurrent instr.: 'nqp;NQPClassHOW;compute_c3_mro' pc 1498 (gen/nqp-how.pir:430)» | ||
jnthn | Anybody know how to get that to update? | ||
That gives a nice compile-time warning now that actually makes sense :) | |||
moritz takes a look | |||
jnthn | Since, like, days ago. ;) | ||
17:09
plobsing left
|
|||
jnthn | moritz++ # thanks! | 17:09 | |
pmichaud | afk, lunch | 17:11 | |
JimmyZ_ | E:\Open Source\nqp>nqp | 17:12 | |
Null PMC access in instantiate() | |||
ctmo branch | |||
moritz | nqp might not be fine with spaces in path names | 17:13 | |
17:13
drbean left
|
|||
jnthn | JimmyZ_: Looks familiar. You probably have an old libparrot.dll lying around. | 17:13 | |
I'm pretty sure I got that error from that. | |||
dalek | p/ctmo: 4042390 | moritz++ | build/gen_parrot.pl: [Configure] git fetch in the right place |
||
jnthn | Try copy parrot_install/bin/libparrot.dll . | 17:14 | |
er, backslashes! | |||
:) | |||
moritz: You maybe wanted taht fix in master? :) | |||
17:15
drbean joined
|
|||
JimmyZ_ | it works... | 17:15 | |
jnthn | :) | 17:16 | |
JimmyZ_ | make clean doesn't clean libparrot.dll :( | ||
good night | 17:17 | ||
17:17
JimmyZ_ left
|
|||
moritz | jnthn: sooner or later, yes | 17:18 | |
17:19
rhebus left,
drbean left
|
|||
jnthn | ;) | 17:21 | |
ctmo has a few bustages at the moment :) | |||
17:21
drbean joined,
orafu left
17:23
Tedd1 joined
17:25
masak joined
|
|||
masak | greetings, zerbas. | 17:25 | |
TimToady | .oO(zerba the greek) |
17:26 | |
jnthn | masak! \o/ | ||
tadzik | hello masak | ||
17:26
drbean left
|
|||
jnthn | nom shop & | 17:26 | |
17:27
Lorn_ joined,
Lorn_ left
|
|||
masak | what's ufobuilder? | 17:27 | |
tadzik | an accident :> | ||
that's basically 'ufo && make && make test && make install' as a backend for Pies | |||
17:27
drbean joined
17:28
dsouza joined
|
|||
masak | heh :) | 17:28 | |
ufo wasn't convenient enough, huh? :P | |||
tadzik | no, that was just in-field testing of Pies | 17:29 | |
17:29
fhelmberger left
|
|||
tadzik | a proof-of-concept :) | 17:31 | |
17:32
drbean left,
bluescreen10 left
|
|||
masak | PerlJam: in the Infocom game "The Lurking Horror", there's a wonderful scene description of a seasoned computer hacker who types with one hand 'faster than some people who use all of their fingers'. | 17:33 | |
17:34
drbean joined
|
|||
masak | moritz: thank you for panding Yapsi ;) | 17:34 | |
17:34
dsouza left
|
|||
masak .oO( 'pandizing'? ) | 17:34 | ||
moritz | masak: thank you for your email forward :-) | ||
17:34
IllvilJa left
17:36
MayDaniel left
17:38
drbean left
|
|||
masak | moritz: got another one some hours later, saying the book has dispatched. | 17:38 | |
moritz | \o/ | ||
then it might actually arrive before the official publishing date | |||
17:39
drbean joined
|
|||
masak | moritz: I haven't written an OPP in PIR, but I'm pretty sure I understand the one in PGE, after having built a Perl 6 version off of it. it's actually not that tricky -- just a lot of cases to consider, and a lot of goto instructions to muddle things up. | 17:39 | |
pmichaud: do I understand you correctly that binding makes one container refer to another container? I always thought it made a container refer to the *value* in another container... | 17:41 | ||
ah, I see now what TimToady said about := and ::= | 17:43 | ||
17:44
drbean left
|
|||
masak | <TimToady> assuming there's a root pointer, := replaces the root pointer, and ::= inserts after it | 17:44 | |
I guess the "links" in the linked list are something like containers... | |||
17:44
drbean joined
17:46
bluescreen10 joined
|
|||
jnthn | masak: (refer to the value in another container) wouldn't that be assignment? :) | 17:47 | |
masak | hm. :) | 17:48 | |
ok, but it still doesn't match my picture of it. | 17:49 | ||
17:49
drbean left
|
|||
masak | in my mental model, I have two *variables* (lexpad entries, whatever) refer to the same container after a binding. | 17:49 | |
nowhere is one containing referring to another container. | |||
17:50
IllvilJa joined
17:51
drbean joined
|
|||
jnthn | masak: If you think of the lexpad as a kinda container... :) | 17:51 | |
masak | sure, it's a hash-like container. | ||
but that's not what we usually mean by "container" when we talk about binding. | 17:52 | ||
17:55
drbean left
17:56
justatheory joined
17:57
drbean joined
18:01
drbean left
18:03
drbean joined
18:07
Moukeddar joined,
Moukeddar left
18:08
drbean left
18:09
drbean joined
18:14
drbean left
18:16
drbean joined
18:18
ggoebel__ left
18:20
drbean left
18:21
mtk left
18:22
drbean joined,
molaf joined
18:24
ggoebel__ joined
18:25
asdfssssssa joined
18:26
drbean left
18:28
drbean joined
18:29
mtk joined
18:32
ab5tract joined
18:33
drbean left,
molaf left
18:34
drbean joined
18:39
drbean left
18:40
drbean joined
18:44
drbean left
18:46
drbean joined
|
|||
pmichaud | masak: the thing is, that we tie constraints to lexpad entries, not to "containers" | 18:48 | |
unless each lexpad entry is its own container | |||
when we say my Int $y; $y ::= ... | 18:49 | ||
we can't simply (re-)bind $y to the value on the right; we also have to keep track of the fact that $y has a constraint | 18:50 | ||
18:50
Entonian left
|
|||
pmichaud | and in the case of | 18:50 | |
18:50
drbean left
|
|||
pmichaud | my $x = 5; my $y ::= $x; $y = 4; | 18:50 | |
we're changing the value of $x's container, not the value of the immutable 5 | |||
18:51
drbean joined
18:54
ymasory left,
Moukeddar joined,
ymasory joined,
Moukeddar left
18:55
arcus joined,
Solarion left,
birdwindupbird joined
18:56
drbean left
18:57
asdfssssssa left
|
|||
masak | pmichaud: oh, I agree with all of that. | 18:57 | |
18:57
asdfssssssa joined
|
|||
masak | pmichaud: but what I see there is not one container pointing to another, but the variables $x and $y pointing to the same container. | 18:57 | |
18:58
drbean joined
|
|||
pmichaud | what about | 18:59 | |
my $x = 5; my Int $y ::= $x; | |||
what holds the constraint for $y ? | |||
it can't be the container that $x is pointing to | |||
masak | nod. | 19:00 | |
it's the lexpad entry for $y, no doubt. | |||
pmichaud | so, it's a "container" | 19:01 | |
masak | is it the same kind of container as the thing that directly contains the 5? | ||
pmichaud | not necessarily, no | ||
but it's more than a simple native pointer, certainly | 19:02 | ||
19:02
drbean left,
Mowah left,
mj41 joined
19:03
[Coke] left
|
|||
masak | oh, agreed. | 19:03 | |
pmichaud | this is where Rakudo has "ObjectRef" and "Perl6Scalar" to identify the different types of references | ||
although I think we got rid of Perl6Scalar | |||
anyway, the fundamental behavior of both $x and $y's "containers" are the same -- they point to something else | |||
19:04
drbean joined
|
|||
pmichaud | but they're not the same container, because one or the other or both have specialized behaviors under binding and assignment | 19:04 | |
masak | nod | 19:05 | |
pmichaud | (namely, how operations get forwarded to the thing they point to) | ||
19:05
[Coke] joined
19:06
Mowah joined
|
|||
pmichaud is sad that rakudo.org is displaying "webpage not available" again. :-( | 19:06 | ||
masak | :-( | ||
19:07
sftp joined
19:08
drbean left
19:09
drbean joined
19:11
rgrau joined
19:13
drbean left
19:15
drbean joined,
rlb3 left
19:16
asdfssssssa left
19:18
nymacro left,
[Coke] left
19:20
drbean left,
[Coke] joined
19:21
MayDaniel joined,
drbean joined
19:26
drbean left
19:28
drbean joined
19:29
[Coke] left
19:30
risou_ joined
19:32
drbean left
19:33
[Coke] joined,
risou left
19:34
drbean joined
|
|||
Util_ | What program generates the file at modules.perl6.org/proto.json ? | 19:39 | |
19:39
drbean left
|
|||
tadzik | build_projects_list.pl | 19:39 | |
(I think) | |||
19:39
yegor joined
|
|||
moritz hopes "yes" | 19:39 | ||
Util_ | In which repo? | 19:40 | |
19:40
drbean joined
19:41
justatheory left
|
|||
tadzik | modules.perl6.org | 19:41 | |
19:43
Sarten-X left
|
|||
Util_ | Ah! modules.perl6.org isn't just a web site, it is a GitHub repo! Doh! | 19:43 | |
moritz | it even says "This page is generated from the files in the modules.perl6.org repository." | 19:44 | |
where the last two words are links | |||
19:44
ymasory left
19:45
drbean left,
ymasory joined
|
|||
Util_ must remember to read *all* the way to the end :( | 19:45 | ||
Thanks! | |||
19:46
Util_ is now known as Util
|
|||
moritz | well, especially the start and the end | 19:47 | |
the rest of the page is pretty uniform :-) | |||
19:47
drbean joined
19:50
plobsing joined
19:51
Sarten-X joined,
drbean left,
wamba joined,
wamba left
19:52
drbean joined
19:53
birdwindupbird left,
wamba joined
19:57
drbean left,
yegor left
19:58
drbean joined
20:01
odrm left
20:03
drbean left
20:04
Rotwang joined
20:05
drbean joined
20:06
Mowah left
20:09
Moukeddar joined,
Moukeddar left,
drbean left
20:10
ab5tract left
20:11
drbean joined
20:12
justatheory joined
|
|||
masak | RT 4.0.0 released! \o/ | 20:13 | |
so, when will rt.perl.org get the new version? :) | 20:14 | ||
20:14
hanekomu joined
|
|||
tadzik | (: | 20:14 | |
20:14
drbean left
20:15
pothos left,
y3llow left,
y3llow_ joined,
pothos joined,
[Coke] left
20:16
y3llow_ is now known as y3llow,
drbean joined
20:17
[Coke] joined,
pothos left
20:18
pothos joined
20:19
arcus left
20:20
drbean left
|
|||
pmichaud | Sometime soon I'd like to have a conversation here about Perl 6 and disruptive technologies | 20:21 | |
I've been re-reading "The Innovator's Dilemma" and I think it has some bearing on what we should be doing with Rakudo/Perl 6 | |||
masak | +1 | ||
20:22
drbean joined
|
|||
jnthn | Sounds interesting | 20:22 | |
20:22
daxim_ left
|
|||
masak | Perl 6 is still, eleven years later, dynamite. let's implement it :) | 20:22 | |
20:22
daxim_ joined
|
|||
frettled | pmichaud: that's a very good idea | 20:23 | |
pmichaud | anyway, I particularly would like TimToady++ to be around for the discussion, since he's talked about "disruptive" a bit in the past | 20:24 | |
20:26
drbean left
20:27
jaldhar left,
drbean joined,
jaldhar joined
20:30
Moukeddar joined
20:32
[particle] left,
drbean left
20:33
drbean joined
20:36
starcoder is now known as DocPenguin
|
|||
Util | +1 to I.D. conversation | 20:37 | |
20:37
DocPenguin is now known as starcoder
|
|||
frettled | pmichaud: also, he tends to have some good feedback :) | 20:38 | |
pmichaud | maybe early next week | ||
this weekend is pretty full for me | |||
20:38
drbean left
20:39
drbean joined
|
|||
colomon | pmichaud++ | 20:39 | |
or +1, whatever. ;) | |||
frettled | +2! | 20:40 | |
Which, incidentally, is 2. | |||
masak | rakudo: say +2 | ||
p6eval | rakudo 8533c3: OUTPUT«2» | ||
masak | rakudo: sub postfix:<!>($n) { [*] 1..$n }; say +2! | 20:41 | |
p6eval | rakudo 8533c3: OUTPUT«2» | ||
tadzik | rakudo: sub postfix:<!> { [*] 1..$^n }; say +2! | 20:42 | |
p6eval | rakudo 8533c3: OUTPUT«2» | ||
masak | rakudo: say +$_(2) given { [*] 1..$^n } | ||
p6eval | rakudo 8533c3: OUTPUT«2» | ||
pmichaud | rakudo: sub postfix:<!?>($n) { ([*] 1..$n) ~ '?' }; say +2!? | 20:43 | |
p6eval | rakudo 8533c3: OUTPUT«2» | ||
20:43
drbean left
|
|||
pmichaud | hmmmmmm | 20:43 | |
Util | rakudo: say ++2; | ||
p6eval | rakudo 8533c3: OUTPUT«Cannot modify readonly value in '&infix:<=>' at line 1 in main program body at line 22:/tmp/NBHdpByRJI» | ||
masak | wait wait | ||
frettled is waiting. | |||
Util | Well, that is reassuring :) | ||
masak | wasn't pmichaud's eval a bug!? | ||
pmichaud whistles | |||
masak submits rakudobug!? | 20:44 | ||
pmichaud | it did seem buggish | ||
oh, not a bug! | |||
jnthn | Where was the bug? | ||
masak | oh!? | ||
pmichaud | I bet prefix:<+> is lower precedence | ||
jnthn | Yes | ||
masak | oh yes | ||
pmichaud | rakudo: sub postfix:<!?>($n) { ([*]?' }; say (+2)!? | ||
ingy | o/ | ||
p6eval | rakudo 8533c3: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 22» | ||
masak | because newly defined ops always get tightest prec | 20:45 | |
pmichaud | rakudo: sub postfix:<!?>($n) { ([*] 1..$n) ~ '?' }; say (+2)!? | ||
p6eval | rakudo 8533c3: OUTPUT«2?» | ||
frettled | ingy o/ | ||
20:45
drbean joined
|
|||
pmichaud | might still be a bug, but if so, it's a default precedence bug | 20:45 | |
ingy: o/ | |||
tadzik | ingy: \o | ||
pmichaud | well, I guess it's a bug either way, since +'2?' should throw an exception or warning | ||
masak | yes, but that one's submitted long ago :P | 20:46 | |
tadzik | what a relief! I was worried about "masak submits rakudobug" again :) | ||
frettled | tadzik: don't worry, still more than one hour until midnight local time. | ||
pmichaud | and now we know the real reason why masak++ wants RT 4.0 on rt.perl.org :-P | ||
masak | mwhahaha | 20:47 | |
frettled | pmichaud: because the current tracker doesn't scale with his bugrep rate? | ||
20:49
asdfssssssa joined
|
|||
pmichaud | frettled: yes, something like that | 20:49 | |
20:49
drbean left
|
|||
moritz is glad to see pmichaud++ active again | 20:50 | ||
pmichaud | well, I'm on the channel... not much in the way of commits yet :-| | 20:51 | |
masak | like being a newbie again! :P | ||
frettled | pmichaud: good to see you around, still, don't fret about the commits. | ||
20:51
drbean joined
|
|||
pmichaud | but yesterday was productive. Star release and new rakudoperl.org site up | 20:51 | |
frettled | mm, nice! | 20:52 | |
jnthn assures pmichaud that new nqp doesn't bite :) | |||
20:52
[particle] joined
20:54
sunnavy left
20:55
wamba left
|
|||
jasonmay | \o/ thanks to that META.info my module doesn't look like amateur hour on modules.p6 | 20:56 | |
20:56
drbean left
|
|||
tadzik | mission complete! | 20:57 | |
20:57
Moukeddar_ joined
20:58
drbean joined
20:59
sunnavy joined,
Moukeddar left
|
|||
frettled | jasonmay++ | 21:00 | |
tylercurtis | tadzik: ooc, is Panda Rakudo-specific? | 21:02 | |
masak | I think in practice, it is. | ||
21:02
drbean left
|
|||
masak | because no other implementation has the things Panda needs. | 21:03 | |
yet. | |||
tylercurtis should have just looked at the code. | 21:04 | ||
21:04
drbean joined
|
|||
tylercurtis | Panda::Builder does "perl6 --target=pir". | 21:04 | |
pmichaud | someday I hope that'll be Panda::Builder::Rakudo | 21:05 | |
masak | +1 | ||
21:05
sunnavy left
|
|||
pmichaud | and --target=<code> instead of --target=pir | 21:05 | |
21:05
sunnavy joined
|
|||
pmichaud | maybe --target=p6c or some generic name that means "the compiled form of the module" | 21:06 | |
jnthn | or -c | 21:07 | |
(compile | |||
) | |||
:) | |||
pmichaud | -c already means something, I think | ||
-c check syntax only (runs BEGIN and CHECK blocks) | |||
jnthn | ah, yes | 21:08 | |
pmichaud | still, that's a great idea :) | ||
moritz | --compile would be perfectly fine | ||
tadzik | tylercurtis: yes, sadly yes | ||
jnthn | moritz: yes, something like that | ||
21:08
drbean left
|
|||
jnthn | Or that :) | 21:08 | |
pmichaud | --compile is too unambiguous :) | ||
and it's at least 6 extra keystrokes. TOO LONG! TOO LONG! | 21:09 | ||
tadzik | tylercurtis: sorear asked me once about what neutro needs from niecza, I think the biggest blocker was the file IO support | ||
masak | --cpm :P | ||
pmichaud | cycles per minute? | ||
control program for microcomputers? | |||
tadzik | compile me | ||
21:09
drbean joined
|
|||
tylercurtis | Compile Perl Module? | 21:10 | |
tadzik | cute panda miniatures | ||
pmichaud | certified property manager ? | ||
critical path method? | |||
moritz | let's just chose some random TLA, and come up with a meaning later | ||
jnthn | code please, mister | ||
moritz | cpm is a fine one :-) | 21:11 | |
pmichaud | cost performance measure? | ||
masak | it sure got the bikeshed juice flowing :P | ||
21:11
bluescreen10 left
|
|||
masak | remember, Perl 6 has to grab as many TLAs as possible before they run out. they're a really scare resource. | 21:12 | |
jnthn | yim! ifa! | ||
pmichaud | yeah, we don't want to be ooa | ||
tadzik | btw, if there is no "one, main implementation", why is Rakudo `perl6`, not `rakudo`? | ||
pmichaud | tadzik: historical, mainly | ||
I'm not opposed to switching the executable to be 'rakudo'... just need to figure out when to do it | 21:13 | ||
I suspect as part of the next major distribution release series | |||
jnthn suspects people will want to write /usr/bin/perl6...but that could be an alias rather than the cannonical name. | |||
er, #!/... | |||
masak | it's fhr... :) | ||
those raisins sure like to panic... | |||
pmichaud | rakudo comes from a time when it was legitimate to say "Perl 6 doesn't exist", so it was called "perl6" to say "OH YES IT DOES!" | 21:14 | |
21:14
drbean left
|
|||
masak | now the only people saying Perl 6 doesn't doesn't exist are Python people with their heads up their language. | 21:15 | |
:P | |||
tadzik | or the angry Perl 5 people | ||
pmichaud | I sometimes like to kid: "How's that Python 3000 thingy working out for ya?" :-P | ||
21:16
drbean joined
|
|||
masak | tadzik: to Perl 5 people, Perl 6 exists but is an irrelevant trek or academic exercise. | 21:16 | |
BinGOs | it is cruel to mock the afflicted | ||
masak | just letting off occasional steam... :> | ||
tylercurtis shouldn't have fun project ideas while doing homework. | 21:17 | ||
pmichaud | shouldn't have homework interrupting fun project ideas :-) | ||
masak | och aye! | 21:19 | |
21:20
donri joined,
drbean left
21:22
drbean joined
21:26
drbean left
21:28
drbean joined
21:30
am0c joined
21:31
drbean left
21:33
donaldh joined,
drbean joined
21:34
donri left
21:38
drbean left
21:40
drbean joined
|
|||
masak | 'night, #perl6 | 21:40 | |
21:41
masak left
21:42
kaare__ left
21:45
drbean left
21:46
drbean joined
21:47
donri joined
21:51
drbean left
21:53
drbean joined
21:57
drbean left
21:58
mj41 left
21:59
drbean joined,
Moukeddar_ left
22:05
donaldh left,
drbean left,
drbean joined
22:09
pochi joined
22:10
Layla_91 joined,
PerlPilot left
22:11
PerlJam joined
22:13
drbean left
|
|||
PerlJam | tadzik: while on the plane earlier today, I was bored, so I wrote a little program that scrapes the github URLS from modules.perl.org and checks them for META.info and whether it has source-url. I don't know if you have something like that already or would like something like that or what. | 22:13 | |
tadzik: just shout if you want it though (or the results of running it :-) | |||
22:14
Layla_91 left,
drbean joined
22:15
kaare__ joined
22:17
bacek_ left
22:18
fridim_ joined
|
|||
PerlJam | tadzik: actually ... gist.github.com/947465 (it's perl 5 though) | 22:18 | |
22:19
drbean left
22:21
drbean joined
22:23
plobsing left
22:25
drbean left
22:27
drbean joined
22:30
plobsing joined
22:31
drbean left
22:32
kaare__ left,
drbean joined,
MayDaniel left
|
|||
jnthn | nqp: class Foo is Bar { } | 22:33 | |
p6eval | nqp: OUTPUT«sh: ./nqp: not found» | ||
jnthn | aww | ||
22:36
drbean left
22:37
f00li5h joined
22:38
ymasory left,
drbean joined
22:40
fridim_ left
22:43
drbean left
22:45
drbean joined
22:49
drbean left
22:51
drbean joined
22:55
drbean left
22:57
drbean joined
23:01
hanekomu left
23:02
drbean left
23:04
drbean joined
23:05
Sarten-X left
23:06
chitragupt left,
Sarten-X joined
23:08
bacek joined,
drbean left
23:10
drbean joined
23:11
ymasory joined
23:15
drbean left
23:17
drbean joined
23:18
dju joined
23:19
whiteknight joined
23:21
drbean left
23:23
drbean joined,
IllvilJa left
23:27
asdfssssssa left
23:28
drbean left
23:29
drbean joined
23:34
drbean left
23:35
drbean joined
23:37
icwiener_ left
23:38
Chillance left
23:40
drbean left
23:42
drbean joined,
rgrau left
23:47
drbean left
23:48
drbean joined,
justatheory left
23:50
bacek left
23:52
drbean left
23:54
Moukeddar joined,
drbean joined
23:55
ymasory left
23:59
drbean left,
SatoshiHayazaki joined,
Rotwang left
|