»ö« 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:01
jevin left,
molaf left
00:03
[Coke] left
00:04
[Coke] joined
00:06
jevin joined
00:09
[Coke] left
00:11
[Coke] joined
00:13
soh_cah_toa_ joined,
soh_cah_toa left
00:15
[Coke] left
00:16
eiro left,
rhr left,
Woodi left,
domm left,
literal left,
soh_cah_toa_ is now known as soh_cah_toa
00:20
eiro joined,
domm joined,
rhr joined,
Woodi joined
00:22
[Coke] joined
00:26
[Coke] left
00:28
[Coke] joined
00:32
[Coke] left
00:34
[Coke] joined
00:35
ccc joined
00:38
[Coke] left
00:40
[Coke] joined
00:42
donri left
00:45
[Coke] left
00:46
[Coke] joined
00:51
[Coke] left
00:53
[Coke] joined
00:56
thou joined
00:59
[Coke] left
01:00
[Coke] joined
01:01
woosley joined
01:05
[Coke] left
01:07
[Coke] joined
01:11
[Coke] left
01:13
[Coke] joined
01:14
araujo left
01:17
[Coke] left
01:19
[Coke] joined
01:22
mkramer1 joined
01:24
[Coke] left
01:25
mkramer2 joined
01:26
[Coke] joined,
tomaw is now known as 13WAAIF5K
01:28
mkramer1 left
01:30
[Coke] left
01:32
[Coke] joined
01:37
[Coke] left
01:38
[Coke] joined
01:40
wolfman2000 joined
01:41
whiteknight left
01:43
[Coke] left
01:45
[Coke] joined
01:47
literal joined
01:49
[Coke] left
01:51
[Coke] joined
01:57
[Coke] left
01:58
[Coke] joined
02:00
[particle] left
02:01
[particle] joined
02:02
abercrombie left
02:03
[Coke] left
02:05
[Coke] joined
02:10
[Coke] left,
abercrombie joined
02:11
[Coke] joined,
agentzh joined
02:16
[Coke] left
|
|||
lue | hm, nom silently fails when I try to use for 1..2**30 . I have a feeling it's cos the range is too big. [I know it's an issue with nom, because there's debugging text it should print every iteration of the loop] | 02:17 | |
02:18
[Coke] joined
02:23
[Coke] left
|
|||
colomon | nom: say 2**30 | 02:23 | |
p6eval | nom 53b1d8: OUTPUT«1073741824» | ||
colomon | nom: (1..2**30).map({ .say }) | 02:24 | |
p6eval | nom 53b1d8: ( no output ) | ||
colomon | nom: (1..2**3).map({ .say }) | ||
p6eval | nom 53b1d8: ( no output ) | ||
colomon | nom: for 1..2**3 { .say } | ||
p6eval | nom 53b1d8: OUTPUT«12345678» | ||
colomon | nom: for 1..2**30 { .say } | 02:25 | |
02:25
[Coke] joined
|
|||
p6eval | nom 53b1d8: OUTPUT«(timeout)» | 02:25 | |
lue | although 2**15 (halving the exponent) works just fine [unfortunately, project euler wants 2**30] | ||
colomon | you do realize that doing anything 2**30 times in rakudo will take at least days, right? | 02:26 | |
02:27
ccc left
|
|||
lue | yes :/ [I did the math while testing the code with more sane values] | 02:27 | |
I got it down to 1024 loops every 3-4 seconds, but that doesn't help much :) | 02:28 | ||
02:30
[Coke] left
|
|||
colomon | nom: say 2**20 | 02:30 | |
p6eval | nom 53b1d8: OUTPUT«1048576» | ||
colomon | nom: say 2**20 / 3600 | ||
p6eval | nom 53b1d8: OUTPUT«291.271111111111» | ||
colomon | nom: say 2**20 / 3600 / 24 | ||
p6eval | nom 53b1d8: OUTPUT«12.1362962962963» | ||
colomon | so that's like 40 days to finish at 1024 every 3-4 seconds... | 02:31 | |
02:31
[Coke] joined
|
|||
lue | I'd question PE's sanity on picking 2**30, but then I remember they don't use P6 :) | 02:32 | |
[ah well, off to try another problem...] | 02:33 | ||
colomon | what problem is it? | ||
lue | number 301 | 02:35 | |
lue fears the theoretical nim game with the smallest stack containing 2**30 stones | 02:36 | ||
02:36
[Coke] left
|
|||
colomon | lue: I'd be really surprised if they picked 2**30 AND a brute-force solution is the only way to tackle the problem... | 02:40 | |
lue | .oO(is just me, or do euler problems (at least the more recent ones) rely a bit too much on really large numbers?) |
02:51 | |
nom: say "bolton".reverse; say reverse("bolton"); | 03:12 | ||
p6eval | nom 53b1d8: OUTPUT«boltonbolton» | ||
abercrombie | nom: say "bolton".flip; say flip("bolton") | 03:14 | |
p6eval | nom 53b1d8: OUTPUT«notlobnotlob» | ||
abercrombie | Why there is a 'reverse' method for Str? | 03:19 | |
plobsing | better question, why doesn't it return ipswitch? | 03:20 | |
lue | nom: say "bolton".reverse.perl | ||
p6eval | nom 53b1d8: OUTPUT«("bolton",).list» | ||
plobsing | it is the *parrot* vm after all | ||
lue | reverse converts the Str to a one element array, apparently. [that's not very dwimmy] | 03:21 | |
03:21
Trashlord left
03:24
Su-Shee_ joined
|
|||
Tene | abercrombie: it's part of the general philosophy of making scalars behave like one-item lists. | 03:25 | |
jlaire | lue: many project euler problems have a obvious but slow algorithm, and a less obvious but fast algorithm | 03:26 | |
including 301 | |||
Tene | perl6: 1.map: *.say | ||
p6eval | niecza v9-5-gec4c616: OUTPUT«1» | ||
..rakudo a55346: ( no output ) | |||
..pugs: OUTPUT«Inf*** Cannot cast from VList [VBool True] to Pugs.AST.Types.VCode (VCode) at /tmp/aJKPeqTRmS line 1, column 1 - line 2, column 1» | |||
03:26
Su-Shee left
|
|||
Tene | perl6: "foo".map: *.say | 03:26 | |
p6eval | pugs: OUTPUT«Inf*** Cannot cast from VList [VBool True] to Pugs.AST.Types.VCode (VCode) at /tmp/7Z7XyDZ1hA line 1, column 1 - line 2, column 1» | 03:27 | |
..niecza v9-5-gec4c616: OUTPUT«foo» | |||
..rakudo a55346: ( no output ) | |||
Tene | Huh; I wonder why rakudo fails there | ||
nom: "foo".map: *.say | |||
p6eval | nom 53b1d8: OUTPUT«*» | ||
Tene | nom: "foo".map: { say $^i } | ||
p6eval | nom 53b1d8: ( no output ) | ||
abercrombie | The memory leak problem finally got fixed? | 03:32 | |
03:34
araujo joined
03:41
wolfman2000 left
04:01
birdwindupbird joined
|
|||
sorear | good * #perl6 | 04:02 | |
oopsie, forgot to report #phasers | 04:06 | ||
04:07
cognominal___ joined
|
|||
sorear | colomon: template<typename S> class MyRole<S> : public S { ... }; class MyClass : public MyRole<SuperClass> { ... } | 04:09 | |
colomon: not strictly roles, but described in the roles paper as one of the most similar prior systems | 04:10 | ||
04:10
cognominal_ left
|
|||
sorear | pmichaud: plobsing: IIUC (and currently implemented in Niecza), CATCH { die $! } has the effect of creating a second exception (from the die) while simultaneously rethrowing the original unhandled exception, and is an easy way to get a 2-simultaneous-exceptions scenario | 04:14 | |
plobsing: pmichaud: I'm not thrilled with this, or with the spec behavior of LEAVE { die } for that matter. | 04:15 | ||
plobsing | .oO( leave and let die ) |
04:24 | |
so what happens to the second pending exception if the first bubbles all the way to the top? does it get dropped? | 04:26 | ||
04:44
jedai left
|
|||
sorear | plobsing: the set of pending exceptions stays together as it bubbles up, and they are all printed before exit | 05:08 | |
TimToady: Consider my int $x,$y,$z; ...; $x = ($y + $z) div 2; | 05:09 | ||
TimToady: the user probably intends for the sum to be calculated as a fixnum. Is it possible to get these semantics in Perl 6? | |||
TimToady | int is just a storage type; temporary calculations are done in Int semantics, by current spec, methinks | 05:14 | |
course, you have an undeclared $y and $z there... :P | |||
sorear | yeah, current spec requires Int semantics iiuc too. | ||
just thinking it may be sub-optimal for DWIM | 05:15 | ||
I want to make it easy to transcribe C algorithms into Perl 6 | |||
also, we need to make +> :rotate work somehowe | 05:16 | ||
TimToady | :rotate(32) or some such maybe | 05:17 | |
05:18
jevin left
05:19
jevin joined
05:28
soh_cah_toa left,
SHODAN joined
|
|||
sorear | flussence: I still want a code mockup for warning tests. | 05:48 | |
05:49
xinming_ joined
|
|||
mberends | sorear: good morning, what should be fixed/added next in compiler.pod? | 05:50 | |
05:52
xinming left
05:53
cexsum left
|
|||
sorear | mberends: good morning. I haven't read your version yet, I'll do that now | 05:56 | |
05:59
donri joined,
donri left,
donri joined
|
|||
sorear | mberends: all good up to the last paragraph | 06:02 | |
mberends: rawscall is raw static (method) call; it allows calls into C# libraries from Perl 6, like earlier versions of Niecza (before I started taking backend portability more seriously) defined say using (rawscall System.Console.WriteLine (obj_getstr {@args.join('')})) | 06:03 | ||
mberends: the downcall mechanism is very hairy | 06:04 | ||
mberends | sorear: interesting. I thought last night about writing something about the bootstrapping implications of downcall | 06:05 | |
sorear | mberends: run/Niecza.exe is linked against run/Kernel.dll (from the bootstrap zipball), but code you compile with Niecza.exe should link against obj/Kernel.exe (compiled from lib/*.cs) | ||
obj/Kernel.dll | |||
the CLR allows you to load two incompatible assemblies with the same name, as long as you load them in different "application domains" | 06:06 | ||
mberends | sorear: thanks! I'll also delete the old content and continue writing up CLRBackend.cs | 06:07 | |
sorear | the C# DownCall method performs the necessary voodoo to create a second appdomain for running code, then invoke the back back end :) in CLRBackend.cs in the child appdomain | ||
mberends | back back end :-) | 06:08 | |
06:09
koban` joined,
koban` left
|
|||
mberends | anyone interested in Niecza could learn and help a lot by checking and editing the documentation - this is vital to engage more contributors | 06:12 | |
I'd like to "dumb it down" further, to lower the barriers to entry | 06:13 | ||
06:24
Su-Shee_ is now known as Su-Shee
06:26
wtw joined
06:33
birdwindupbird left,
birdwindupbird joined
06:35
wamba joined
|
|||
sorear | mberends: well I'm going to sleep now. I'd like to point out that the internal representation is a bit more nuanced than a "tree of Op", but that might be a needed pedagogical simplification, I dunno. | 06:44 | |
mberends | sorear: I agree, it's grossly oversimplified. I think for some things, the detailed explanation is positioned better out of sequence. | 06:46 | |
sorear: I'll try to figure out a friendly way to say more about AST's. I think there may be a need for a separate parser doc. | 06:48 | ||
With some more work, this content could become a nice conference talk :) | 06:50 | ||
06:56
ernanitecc joined
|
|||
moritz | o/ | 07:00 | |
07:00
ernanii joined
|
|||
mberends | good moritz morning | 07:00 | |
moritz | :-) | 07:01 | |
moritz wishes martin a good moritz too | |||
mberends | mor<Tab> runs so naturally through the fingers :) | 07:02 | |
07:02
ernanitecc left
|
|||
moritz | I wonder if that should tab-complete to "methods of rationality" | 07:04 | |
mberends | :-) | 07:05 | |
07:08
uasi joined
07:09
ernanitecc joined
07:10
ernanitecc left
07:11
masak joined
|
|||
masak | good moritz everyone. | 07:11 | |
07:12
ernanii left
|
|||
moritz | good mberends, masak | 07:12 | |
masak++ # backlogging before speaking up | |||
masak | phenny: tell ashleydev that yes, macros can be both AST-based and unhygienic. just defer all variable checks until macro-apply-time, and then have $x in the macro be the same as $x outside the macro. it's probably easier to implement than hygiene. | 07:14 | |
phenny | masak: I'll pass that on when ashleydev is around. | ||
masak | might even be a stepping-stone to real, hygienic macros. | 07:15 | |
mberends | good moritz masak | 07:16 | |
07:19
agentzh left
|
|||
mberends | masak: would you consider implementing your macro work on Niecza as well as Rakudo? Their AST's should be broadly similar. It would be a big win for portability. | 07:20 | |
masak | mberends: I would, if it seemed easy. it doesn't seem easy. | ||
mberends: Niecza still cheats with BEGIN time. | 07:21 | ||
today's autopun sighting: twitter.com/robinannsmith/status/1...1020806144 | 07:24 | ||
mberends | lol | 07:25 | |
moritz | and the link I clicked after the autopun was creatingev.com/post/9610965432/i-ju...eta-copied | 07:27 | |
07:27
daxim joined
|
|||
moritz | and in the corresponding HN thread: "In a country with a billion people, even if you're one in a million, there's still 1000 people just like you." | 07:28 | |
07:29
dark_x joined,
mj41 joined
|
|||
masak | that's not just literally true, but probably a good explanation for a lot of phenomena in China. | 07:29 | |
schools, careers, family planning... | 07:30 | ||
moritz | while working on my blog thingy, I noticed that I didn't like the traditional error messages | 07:32 | |
daxim | 6 million is a small city, and nothing ever interesting happens | ||
moritz | "Cannot open file 'foo/bar.json' for writing: No such file or directory" | ||
it doesn't tell me *why* the program is trying to open that file for writing | |||
07:32
agentzh joined
|
|||
masak | good point. | 07:33 | |
to find out why, you generally go to the file and line. | |||
daxim | ' " quotes in error messages suck, if you want to grep in logs, they usually need shell quoting | ||
mberends | Given our genetic diversity, we are all probably one in a million when you fuzz the iris scans and fingerprints. Our uniqueness comes from our software and memory. | 07:34 | |
moritz | daxim: what would you use? | ||
daxim: also when I grep error messages, I usually search for either the message or the file name, not both | 07:35 | ||
is that a real concern? | |||
daxim | typographic correct quotes. that was actually an improvement when gnu tools' english po started using that | 07:36 | |
moritz | daxim: typographic correct quotes are very language dependent, and usually not in ASCII | 07:37 | |
daxim | it's a concern, yes, not a big one, but one of the 1000 papercuts | ||
screw ascii | |||
moritz | I'd rather not screw my error messages | ||
I'm fine with non-ASCII for basically everything else | |||
but error messages are sufficiently fundamental that I want them to work even in UTF-8-insane environments | 07:38 | ||
YMMV of course | 07:39 | ||
daxim | that argument isn't convincing. look who is inconvenienced and who is not, you'd choose the wrong tradeoff | ||
moritz | "that argument isn't convincing" isn't a convincing argument. | ||
07:39
im2ee joined
|
|||
daxim | fine, I'll draw a matrix. | 07:40 | |
masak | moritz: good luck convincing someone of that! | ||
moritz | masak: :-) | ||
07:42
ccc_ joined
|
|||
masak | moritz: but back to good error messages with the "why" in them. what would one look like? | 07:43 | |
moritz | "Cannot open '$filename' for storing a blog post in it: $!" (maybe) | 07:44 | |
masak | "Wanted to open '$filename' to store a blog post, but got this: $!", maybe? | 07:45 | |
moritz | maybe | ||
daxim | style who is inconvenienced | ||
moritz 'foo.json' people grepping using the phrase, cannot just paste, need shell quoting | |||
daxim ‛foo.json’ people with insane unicode setup, will see âfoo.jsonâ or �foo.json� | |||
second group is in the minority, why pander to them? that's not good design. | 07:46 | ||
moritz | daxim: you forgot the people who want to copy&paste the file name (which might contain whitespace) along with the quotes for using them in the shell | ||
moritz -> afk | 07:47 | ||
daxim | surrounding something at the outer borders with quotes is easier than positioning the cursor accurately and backwhacking | ||
mberends sneaks the babby meme into a circularity discussion in the forthcoming niecza/docs/compiler.pod | 07:53 | ||
daxim | hardware.slashdot.org/comments.pl?s...d=37260704 # language war, this one arguing for smaller languages because they're easy to implement | 07:57 | |
mberends applies the troll filter to that. Slashdot used to be fun, but is difficult to enjoy nowadays. | 08:01 | ||
masak | daxim: Perl 6 is a small language with a big setting. | 08:03 | |
flussence | sorear: I did those, see irclog.perlgeek.de/perl6/2011-08-29#i_4343345 | 08:05 | |
mberends thinks Perl 6 is a big language with an even bigger setting </troll> ;) | 08:28 | ||
masak | indeed, it doesn't have 7 primitives and almost no syntax, as does Lisp. | 08:35 | |
08:38
wk joined
|
|||
jnthn | morning, #perl6 | 08:39 | |
mberends | good moritz jnthn # tabs again :) | 08:40 | |
masak | good mberends jnthn | 08:42 | |
jnthn | oh heh, it's not just me that sometimes tries to tab complete morning... :) | ||
Though I always managed to catch it in time before hitting enter ;) | |||
mberends | we need smarter irc clients | ||
jnthn | Yeah, it should just know what I want to submarine. | 08:43 | |
wait, what... | |||
:) | |||
masak | haha, you pushed tab and it just gully completely wrench! | 08:44 | |
mberends | perhaps jnthn's computer became full of eels during his break | 08:45 | |
08:47
drbean joined
|
|||
mls | morning perl6! | 08:48 | |
jnthn: nqp's 6model/multi_dispatch.c:nqp_multi_dispatch() leaks mem | 08:49 | ||
because the sort_candidates result is not cached | 08:50 | ||
masak | good mls, morning! | ||
mls | masak, mberends, morning, good! | ||
mberends | eh :) | 08:51 | |
jnthn | mls: Yeah, I still didn't get around to adding the caching there. It'll almost certainly perform awfully without it. In reality, I don't think anything is really using multi-dispatch in nqp yet, or barely. But it certainly needs sorting out. | 08:52 | |
mls | compiling the setting calls it a couple of hundred times | 08:53 | |
nothing really worrysome, though | |||
jnthn | Yeah, that's what I mean. It's not on a hot path where we call it tens of thousands of time, like other things we do. | ||
Anyway, if you want to add the caching there, that'd be very welcome. It's just an un-todone todo :) | 08:54 | ||
mls | by coping the code from nom? | 08:55 | |
jnthn | It's not quite that easy, I fear. | ||
Since we store/handle multis a bit differently in NQP due to lack of code objects (we use raw Parrot subs for stuff at the moment) | |||
mls | aaw. | ||
jnthn | But should be do-able. | 08:56 | |
Also, the thing nom does isn't a true "multi-dispatch cache" (more) | |||
It just caches the sorted candidate list. It's possible to build something smarter. | |||
github.com/jnthn/6model/blob/maste...chCache.cs # a C# sketch (working) of something smarter that I'd like to port at some point | |||
08:57
dakkar joined
|
|||
mls | speaking of speed improvmends: I ran callgrind on the setting compilation, and about 20% of the time is spent in Parrot_SixModelObject_find_method | 08:59 | |
jnthn | Whoa. | 09:00 | |
That's good to know. | |||
mls | (the includes the ->ext_call->runops->... subcalls) | ||
jnthn is a bit surprised...but then, that's the point of profiling instead of guessing :) | |||
Yeah, it should only do that when we call on something that's not yet been composed. | |||
09:00
Mowah_ joined
|
|||
jnthn hadn't expected so many calls of that nature | 09:01 | ||
mls | it seems like many method caches are not published | 09:02 | |
flussence | (if anyone else wants to poke fun at what I wrote up there, go ahead :) | ||
mls | (btw, should it also cache negative hits? i.e., is the cache authoritative? | 09:03 | |
jnthn | Well, we publish at composition time, so yeah, anything uncomposed will have no method cache and fall back into find_method | 09:04 | |
mls | if yes, you might want to add if (VTABLE_exists_keyed_str(interp, st->method_cache, name)) return PMCNULL; | ||
09:04
SHODAN left
|
|||
cognominal___ | hi. what is the meaning of the second parameter in an action? | 09:04 | |
mls | cause, the VTABLE_get_pmc_keyed_str doesn't distinguish between entry not found and entry is PMCNULL | 09:05 | |
jnthn | I didn't yet treat it as authoritative, though that's the goal. Well, kinda. Even if it's "authoritative" in Perl 6, it's not always going to mean we don't need to look harder. Many classes have fallbacks, for example. | ||
masak | cognominal___: it's the key. | ||
mls | ok, so forget about the VTABLE_exists_keyed_str test... ;) | 09:06 | |
cognominal___ | yea, I see its value is often 'open'. I forgot what it means. | ||
jnthn | mls: Yeah. It's going to need to be a little smarter than that. | ||
masak | it could be anything we pass in from the grammar. | ||
cognominal___ | thx, now I see. that's the {*} hack. | 09:07 | |
masak | right. | 09:08 | |
did that ever get spec'd? | |||
jnthn | I...seem to recall it being destined to go away. | 09:09 | |
09:09
pernatiy joined
|
|||
cognominal___ | masak: in glossary.pod | 09:09 | |
09:10
orafu left,
orafu joined,
thou left
|
|||
cognominal___ | As a follower to the discussion about implementing grammars for languages like javascript or coffeescript. I think that rules <ws-eopr> and <ws-eterm> to be used (when definid) in place of <ws> by EXPR would be nice. <ws-eopr> would be called when expecting an operator and <ws-eterm> would be called when expecting a term. | 09:14 | |
09:20
wamba left
09:25
daniel-s left,
daniel-s joined
09:30
dark_x left
09:42
envi left
10:13
MayDaniel joined
|
|||
dalek | ecza: 0b103d1 | (Martin Berends)++ | docs/compiler.pod: [docs/compiler.pod] save work in progress |
10:17 | |
10:18
im2ee left,
wamba joined
10:22
im2ee joined
10:38
Trashlord joined
10:48
MayDaniel left
10:55
woosley left
|
|||
tadzik | good moritz #perl6 | 11:01 | |
11:02
Mowah_ left
|
|||
colomon | \o | 11:03 | |
mberends | o/ | 11:10 | |
tadzik | I tend to treat irc client as vim sometimes, and expect it to autocomplete everything based on the last occurence of a certain word. I probably need a vim-based irc client :) | 11:11 | |
moritz | tadzik: or a plugin | ||
tadzik | moritz: for vim, or for weechat? | 11:12 | |
moritz | tadzik: irssi is scriptable in perl 5, for example | ||
tadzik | yeah, I know. weechat is a bit acmeist in this case :) | ||
pmichaud | good morning, #perl6 | 11:13 | |
tadzik | good morning pmichaud | ||
jnthn | o/ pmichaud | 11:14 | |
moritz | \o | ||
tadzik | so the release hits this weekend at any cost? | 11:22 | |
pmichaud | I don't know.... while out walking and thinking about it last night I'm not sure I'm comfortable with an august release with what we have. | 11:25 | |
I mean, what .pm group do we "punish" by naming this release after them? ;-) | 11:26 | ||
masak | pmichaud! \o/ | ||
pmichaud | anyway, I'm working on the branch renames now in a practice repo. | ||
masak | Moon.pm | ||
pmichaud | I thought about Atlantis.pm | ||
masak | "This release s(t)inks!" | ||
pmichaud | if we're in agreement that the release really isn't up to our standards, perhaps we shouldn't release (more) | 11:27 | |
we can also put out a 2011.08 release in early september. I think there's precedent for this -- iirc, one of ubuntu's releases was delayed for a couple of months but still kept the same release number (more) | 11:28 | ||
I'm not saying we'll delay by a couple of months, just that it doesn't _have_ to occur today. | |||
masak | if we delay, I think we should announce that just as we announce releases. | ||
might give people something to look forward to. | 11:29 | ||
pmichaud | yes, there would be an announcement | ||
"give people something to look forward to" isn't a good idea, imo | |||
historically, Perl 6 has done too much of that already. | |||
we can talk about what we have and where we stand, but shouldn't promise too much about what will show up | 11:30 | ||
afk for a bit-- kid wakeups | |||
masak | oh, true. | 11:31 | |
I really meant "not allow people to walk away because nothing happens" | |||
masak throws a mug | |||
the reason for the delay is, at bottom, a good thing. I think that should be explained. | 11:33 | ||
people have expended lots of energy, and will expend lots more, to build a better Rakudo. | |||
the announcement-instead-of-a-release-announcement should reflect that, even if it doesn't promise things. | 11:34 | ||
pmichaud | anyway, yes, my intention was to make an announcement for whatever we decide to do, not just to let the situation fall into a black hole | 11:36 | |
11:36
Su-Shee left,
Su-Shee joined
|
|||
masak | splendid. | 11:38 | |
12:10
mtk left,
mtk joined
12:13
13WAAIF5K is now known as tomaw
12:14
isBEKaml joined,
wk left
12:16
wk joined
|
|||
felher | masak: is there a way to look over your shoulder while your work on macros evolves? i.e. is there a nom-branch or something like that? | 12:17 | |
isBEKaml | masak: macros! is that like aspects in Java? or macro defs in C ? :) | ||
arnsholt | No, like macros in Lisp | 12:18 | |
Which are super-mega-awesome =D | |||
isBEKaml | hmm, I don't know have any lispiness on me. :( | ||
all I know (from what I read), they sound a lot like pointcuts and concerns in AOP. | 12:19 | ||
masak | felher: I have a local branch. | 12:20 | |
felher: at some point, I'll push it, and from then on I'll try to push often. | |||
I'll also try and blog regularly. | |||
isBEKaml | or with a strange consistency. =) | ||
masak | isBEKaml: there are operational similarities between pointcuts and macros, yes. | ||
isBEKaml: macros don't have the action-at-a-distance of aspects. | 12:21 | ||
pmichaud | oh, I didn't get a chance to review masak++'s proposal last night :(. Will do that momentarily. (masak: apologies) | ||
felher | masak: thnx. sounds good to me :) | ||
masak | pmichaud: no worries. | ||
pmichaud | I don't want to be a blocker there :) | ||
tadzik | proposal? | 12:22 | |
isBEKaml | masak: Well, I have seen the same excitement that arnsholt++ exhibited about macros, but never got around to seeing them firsthand. | ||
masak: Guess I'll get to see that in p6 and feel the excitement. :) | 12:23 | ||
arnsholt | In somewhat technical terms, macros let you create your own syntactical abstractions | 12:24 | |
In other words, you can extend the language in directions you ordinarily can't | |||
isBEKaml | arnsholt: a concrete example? | ||
tadzik | macro statement_prefix:<###> {} | ||
to implement Smart Comments | 12:25 | ||
pmichaud | yeah, I still doubt that one (based on the current grammar) | ||
masak | me too. | ||
pmichaud | it'd have to be comment:<###> something, at best. | ||
isBEKaml | tadzik: now, what are smart comments? Sorry, I'm just confused. | ||
pmichaud | even then it might not be sufficient without some more grammar tweaks | ||
masak | isBEKaml: !cpan Smart::Comments | ||
ooh, first time I use DuckDuckGo syntax on the channel :P | 12:26 | ||
tadzik has that as 'cpan smart-comments' in the browser itself | |||
isBEKaml | masak: there's a module for that? Damn, cpan's got everything (only fault, it doesn't have a thesaurus!) | ||
pmichaud | "Smart comments" are a module created by TheDamian -- it allows debugging and other useful features to be placed in code; sometimes they're normal comments, sometimes they do useful things (depending on the 'use' statement) | ||
sbp | duck ♡ | ||
isBEKaml | dukgo? you too? :D | 12:27 | |
masak | isBEKaml: yes. in fact, the '!' syntax was what settled it for me. so nice. | ||
isBEKaml: you should try the new metacpan :) | |||
isBEKaml | masak: yeah, the bang syntax is pretty useful. I use to search Stackoverflow! | 12:28 | |
masak | I do !w a lot. | ||
and !dictionary | |||
tadzik | I do !g a lot, to be honest ;) | ||
huf | i like that google disregards it so i can do !things no matter which search engine i'm using atm :) | 12:29 | |
isBEKaml | Oh, smart comments. Like masak++ said, they do sound a lot similar to AOP in java. | ||
masak | I didn't say that :P | ||
isBEKaml | tadzik: that would just defeat dukgo now, won't it? ;) | ||
masak: well, not a lot! :P | |||
tadzik | isBEKaml: not really. It's just that when ddg doesn't produce good enough results, I can just add !g to the query to switch to google | 12:30 | |
12:30
JimmyZ joined
|
|||
masak | macros look like subs or operators, but are "called" at parse-time. | 12:30 | |
isBEKaml | tadzik: or allow it to recommend google. ;) | ||
masak | in terms of the DLX code I'm writing, I could write the algorithm using ordinary hashes, but have them look like objects with methods using macros. | 12:31 | |
which would give me pretty code *and* no overhead from objects. | |||
pmichaud | I've just cleaned up (removed) some of the outdated branches in the rakudo repo on github; here's a list of the ones that remain: pmichaud.com/sandbox/branches.txt | 12:32 | |
masak | put differently, macros can be a convenient carpet under which to sweep some of a language's syntactical deficiencies. | 12:33 | |
pmichaud | if anyone feels strongly about keeping or removing anything I've listed there, let me know soon. Or just remove the branch yourself if you're the one nominally in charge of the branch. | ||
isBEKaml | hmm, one thing that worked quite well with macros is that they were implemented only in dynamic programming languages. (Lisp, for eg). I'm not quite sure if macros can be fit in at compile time (while it's at runtime in the case of java) | ||
masak | isBEKaml: er. | 12:34 | |
isBEKaml: macros *do* execute at compile time. | |||
isBEKaml | masak: I was referring to dynamic languages that have macros (executed at compile time, ofcourse) | 12:35 | |
masak | isBEKaml: anyway, if you count C macros, then macros definitely mesh with static languages. | 12:36 | |
flussence | .oO( I can imagine implementing PHP with maybe a few dozen macros... ) |
||
isBEKaml | flussence: tell that to a Mr.Lerdorf! :P | 12:37 | |
tadzik | podparser can be buried, I'll do that | ||
gsoc-podparser as well, it's merge | |||
d | |||
I don't really remember what str-indent is about, probably some hard to track nombug, will take a look in a while | 12:38 | ||
flussence | I think that's master Str.indent... | ||
isBEKaml | masak: Either I'm confused or I haven't seen the full power of macros in C. From whatever little I got out of reading them, C macros don't extend the language in ways that "sweep" their deficiencies under the carpet. | ||
masak: Granted, this won't be the first time I'm confused.. | 12:39 | ||
tadzik | flussence: it's created by me, so I'm not so sure :) | ||
flussence | oh | ||
tadzik | otoh, it's from april :/ | ||
12:40
bluescreen10 joined
|
|||
masak | isBEKaml: granted, they do it quite clumsily in C, but they still do just that. | 12:40 | |
flussence | (I wonder if enough of nom works to port that function to it now...) | ||
isBEKaml | masak: Okay, I'll wait and watch how this evolves in p6. :) | 12:41 | |
tadzik | flussence: nah, that branch is definitely master-based | 12:42 | |
jnthn | pmichaud: nom-install can go now that nom is installable :)] | 12:44 | |
tadzik | and seems that it has been merged already | ||
removing | |||
meh, I should start doing my physics :/ | 12:47 | ||
12:47
JimmyZ_ joined
|
|||
tadzik | waking up on 1 PM doesn't help motivation at all | 12:48 | |
12:48
JimmyZ left,
JimmyZ_ is now known as JimmyZ
|
|||
pmichaud | jnthn: deleted nom-install branch | 12:52 | |
moritz | fwiw, nom-exceptions is still important for me | 12:53 | |
(I'll rename it myself if necessary) | |||
12:53
Holy_Cow joined
|
|||
pmichaud | updated branches.txt to KEEP nom-exceptions | 12:54 | |
isBEKaml | moritz,pmichaud: Aren't you guys running on master? It's nom based now? | ||
pmichaud | isBEKaml: not yet. I'm about to make the switch (like, in the next hour or so) | 12:55 | |
tadzik | pmichaud: str-indent has been removed, as is podparser and gsoc-podparser | ||
pmichaud | I've already done a test switch at github.com/pmichaud/rakudo (a fork of rakudo/rakudo) and it seems to work just fine. | ||
tadzik++ tadzik++ tadzik++ # one karma per branch delete | |||
tadzik | :) | ||
taking a look at nom-buf now | 12:56 | ||
isBEKaml | pmichaud: Ohh, so this will be the first time there will be a nom release? :) | ||
moritz | it seems that github doesn't easily allow renaming of master branch | ||
pmichaud | no, it's quite easy. | ||
moritz | one has to change the default branch on the web interface fist | ||
pmichaud | you just have to set the .... right | ||
moritz | *first | ||
isBEKaml | s:2nd/will be/is/ | ||
12:56
Chillance joined
|
|||
pmichaud | isBEKaml: the next release, whenever it ends up being, will be nom-based. | 12:56 | |
there's not a lot of point to making another ng-based release, other than perhaps to keep things on schedule. | 12:57 | ||
isBEKaml | pmichaud: ISTR there should be a release now (couple weeks after parrot release)? | 12:58 | |
pmichaud | isBEKaml: we had to postpone it... the nom branch really isn't release-quality yet | ||
isBEKaml | are we skipping it for a nom promise next time? (sorry for the pun) | ||
JimmyZ | Will operators be marco-ish? | ||
isBEKaml | JimmyZ: you can see operators all over the place! (I feel too punny) | 12:59 | |
Marco polo. | |||
pmichaud | we can make a release now if we want... and as of yesterday I was thinking we should do that... but after working on it a bit yesterday I decided that an incomplete and regression-full release may be harder to explain and deal with (for our users) than a simple postponement. | ||
JimmyZ | s/marco/macro/ | ||
pmichaud | JimmyZ: many operators will be inlinable, which makes them have some of the characteristics of macros. | 13:00 | |
masak | JimmyZ: TimToady says he considers short-circuiting operators such as infix:<&&> to be macros. | 13:01 | |
JimmyZ: that would explain why they short-circuit, i.e. don't always evaluate their rhs. | |||
isBEKaml | pmichaud: I see. Thanks for the clarification. Even as I have been away from the channel, I was following p6 and parrot news. Thanks again. | 13:02 | |
pmichaud | oh! github already has a version of my list available! github.com/rakudo/rakudo/branches | ||
JimmyZ | something like sub *fix:<XXXX>() is inlinable { } ? | ||
jnthn | JimmyZ: No | ||
pmichaud | JimmyZ: yes, but you don't need the "is inlinable" part -- the optimizer can figure it out on its own. | 13:03 | |
jnthn | JimmyZ: It's up to the optimizer. | ||
Also, it isn't just operators, any suitable sub could be inlined. | |||
isBEKaml | masak: I don't know if p6 subs/methods have fixity like operators. |
|