»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by lichtkind on 5 March 2010. |
|||
00:01
lichtkind left
|
|||
lue | o hi i'm back from p6l :) | 00:02 | |
00:03
nihiliad left
00:04
nihiliad joined
00:07
hercynium left
00:10
Kyril left
|
|||
pugssvn | r30439 | jnthn++ | [t/spec] Fudge some tests that intermitently seem to fail for Rakudo at the moment in S14-role/anonymous.t. | 00:17 | |
00:24
madalu joined
00:31
meppl left
00:35
Spreadsheet_ left
|
|||
dalek | kudo: 4a4fdca | jonathan++ | src/ (5 files): Various fixes that gets role mix-ins working better. The main problem we faced is that we weren't doing the initialization of the new slots properly, but there were other bits too, including the ability to hold a role in a variable being broken (also now fixed). Includes some refactors that make things a bit neater, IMO. |
00:36 | |
kudo: b367489 | jonathan++ | t/spectest.data: Turn on S14-roles/anonymous.t, a test we never have been able to attempt before. |
|||
pmichaud | good evening, #perl6 | ||
jnthn | oh gosh, if it's evening in your timezone, what is it here... :-) | 00:37 | |
pmichaud | I'm guessing 01:37 :-) | ||
jnthn | 02:37 akshually :-) | ||
pmichaud updates his internal timezone map. | |||
00:38
nihiliad left
|
|||
lue | pmichaud: O HAI! | 00:39 | |
.oO(a bit too excited eh?) |
|||
pmichaud | lue: NO, NOT TOO EXCITED AT ALL! GLAD TO SEE YOU! | ||
:-) | |||
sorear | must...resist...replying...to...lue...on...p6l | 00:41 | |
pmichaud! | |||
Hi! | |||
lue | interestingly enough, I just sent thoughts on Temporal to p6l | ||
sorear | oh I give up. | ||
lue | I said that regarding jnthn and his timezones, not about what you said sorear :) | 00:42 | |
sorear | pmichaud: Hi. Rumor has it you're in charge of lvalue/rvalue issues in Parrot? | ||
pmichaud | sorear: while I know a lot about them, I don't think I'm "in charge of" them. | ||
sorear | it feels like nobody is dealing with the issues | 00:43 | |
pmichaud | I've been asking about them for... oh, 2+ years now | ||
sorear | which is a shame, it seems like a major liability for interop efforts | ||
I thought I could at least get a tasklist from you | |||
pmichaud | I think that dealing with the issues requires a major rearchitecture of significant portions of Parrot | ||
sorear | do you think this is doable? | 00:44 | |
(ever, not for R*) | |||
pmichaud | ever, certainly. | ||
I'm not sure how to accomplish it within Parrot's current deprecation constraints, though. | 00:45 | ||
i.e., it really needs a significant revamp of several of Parrot's core PMC types | |||
and the opcode set | |||
jnthn | *sigh* This darn .^methods bug would be a hell of a lot easier if Parrot gave me a line number in the backtrace that was actually inside the .sub where the error occurs. | ||
lue | lemme guess, it gives you the line the .sub is on, right? | 00:46 | |
sorear | lue: that would be great | ||
lue | s/is on/starts/ | ||
jnthn | lue: Worse, it seems to give me a line in a completely *different* sub, which is...erm...epicly confusing. | ||
As is this bug generally. | 00:47 | ||
lue | sorear: what would be great? Is it about my p6l message? (In which case I agree :) ) | ||
sorear | lue: Parrot giving line numbers inside the sub | ||
lue | ah | ||
sorear | as for p6l, I think we should complicate Instants a bit | 00:48 | |
maybe not for core though | |||
pmichaud | were chromatic++'s line number fixes post-2.3.0? | ||
lue | jnthn: maybe some deep magic calls that other sub to breathe life into yours ? | ||
jnthn | pmichaud: Yeah, but I thought they were annotations ones rather than PIR ones. | ||
pmichaud: I can hope though. :-) | |||
I do optimism occasionally. | 00:49 | ||
pmichaud | hmm. somehow I was under the impression they were PIR ones. | ||
jnthn | Maybe so. | ||
pmichaud | I wouldn't expect c to be working on annotation ones. | ||
jnthn | Yeah, well, I worked on them once. They worked. Then they got broke. :-/ | ||
I woulda blamed myself for not writing enough tests, apart from I found the ones I had wrote didn't actually still pass anyway. | 00:50 | ||
pmichaud | :-D | ||
00:51
yinyin joined
|
|||
lue | must..resist....boredom....gak! (afk) | 00:51 | |
CokeBot9000 | (parrot's deprecation contraints) - let the parrot team know what you think you need, and we can figure out a plan that fits in the constraints of the dep. policy. | 00:52 | |
bkeeler | Ahoy there folks! | 00:53 | |
jnthn | ahoj, bkeeler...ako sa mas? :-) | 00:54 | |
bkeeler | Why yes, I'd love a beer, thanks | ||
jnthn | ...that was actually "how are you". ;-) | ||
pmichaud | reminds me of WYBMABIITY | 00:55 | |
(sign posted in a pizza parlor I once frequented) | |||
jnthn misses pizza+beer | 00:56 | ||
In Slovakia, they were pretty lax on who could serve alcohol, so a typical small pizza joint easily could. | |||
bkeeler | In all the best languages "how are you", and "can I buy you a pint" are the same | ||
jnthn | Here not so, you gotta to go to a restaurant really if you want beer with your pizza, it seems. | 00:57 | |
bkeeler | Portland seems to have no problem with beer+pizza it seems | ||
jnthn | bkeeler: Well, "can I buy you a pint" works just great in English as a greeting too, in my book. :-) | ||
Portland, as I remember it, has no problems with beer in general. :-) | |||
bkeeler | Indeed, good beer to be had here | 00:58 | |
You should consider it when you're done with Sweden ;) | |||
pmichaud | bkeeler: ready to work on interpolation? | 01:01 | |
bkeeler | Yep, sure am | ||
\o/ | |||
pmichaud | okay, first comment is that your current patch is excellent; I just prefer things in a different location | ||
bkeeler | Heh, thanks | ||
pmichaud | so, if I suggest something that you've already done (and I missed), apologies in advance. | 01:02 | |
bkeeler | I certainly considered putting it in nqp, but the prime motivator there was the need to call into the rakudo compiler | ||
pmichaud | we're going to abstract that out | ||
bkeeler | OK | ||
01:03
yahooooo joined
|
|||
pmichaud | the general case is that we have some code we want executed (represented as a PAST tree), and in some cases we want to do something with the results of that code | 01:03 | |
01:03
lestrrat is now known as lest_away
|
|||
pmichaud | NQP already has a pasttype for this, it's PAST::Regex with :pasttype<pastnode> | 01:04 | |
01:04
wknight8111 left
|
|||
bkeeler | Right; my first take tried to use that | 01:04 | |
pmichaud | currently that code handles two cases | ||
er, three cases | |||
it handles the cases of { ... }, <?{...}>, and <!{...}> | 01:05 | ||
I want it to also handle the cases of <{...}> as well as variable interpolation | |||
(which is really expression interpoluation) | 01:06 | ||
*interpolation | |||
currently, { ... } is a PAST::Node with no :subtype | |||
<?{...}> is a PAST::Node with :subtype<zerowidth> | 01:07 | ||
<!{...}> is a PAST::Node with :subtype<zerowidth> and :negate | |||
bkeeler | I note that there's also a separate 'zerowidth' flag that's not used | ||
pmichaud | oh, the code for this is src/PAST/Compiler-Regex, line 745 | ||
bkeeler | Yep, I'm there | ||
pmichaud | checking. | ||
where do you see :zerowidth ? | 01:08 | ||
bkeeler | One thing I looked at was switching over to using the zerowidth flag, freeing 'subtype' up for something else | ||
pmichaud | a few other constructs in nqp expect to see zerowidth as the :subtype, though | 01:09 | |
bkeeler | Yep, they'd need switching | ||
pmichaud | and it would require switching through nqp, because zerowidth gets used in a lot of places | ||
*throughout | |||
anyway, I'm pretty comfortable with subtype as it is, I think. | |||
bkeeler | It seems somewhat orthogonal to the things that subtype is used for, is what I was thinking | 01:10 | |
Or, more to the point, subtype is used for lots of different unrelated things | |||
pmichaud | well, in many/most cases, zerowidth actually overrides the meaning of subtype, which is why I used it | ||
for example, the meaning of <{...}> is in fact quite different from the meaning of <?{...}>, yet STD parses the latter as a modifier of the first | |||
01:11
cdarroch left
|
|||
bkeeler | ah yes, Regex.pir defines a zerowidth attribute and accessors for it | 01:11 | |
pmichaud | (unless the spec has changed again since I last looked, I should dbl-check real quick) | ||
bkeeler | Yes, true | ||
pmichaud | Oh, I think the Regex.pir part is a fossil. I should review that and check. | ||
01:12
madalu left
|
|||
pmichaud | that looks like it's a fossil -- it's defined in Regex.pir but doesn't seem to be used anywhere. Probably because I decided I liked 'zerowidth' better as a subtype (it was a separate attribute at one point) | 01:12 | |
bkeeler | Trying to remember the problems I encountered using pastnode in my first cut... | 01:13 | |
pmichaud | okay, so here's what I'd like for pastnode | ||
the existing definitions remain | |||
I'd like to add a new :subtype of 'match' | |||
or perhaps 'regex', or some other appropriate name. I'm not sure what it should be. | 01:14 | ||
But :subtype<match> should... | |||
1. Evaluate the PAST subtrue | |||
*subtree | |||
2. Look at the result of the subtree; if the result is a Parrot sub, then invoke it like a non-capturing subrule match | 01:15 | ||
If the result isn't a Parrot sub, then stringify the result and treat it like a literal match | |||
3. ...Profit | |||
01:16
meppl joined
|
|||
bkeeler | That pretty much was my first take | 01:17 | |
And I'm trying to remember what the problems were... | |||
pmichaud | I think all of the remaining items fall out of that implementation | ||
bkeeler | One problem I remember was when you have the PAST::Regex nodes somewhere under the PAST node supplied to a PAST::Regex<pastnode> | 01:19 | |
All hell breaks loose | |||
Specifically all the boilerplate that goes at the start of every regex pir sub gets emitted again | 01:21 | ||
pmichaud | well, it should. | 01:22 | |
it's technically a separate match. | |||
(and those regexes ought to be treated as separate subs) | 01:24 | ||
bkeeler | I think my reaction to that was to wrap it in a PAST:Block so it gets emitted as a new pir sub. I think there were problems with that too | ||
Possibly I didn't try hard enough | |||
pmichaud | ah | ||
you're talking about the case of something like <$a>, perhaps? | |||
where $a needs to be treated like a regex? | |||
bkeeler | That's part of the puzzle, yes | ||
pmichaud | s/treated/compiled | 01:25 | |
that shouldn't happen directly in the :pasttype<pastnode> node. | |||
bkeeler | Which means I'd need to construct a PAST tree which does the compilation | ||
pmichaud | no. | ||
what should happen with <$a> is that we generate PAST code that does the equivalent of make_regex($a) | |||
that then returns a Sub that is the compilation of $a | |||
which the :pasttype<pastnode> then executes as a submatch | 01:26 | ||
which is what we wanted :-) | |||
bkeeler | I get strong deja-vu here, as like I said my first attempt was along these lines. Trying to see if I see have that code around somewhere... | 01:28 | |
pmichaud | one question I did have -- what does the spec expect with something like... my $a = [<a b c d>]; say 'a' ~~ /$a/; # ??? | 01:29 | |
bkeeler | It's not clear. My patch currently would interpolate that as a|b|c|d | 01:30 | |
pmichaud | right. | ||
bkeeler | It treats any Iterable that it gets back from the interpolated bit as an alternation | 01:31 | |
which seems reasonable to me | |||
pmichaud | so, in that case we want the :subtype<match> case to also handle alternations | ||
bkeeler | Yep. Further trickyness | ||
pmichaud | but I'm thinking it should be very similar code to what you already did in the patch, yes? | 01:32 | |
bkeeler | Possibly | ||
But each of the elements of the Iterable has to be compiled | |||
pmichaud | I'd expect make_regex() to do that. | ||
01:33
alester joined
|
|||
bkeeler | Where is make_regex? | 01:33 | |
pmichaud | it'd be supplied by the HLL | ||
pugssvn | r30440 | jnthn++ | Tweak so that S02-magicals/pid.t can work on Win32 also. | ||
pmichaud | in other words, when we have something like <$a> | ||
we end up emitting PAST that looks like | 01:34 | ||
bkeeler | As a method of the subclassed Cursor? | ||
pmichaud | it could be a method; I was thinking it'd be fine as a standalone private sub | ||
note that the PAST::Regex itself never calls make_regex directly, the HLL sets that up in the PAST tree | |||
(typing) | |||
lisppaste3 | pmichaud pasted "example PAST for <$a> for bkeeler++" at paste.lisp.org/display/98115 | 01:36 | |
pmichaud | the !make_regex sub is something that simply takes its argument and coerces it into an appropriate regex sub | 01:37 | |
that the outer regex can invoke on the current match | 01:38 | ||
(note that this happens at runtime, not at the point where <$a> itself is being compiled) | |||
if $a is an array, then it builds an alternation | |||
bkeeler | I see | 01:39 | |
pmichaud | if $a is a string, it compiles the string | ||
if $a is already a regex, it returns it directly | |||
we can then easily call back into the current regex compiler from !make_regex | |||
in the case of something like | 01:40 | ||
/ $a / | |||
it's the same code, except we have a "!make_string" private sub that tends to want to return strings instead of regexes | |||
and the HLL knows the difference based on what it's parsing | |||
(so it can choose the correct PAST structure) | 01:41 | ||
bkeeler | Fair enough | 01:42 | |
My deja-vu sense is still telling me there's problems, but unfortunately it's not elaborating | |||
Hate it when it does that | |||
pmichaud | !make_regex and !make_string (or whatever we end up calling them) can also cache the regexes they see, so that if they encounter an already-seen value they return it directly instead of recompiling on each invocation | ||
bkeeler | I guess the thing to do is to try and see | ||
pmichaud | it might be easiest to try to get <{ $a }> to work in NQP. | 01:43 | |
that way you're just dealing with nqp, instead of rakudo+nqp | |||
NQP even knows how to parse <{ $a }> already, it just doesn't set the :subtype | 01:44 | ||
bkeeler | Worthwhile having it there | ||
pmichaud | right. | ||
bkeeler | Seems like it might be handy for compiler-writers to have | ||
pmichaud | it can be, although NQP doesn't have the luxury of being able to provide a !make_regex function at runtime. | ||
althoguh maybe we can make that a standard part of the P6Regex library. | |||
that sounds useful-ish. | 01:45 | ||
bkeeler | I don't see why not | ||
Is there a better way of invoking the regex compiler other than the nasty stuff I do after the "# Kinda cheesy" comment? | 01:46 | ||
pmichaud | the code that handles <{ ... }> in NQP is at src/NQP/Actions.pm line 778 | ||
we just need to have | |||
method assertion:sym<{ }>($/) { make $<codeblock>.ast; } | |||
also set the :subtype<match> flag on the codeblock ast | 01:47 | ||
which will tell it to act like a matching code assertion instead of an execute-only code assertion. | |||
(looking at regex compiler invocation) | |||
jnthn | rakudo: say Any.^methods | 01:50 | |
p6eval | rakudo b36748: ( no output ) | ||
jnthn | Finally fixed. :-) | ||
jnthn waits for the spectest run before pushing | |||
bkeeler | Also, if "method assertion:sym<{ }>($/)" is responsible for setting subtype<match> it will overwrite subtype<zerowidth> | 01:51 | |
pmichaud | backwards. | 01:52 | |
subtype<zerowidth> ends up overwriting subtype<match> | |||
(which is what we want) | |||
bkeeler | Hmm, I distinctly remember breaking <?{...}> when I tried | 01:53 | |
pmichaud | The <? ends up getting parsed as ? + assertion | ||
so, we parse the {...} part as a normal assertion, giving us back PAST::Regex with :subtype<match> | |||
the ? then takes that AST as-is, but sets :subtype<zerowidth> | |||
i.e., it acts like a prefix operator | 01:54 | ||
we evaluate the operand before we set the :subtype | |||
the code that handles this is src/Regex/P6Regex/Actions.pm line 342 | 01:55 | ||
on line 344, we check to see if the <?...> has an argument (<assertion>) | |||
in this case, <?{...}>, the {...} is a sub-assertion produced from assertion:sym<{ }> | 01:56 | ||
so, we get its AST (line 345) | |||
change its subtype to 'zerowidth' (line 346) | |||
and use the resulting AST as the result of <?{...}> (line 349) | |||
the prefix ! does the same thing, except it also inverts the :negate flag | 01:57 | ||
bkeeler | Seems sound enough. I wish I could remember why it broke then... | ||
pmichaud | so that things like <!???!{ $foo }> can work | ||
bkeeler | Ah well, like I say seems like the thing to do is go back and try again and see what problems I run into | 01:58 | |
01:58
Psyche^ joined
|
|||
pmichaud | yes | 01:58 | |
and we can do baby-steps in NQP | |||
once the PAST::Regex structure is working, it's simply a matter of constructing subs to do the runtime handling of the dynamic values | |||
I think I need to add a 'rule' adverb to .compile | 01:59 | ||
so that we can compile starting somewhere other than TOP | |||
bkeeler | That would be swell | ||
dalek | kudo: 6ee83f2 | jonathan++ | src/metamodel/ClassHOW.pir: Fixes to method introspection so we can pass all of the tests on it again. |
||
kudo: 559b0ca | jonathan++ | src/builtins/Code.pir: Tweak Code.name so it doesn't explode on PIR subs. |
|||
kudo: 5cf2126 | jonathan++ | t/spectest.data: Turn on S12-introspection/methods.t. |
|||
kudo: 5707e67 | jonathan++ | t/spectest.data: Turn on S02-magicals/pid.t, now that it's been tweaked to also work on Windows (presumably works elsewhere too; if not, it's easy enough to comment out again for the release). |
|||
pmichaud | Cursor.parse already knows how to do that | ||
bkeeler | Problem is all those contextuals that get set up in TOP and comp_unit | 02:00 | |
pmichaud | right | ||
this will avoid those. | |||
bkeeler | They need to be there | ||
pmichaud | oh, yes. | ||
hrm. | |||
bkeeler | I made the appropriate change to .compile at one point and had it calling a different rule | 02:01 | |
Even if I duplicated all the contextuals in my new rule, it still didn't work right | |||
pmichaud | yes, it will be hard to get those right | ||
02:01
felipe joined
02:02
Psyche^ is now known as Patterner
|
|||
pmichaud | I think we might go with the cheesy approach for now. The nice thing about the way I've factored it is that it doesn't end up in the regex generated code -- it's factored out into !make_regex or similar. | 02:02 | |
i.e., we don't have to have the regex compiler generate the code to call itself. | |||
bkeeler | true | ||
jnthn | OK, I'm done for tonight. | 02:03 | |
4am. Oops! | |||
bkeeler | \o jnthn | ||
pmichaud | jnthn: turning in early, I guess? ;-) | ||
jnthn | pmichaud: :-P | 02:04 | |
pmichaud | jnthn: it's okay, we'll let you finish early tonight. | ||
sorear | pmichaud: People have talked about R* as being more than just a release of Rakudo. Can you explain the difference between R* and Rakudo (say) #30? | ||
pmichaud | my intent is that R* will be a distribution release, not just a compiler release | ||
jnthn | pmichaud: I have no meetings this week, so I'm just enjoying being concious when I want to be to take advantage of this novelty. ;-) | ||
sorear: See also wiki.github.com/rakudo/rakudo/whats...nto-rakudo | |||
pmichaud | the Rakudo releases we do now are just compiler releases | ||
R* will be a compiler release plus modules | 02:05 | ||
(whichever modules we think might belong in a distribution) | |||
jnthn | phenny: tell colomon Not sure that we'll make 31000 for the release tomorrow^Wtoday, but I got us 60 closer tonight anyways. :-) | ||
phenny | jnthn: I'll pass that on when colomon is around. | ||
jnthn | OK, I'm gone o/ | ||
pmichaud | but the rakudo compiler repository will probably never be the place that we hold non-core module | ||
*modules | |||
sorear | what's sink context? | ||
02:05
agentzh joined
|
|||
bkeeler | void context essentially I think | 02:06 | |
pmichaud | we also want to introduce the notion that a distribution release may be (indeed will be) independent of compiler releases | ||
sink context eagerly evaluates its operand(s) | |||
dalek | kudo: 98f05df | jonathan++ | docs/ChangeLog: Some more ChangeLog entries. |
||
bkeeler | Regular statements are in sink context unless they're the last in their block iiuc | 02:07 | |
pmichaud | so, R* also intends to make the point that compiler improvements can take place independently of (and run ahead of) distribution releases | ||
bkeeler | pmichaud: Well, I guess I have enough to go on for now. I'll get cracking over the next few days and ping you if I have problems, OK? | 02:09 | |
pmichaud | so, it's entirely possible that a distribution release could be made using something other than the latest compiler release | ||
the focus of a compiler release is to be as true to the latest language specification as possible | |||
the point of distribution releases is to provide continuity across releases | |||
so a distribution release is more interested in backwards compatibility, library selection, and module compatibility than a compiler release | 02:10 | ||
and different distributions could choose varying criteria for when to issue updates | 02:11 | ||
some distributions may choose to emphasize stability and backports | |||
other distributions may want to emphasize leading-edge modules and features | |||
some distributions may be oriented towards web programming, or database programming, or whatever | |||
bkeeler: sounds like a great plan. ping me when you run into difficulties. | 02:12 | ||
bkeeler | Willdo | ||
OK, time to cook up some noms and watch the Daily Show. Back later probably... | 02:13 | ||
02:17
lest_away is now known as lestrrat
|
|||
pmichaud | hugme: add bkeeler to nqp-rx | 02:18 | |
hugme hugs bkeeler. Welcome to nqp-rx! | |||
pmichaud | hugme++ | ||
pugssvn | r30441 | pmichaud++ | [pm.txt]: Added a new question for TimToady++: | 02:25 | |
r30441 | | |||
r30441 | +Pm-20: What's the result of something like...? | |||
r30441 | + my $x = [<a b c d>]; 'a b c d' ~~ / $x /; | |||
pmichaud | afk for a while. | ||
02:43
cotto joined
02:44
rml_ joined
02:50
JimmyZ joined
|
|||
sorear | pm.txt eh? | 02:51 | |
colomon | phenny: tell jnthn That's getting pretty close... :) | 02:55 | |
phenny | colomon: I'll pass that on when jnthn is around. | ||
colomon: 02:05Z <jnthn> tell colomon Not sure that we'll make 31000 for the release tomorrow^Wtoday, but I got us 60 closer tonight anyways. :-) | 02:56 | ||
03:09
user253784 joined
03:40
meppel joined
03:44
JimmyZ left,
meppl left,
snarkyboojum joined
03:47
rml_ left
03:55
molaf joined,
drbean joined,
meppel is now known as meppl
|
|||
lue | echo "hello?" | 04:06 | |
diakopter | std: my int[int] $foo = 1; # TimToady: does STD check that int[T] exists? | 04:09 | |
p6eval | std 30441: OUTPUT«ok 00:01 108m» | ||
lue | ooh! what's that supposed to do? | 04:10 | |
diakopter | I don't know. | 04:12 | |
I don't know whether it's supposed to be an array of ints, or if int is supposed to be a parametric type | 04:14 | ||
it's confusing because [ ] is used for both <bleh> | |||
rakudo: my Int[Str] $foo = 1; | 04:16 | ||
p6eval | rakudo 98f05d: OUTPUT«In "my" declaration, typename Int must be predeclared (or marked as declarative with :: prefix) at line 11, near "[Str] $foo"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
04:21
REPLeffect left
|
|||
diakopter | std: (my Int) $foo = 1; | 04:21 | |
p6eval | std 30441: OUTPUT«===SORRY!===Malformed my at /tmp/DOr0PRCfUJ line 1:------> (my Int⏏) $foo = 1; expecting any of: multi_declarator scoped declarator typenameParse failedFAILED 00:01 107m» | ||
diakopter | rakudo: (my Int) $foo = 1; | ||
p6eval | rakudo 98f05d: OUTPUT«In "my" declaration, typename Int must be predeclared (or marked as declarative with :: prefix) at line 11, near ") $foo = 1"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
04:32
nihiliad joined
04:34
REPLeffect joined
04:41
REPLeffect left
04:50
molaf left
|
|||
diakopter | afk | 04:52 | |
04:56
user253784 left
05:00
ReiniUrban joined
05:01
rurban left,
ReiniUrban is now known as rurban
05:07
hercynium joined
05:16
kaare joined
05:17
kaare is now known as Guest59422
|
|||
cognominal | rakudo: say 'a, a ' ~~ / :s a ** ',' / | 05:21 | |
p6eval | rakudo 98f05d: OUTPUT«a» | ||
cognominal | rakudo: say 'a,a ' ~~ / :s a ** ',' / | 05:22 | |
p6eval | rakudo 98f05d: OUTPUT«a,a » | ||
lue | goodnight moon | 06:02 | |
06:06
uniejo joined
06:12
ruoso joined
06:23
uniejo left
06:25
uniejo joined
06:26
alester left
06:34
XaeroOne joined
06:45
nihiliad left
06:53
justatheory left
06:54
mberends joined,
riffraff joined,
justatheory joined,
justatheory left
07:08
derpalerts joined,
derpalerts left,
steinberg joined,
cotto left,
arnsholt left,
Tene left,
avar left,
literal left,
zamolxes left
07:13
cotto joined,
arnsholt joined,
renormalist joined,
mj41 joined,
gabiruh joined,
fda314925 joined,
oskie joined,
Tene joined,
avar joined,
literal joined,
zamolxes joined,
TimToady joined,
pmichaud joined,
card.freenode.net sets mode: +oo TimToady pmichaud
|
|||
szabgab | moritz_, ping | 07:19 | |
07:25
dual joined
|
|||
moritz_ | szabgab: pong | 07:27 | |
szabgab | gm | ||
moritz_ | (no, I won't make it to Berlin :/ ) | ||
07:27
gurjeet left
|
|||
szabgab | :-( | 07:27 | |
is there anyone else working on Rakudo/Perl 6 who might come by ? | 07:28 | ||
07:28
gurjeet joined
|
|||
szabgab | I mean to LinuxTag Berlin in June | 07:29 | |
moritz_ | Su-Shee is based in Berlin... but I don't know if she's sufficiently involved to give a talk | ||
07:30
iblechbot joined
07:47
XaeroOne left,
XaeroOne joined
07:59
XaeroOne left
|
|||
dalek | kudo: af152d7 | (Martin Berends)++ | src/core/Temporal.pm: [core/Temporal.pm] give strftime() the previously forgotten %b and %B formats |
08:05 | |
08:07
XaeroOne joined,
fridim joined
|
|||
pugssvn | r30442 | mberends++ | [DateTime.t] also test %b and %B in strftime() | 08:08 | |
mberends | To accommodate more Temporal expectations without bloating the core executable, I am planning to move DateTime::strftime into a loadable module. The move will also validate how tools handle "core modules" (eg copying, compiling to PIR) beyond only Test.pm. | 08:09 | |
If it works, I intend to gradually move more non essential code (a subjective call, admittedly) as possible into loadable modules. Which actual code moves is less important, using the capability is more important. | |||
sorear | by loadable module, do you mean something magic, or just an ordinary S11 .pm? | 08:10 | |
mberends | the latter | ||
08:12
moritz_ sets mode: +o mberends
|
|||
moritz_ | mberends: might I ask you to wait with that until after today's release? | 08:13 | |
moritz_ would be happy if somebody could proof-read the release announcement | 08:17 | ||
mberends | moritz_: yes, good idea. I had read the changelog, will proof-read now :-) | 08:18 | |
08:21
iblechbot left
|
|||
mberends | moritz_: the announcement looks nit-free to me | 08:23 | |
dalek | kudo: 05ee824 | moritz++ | docs/release_guide.pod: [docs] update release guide |
08:24 | |
snarkyboojum | nitpicks - "and their invitation of Jonathan Worthington" could be "and their invitation to Jonathan Worthington", and "release dates and codenames for 2010" could be "release dates and code names for 2010" | 08:27 | |
:) | |||
sorear | mberends: What will the new API for strftime look like? | ||
08:27
sundar joined
|
|||
colomon | rakudo: my %a; say %a.WHAT | 08:28 | |
p6eval | rakudo af152d: OUTPUT«Hash()» | ||
mberends | sorear: hopefully "use DateTime::strftime" and then proceed as before | 08:29 | |
08:29
dakkar joined
|
|||
sorear | use Module::method? | 08:29 | |
never seen that syntax before | 08:30 | ||
moritz_ | that would be another module | ||
mberends | sorear: there will be a DateTime.strftime.pm, precompiled to .pir | ||
sorear | ah. | ||
sorear wonders why Perl 6 grammars don't mingle action code with production rules | 08:31 | ||
colomon | rakudo: my %a; say %a.kv | ||
p6eval | rakudo af152d: OUTPUT«» | ||
sorear | Is there a good place to start looking if I want to understand how list context, list returns, flattening in map list returns, etc work? | 08:32 | |
pugssvn | r30443 | colomon++ | [t/spec] Fudge out Hash extension tests, unfudge a test, change type of (1, 2, 3) from obsolete List to Parcel. | 08:34 | |
moritz_ | sorear: S02 I'd think, maybe also S06 | ||
szabgab | moritz_, unless someone else volunteers I'll try to represent Rakudo and Perl 6 on LinuxTag but I'd like to prepare a short presentation (< 5 min) that any one of the booth people could flip through | 08:38 | |
and show very interesting features of Perl 6 | 08:39 | ||
moritz_ | szabgab++ | ||
szabgab | wait with that | ||
sorear | szabgab++ | ||
szabgab | I need your help to prepare it :-) | ||
sorear | let us know if real people are as universally hostile towards P6 as bloggers are | ||
moritz_ | ok, ++szabgab then :-) | ||
snarkyboojum | real people vs bloggers :) I like it | 08:40 | |
szabgab | people quite liked it on CeBIT but I could only show random examples from my slides | ||
I'd like to have some more focused thing | |||
moritz_ | szabgab: we've tried to collect examples for the book, you could steal there | 08:41 | |
szabgab | and something that the other people - who might be less involved in Perl 6 - can also show | ||
I'll look at that | |||
moritz_ | szabgab: if you want something to show off (and not explain in detail)... | 08:42 | |
szabgab | I think I need items that can be understood while standing at a booth | ||
moritz_ | github.com/moritz/json/blob/master/...Grammar.pm | ||
szabgab | but make it very interesting | ||
junctions and chained comparision are nice (though the latter exists in Python) | |||
moritz_ | a complete JSON grammar | ||
szabgab | so we have to be careful not to oversell the idea | 08:43 | |
a simple grammar might be interesting | |||
pugssvn | r30444 | colomon++ | [t/spec] Fudge out two tests for Rakudo, change test which assumed Array is a List to use Seq instead of List. | ||
08:44
scottamatot joined
|
|||
szabgab | some of the meta operators maybe | 08:44 | |
dalek | kudo: d50e92f | moritz++ | docs/announce/2010.04: [announce] mention number of passing tests, and a nit pick from snarkyboojum++ |
08:47 | |
pugssvn | r30445 | colomon++ | [t/spec] Fudge out test with weird indeterminate results. | 08:49 | |
colomon | moritz_: for what it's worth, I'm making a raid on LHF. Have another 30+ passing tests here, just haven't checked in t/spectest.data yet. | 08:50 | |
moritz_ | colomon: I can wait for a few more hours with the release | ||
btw I've estimated the number of total test for the announcment, not took the count from test_summary.pl | 08:51 | ||
that's inaccurate anyway, so quoting all 5 figures felt too stupid to me | |||
that's why I also gave the ratio of passing tests as two decimals only | |||
colomon | :) | 08:52 | |
moritz_ | as a physicists I feel that the number of significant decimals should roughly present the accuracy of the number | ||
colomon: if you have some free time, you could also look at rt.perl.org/rt3/Ticket/Display.html?id=74526 and maybe apply it | 08:53 | ||
would certainly be nice to have it in the release, if it's a good patch | |||
08:59
sundar left
|
|||
colomon | trying it now. | 08:59 | |
09:02
IllvilJa left
09:05
masak joined
|
|||
masak | halloj #perl6 | 09:06 | |
colomon | o/ | ||
moritz_ | \o | ||
mberends | o/ | ||
masak | pmichaud++ # readline example paste.lisp.org/display/98110 | ||
moritz_ seems to walk in opposite direction of colomon and mberends | |||
09:06
riffraff left
09:07
pmurias joined
|
|||
colomon | moritz_: running spectest, will push everything I've got here if it works. (and then probably go back to bed.) | 09:07 | |
moritz_ | colomon: ok | ||
sorear | when S02 says Num must be the "largest native floating point format that runs at full speed", does that include stuff like i386/SVID 'long double' | 09:08 | |
80 bits of data, 48 bits of mandatory alignment padding :/ | |||
moritz_ | sounds like that decreases performance by clogging the caches | 09:09 | |
so it doesn't run at "full speed" :-) | |||
09:09
gurjeet left
09:10
gurjeet joined
09:13
lestrrat is now known as lest_away
09:22
scottamatot left
09:27
Patterner left
|
|||
sorear | rakudo: say now.WHAT | 09:31 | |
p6eval | rakudo d50e92: OUTPUT«Could not find sub &nowcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
moritz_ | rakudo: say time.WHAT | ||
p6eval | rakudo d50e92: OUTPUT«Num()» | ||
sorear | S02 defines 'now' as a grammatical builtin | ||
not a function | |||
which seems weird | 09:32 | ||
09:32
sundar joined
|
|||
sorear | rakudo: say time.perl | 09:32 | |
p6eval | rakudo d50e92: OUTPUT«1271927778.04165» | ||
moritz_ | but it's clear that rakudo will parse it a sub call if it doesn't know about it | ||
09:33
Psyche^ joined,
Psyche^ is now known as Patterner
09:34
Patterner left
|
|||
sorear | hmm, S02 still talks about list context | 09:35 | |
09:35
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
moritz_ | why shouldn't it? | 09:35 | |
colomon | moritz_: pushed with 30931 passing tests, including that patch. | 09:37 | |
moritz_ | rakudo: print 30931/39e3 | 09:38 | |
p6eval | rakudo d50e92: OUTPUT«Confused at line 11, near "print 3093"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
moritz_ | rakudo: print 30931 / 39e3 | ||
p6eval | rakudo d50e92: OUTPUT«0.793102564102564» | ||
colomon | not quite 80%, alas. | 09:39 | |
moritz_ | std: 30931/39e3 | ||
p6eval | std 30445: OUTPUT«ok 00:01 109m» | ||
colomon | afk # back to bed | ||
moritz_ calls rakudobug | |||
sorear | moritz_: because, insofar as I understand it, list context doesn't exist anymore | ||
colomon | probably leftover remnants of Rat literals... | ||
moritz_ | colomon: what did you push? rakudo? or spectests? | 09:40 | |
pugssvn | r30446 | moritz++ | [t/spec] re-fudge reduce.t for rakudo | ||
moritz_ also forgot to svn dcommit something yesterday night | |||
09:42
Patterner left,
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
pugssvn | r30447 | pmurias++ | [mildew] fix bug | 09:52 | |
sorear | do we have any code examples using macros? | 09:54 | |
moritz_ | there are some very basic tests | 09:55 | |
but since nobody really implements macros yet, not much | |||
09:59
iblechbot joined
10:01
sundar left
|
|||
dalek | kudo: 5c8257f | moritz++ | (2 files): enable three more test files that colomon++ fudged |
10:02 | |
moritz_ | moritz.faui2k3.org/tmp/rakudo-2010.04.tar.gz <- preview of upcoming release, please test! | ||
masak | sorear: have a look at the link at the bottom of feather.perl6.nl/~masak/ | ||
10:02
sundar joined
|
|||
masak | sorear: it's a presentation containing a few 'best guesses' of how macros will looks. they're by the end. | 10:03 | |
10:03
Alias_ joined
10:04
eiro left,
yahooooo left,
opx^away left,
Woody2143 left,
japhb left,
kst joined
10:05
Grrrr joined
10:06
yahooooo joined,
daemon joined,
frettled joined,
mantovani joined,
mdxi joined,
gfldex joined,
opx^away joined,
Woody2143 joined,
japhb joined,
frettled left
10:07
frettled joined
10:08
yinyin left
10:12
eiro joined
10:19
ruoso left
|
|||
colomon | blast, that's what I get for going to sleep | 10:26 | |
or rather, trying to hack when asleep | |||
moritz_: sorry, my push didn't work. you duplicated my test patch, and I've just pushed quester's patch. | 10:27 | ||
10:30
lest_away is now known as lestrrat
|
|||
dalek | kudo: d952fc4 | quester++ | src/core/ (2 files): Fix Seq.perl to not say Seq.new(). Interim fix for Iterator.perl infinite loops. |
10:30 | |
10:30
sundar left
10:33
rv2733 joined
10:43
Xaero joined
10:44
XaeroOne left
10:46
gurjeet left,
gurjeet joined
10:48
slavik left
10:49
clintongormley joined
11:01
slavik joined
|
|||
moritz_ | ok, I'll re-run the tests with the latest patch | 11:22 | |
please don't commit anything to rakudo until I've tagged the release | |||
mberends | moritz_++ | 11:26 | |
colomon | moritz_++ indeed. | 11:29 | |
masak | \o/ moritz_++ | 11:30 | |
11:34
meppl left
|
|||
jnthn | o/ | 11:54 | |
phenny | jnthn: 02:55Z <colomon> tell jnthn That's getting pretty close... :) | ||
jnthn | Ooh, we're releasing?! :-D | ||
moritz_++ :-) | 11:57 | ||
11:57
meppl joined
|
|||
moritz_ | release tagged, tarball uploaded | 11:58 | |
feel free to tore things apart again :-) | |||
masak | \o/ | 12:00 | |
jnthn | moritz_++ \o/ | 12:01 | |
dalek | kudo: 43f1105 | pmichaud++ | docs/spectest-progress.csv: spectest-progress.csv update: 402 files, 30887 (79.9% of 38645) pass, 0 fail S06-signature/named-parameters.rakudo passed 82 unplanned test(s) S32-list/reduce.rakudo passed 4 unplanned test(s) |
12:02 | |
pmichaud | good morning, #perl6 | 12:03 | |
moritz_ | rakudo.org/node/69 # announcment | ||
moritz_ hopes its visible for users that are not logged in | 12:04 | ||
12:04
envi^home joined
|
|||
pmichaud checks | 12:04 | ||
looks visible to me. I'm not logged in. | |||
moritz_ | great | ||
pmichaud | moritz_++ moritz_++ | 12:05 | |
Expressions that begin with a variable and end with a circumfix now properly | 12:07 | ||
interpolate into double-quoted strings, like [email@hidden.address] or | |||
"%hash". | |||
Looks like the <key> got swallowed. | |||
masak | needs a layer of HTML escaping. | ||
12:08
charsbar joined
|
|||
moritz_ | updated. | 12:08 | |
12:09
mariano__ joined
|
|||
jnthn | *postcircumfix | 12:09 | |
moritz_ | fixed on rakudo.org -- too late for the mailing lists | 12:10 | |
jnthn | It's not a big thing. :-) | 12:14 | |
pmichaud | it's fine on the mailing list | ||
masak likes www.modernperlbooks.com/mt/2010/04/...ility.html | |||
chromatic++ | |||
moritz_ was about to write something similar | 12:16 | ||
but it wouldn't have been comparable in eloquency | |||
pmichaud | I wonder about a companion post: "The thing about anonymous trolls..." | 12:17 | |
12:18
araujo joined
|
|||
pmichaud | I like chromatic's post, but it misses something for me (more) | 12:18 | |
I read the PerlMonks thread. Like him, I was a bit disturbed by AnonymousMonk and others' postings. (more) | 12:19 | ||
I thought about speaking up, but then decided it wasn't worth my time. | |||
12:20
pmurias left
|
|||
moritz_ | well, you can't convince the trolls. The question is always if you can convince the anonymous readers who don't speak up at all | 12:20 | |
pmichaud | (wasn't worth my time more from a personal situation perspective, not that it's not worth anyone else's time to speak up. I was very happy to see the people speaking out against the abuse.) | ||
moritz_ | and that's very hard to measure | 12:21 | |
12:21
araujo left
|
|||
pmichaud | right. So the piece that appears to me to be missing is that we need volunteers who are willing to speak up about such things. | 12:21 | |
12:21
quester_ joined
12:22
araujo joined,
pmurias joined
|
|||
moritz_ | the thing with anonymous trolls is that they can say it's very easy to gain high quality contributors (<www.perlmonks.org/?node_id=835737>) and we can't really nail them down for not doing it for us | 12:22 | |
pmichaud | oh, in that case it's really a case of someone totally not knowing what he/she is talking about | 12:23 | |
the logic behind that post goes something like | |||
1. If we had people skilled for this task, Perl 6 would be done by now | 12:24 | ||
2. Perl 6 isn't done by now | |||
therefore, it's obvious we don't have people skilled for the task | |||
12:24
araujo left
|
|||
pmichaud | .... and the poster doesn't bother to look to see that the facts don't fit that particular logic. | 12:25 | |
(or that the hypothesis in #1 is itself not self-evident nor true) | |||
12:25
araujo joined
|
|||
pmichaud | indeed, the fallacies in that post are pretty glaring | 12:26 | |
moritz_ | sure | ||
pmichaud | in particular, Perl did *not* grow out of a university setting. | ||
moritz_ | I just want to point out that if a named troll posted such a thing, I'd answer to all of his following troll posts by saying "please organize the contributors that you promised $here" | 12:27 | |
pmichaud | indeed, very few successful marketplace languages come from universities. | ||
quester_ | BTW, has anyone fixed the first word on the second line of rakudo/docs/announce/2010.04 to say "April" instead of "March"? rurban++ mentioned that about a day and a half ago... | ||
moritz_ | grrrr, didn't see it | 12:28 | |
pmichaud | and I don't know if the anonymous monk of that post realized it, but he's essentially saying that "Larry Wall doesn't understand the theory of compiler design and is trying to put it in practice." | ||
quester_ | moritz_: Yeah, these things happen | 12:29 | |
12:29
araujo left
12:30
IllvilJa joined
12:31
pmurias left
12:32
araujo joined
12:34
SmokeMachine joined
|
|||
quester_ | Good night, everyone. Happy release celebration! Viva Moscow/Москва! | 12:35 | |
colomon | (On finally reading some of that thread): Is it just me, or do the nay-sayers get shriller the closer we get to actually having Rakudo be useful? | 12:36 | |
moritz_ | colomon: seems like it | ||
colomon: otoh I've seen a positive trend too | 12:37 | ||
colomon: this thread contains very unusual amounts of trolling, even for Perl 6 readiness discussion | |||
masak | I've definitely felt a positive trend lately. | 12:38 | |
12:38
smash_ joined
|
|||
smash_ | hello everyone | 12:38 | |
moritz_++ # release | |||
masak | \o | ||
12:39
quester_ left
12:41
ruoso joined
|
|||
moritz_ | "This is a duplicate of #8045, which has been open since 2001. | 12:41 | |
sorry, wrong paste | |||
"Moscow.pm also reminds that today (22 Apr) is the birthday of Lenin :-) | |||
" | |||
via email from Andrew Shitov :-) | 12:42 | ||
rakudo: say Date.today() - Date.new('2006-03-24') | 12:44 | ||
p6eval | rakudo 43f110: OUTPUT«1490» | ||
jnthn | moritz_: lol | 12:45 | |
moritz_ | on 2006-03-24 was the first commit to languages/perl6 in parrot | ||
pmichaud | I'm wondering if I should write my own reply to the thread, or "don't bother". | 12:50 | |
I have a lot of facts I'd like to see interjected. | |||
moritz_ | pmichaud: maybe a separate blog post would be more productive | 12:51 | |
pmichaud | I suspect AnonymousMonk isn't interested in facts, though. They interfere with his mission. | ||
jnthn | rakudo: say Date.today() - Date.new('2007-12-16') | ||
pmichaud | moritz_: yes, I meant as a separate blog post. | ||
p6eval | rakudo 43f110: OUTPUT«858» | ||
jnthn | That's how many days since my first commit to Rakudo. | ||
My first commit added Junction. | 12:52 | ||
smash_ | trying to figure something to help with, but i'm a bit lost in the ROADMAP | ||
12:54
alester joined
|
|||
pmichaud | "You get people skilled for this exact task, these skills are acquired in universities where professors teach courses...." Hmm, who do we have working on the project? Me, Ph.D. Computer Science, Full Professor. Check. Dr. Damian Conway -- check. | 12:54 | |
Unfortunately, Larry Wall wouldn't qualify according to this criteria. | |||
So obviously we need to get rid of him if we want to finish Perl 6. :-) | |||
moritz_ also seems to recall that jnthn, masak, arnsholt and $self have attended such courses | 12:55 | ||
pmichaud | allison++ is currently working on her Ph.D. in this, IIRC. | ||
jnthn | jnthn specialized in the field during his third year. | ||
At some small insignificant university in Cambridge, England. | |||
masak | I've attended CS courses, but mostly on a very basic level, and mostly they all sucked. | 12:56 | |
moritz_ | actually we have a pretty high density if CS related graduates (adn higher) | ||
masak hopes to graduate Real Soon Now | |||
pmichaud | "If you can't get real compiler people to use Perl6 and help with it, the average open-source rookie won't be able to deal with this..." | 12:57 | |
I guess the list I gave above are all "average open source rookies". | |||
12:57
Guest59422 left
|
|||
jnthn did courses in compiler construction, optimizing compilers, finite automata and regular languages, programming language history, type theory, formal semantics of programming languages...amongst others. | 12:57 | ||
moritz_ | maybe just link to the "YOU'RE NOT GOOD ENOUGH" shouting by mst :-) | 12:58 | |
jnthn | That was quite a talk. :-) | 12:59 | |
arnsholt | moritz_: I'm more of a natural language guy really, but yeah I know a bit about this | ||
12:59
fridim left
13:00
kaare joined,
ReiniUrban joined,
kaare is now known as Guest81115
13:01
molaf joined,
rurban left,
alester left,
ReiniUrban is now known as rurban
|
|||
masak is an average open source rookie | 13:02 | ||
moritz_ | on a totally unrelated note, funcall.blogspot.com/2010/04/whenev...-java.html captures pretty well some of my Java experience | ||
Java forces you to write things that are infered by the compiler anyway | 13:03 | ||
13:03
pmurias joined
|
|||
cognominal | I have the dragon book, but I learn mostly by reading code written by folks here. Anyway the Perl 6 grammar is nothing like anything done before. So judging Perl 6 implementation by any existing metric does not make any sense. People must see for themselves to understand | 13:04 | |
mathw | \o/ | ||
Java-bashing! | 13:05 | ||
Also | |||
I'm doing Perl training at work again | |||
colomon | jnthn: I don't think they had most of those classes when I got my CS degree. | ||
There was a theory of programming languages course I took, in which I knew more than the teacher about C++. :) | |||
jnthn | colomon: Yeah, apparently they're not all typically of offer. | 13:06 | |
Heh, anyone who knows about formal semantics probably doesn't want to think about C++. ;-) | |||
cognominal | "Whenever I write code in Java I feel like I'm filling out endless forms in triplicate." Happy guy, objective-c is even worse in that respect. | ||
mathw | Yeah C++ and formal semantics are not good friends | ||
colomon | And there were two compiler construction courses, but they weren't offered regularly, so they never actually fit in my schedule. (I tried.) | 13:07 | |
jnthn | The opening lines from the lecturer on that course were something like, "Once upon a time, we had no formal semantics course. We released into the world the guy who went on to invent C++. We teach this course now to try and prevent a reccurence." :-) | ||
colomon | Most of my advanced CS courses ended up being AI courses. | ||
moritz_ lols, literally | 13:08 | ||
smash_ | i had 'formal methods' in my 2nd year | ||
colomon | Though I also had a nice course on IBM mainframe assembly language. | ||
mathw | I rather like C++, but I think it's more accidentally useful than brilliant | 13:09 | |
But it's still better than Java :) | |||
13:09
iblechbot left
|
|||
colomon | :) | 13:10 | |
mathw | sometimes I do get frustrated with some of the limitations on templates though | ||
colomon | I've never actually used Java, but that's certainly my impression: 90% of the verbose crap of C++, and with most of the powerful features turned off because they're too dangerous. | ||
mathw | yeah it's like C++ without any of the redeeming features | 13:11 | |
arnsholt | There's one important redeeming feature of Java. Garbage collection =) | ||
mathw | meh | 13:13 | |
it's overrated | |||
and you can always add it to C++ if you want it | |||
arnsholt | I have to admit that I'm a lazy bugger. I really like garbage collection | 13:14 | |
moritz_ too | |||
mathw | Sometimes I use a language with it in and get kind of giddy | ||
Look! I think, I can just throw this away and someone will pick it up | 13:15 | ||
But then I run headlong into a brick wall | |||
moritz_ | also it's not so easy to add proper GC retrospectively | ||
mathw | because I'm writing in Java | ||
13:15
Guest81115 left,
ruoso left
|
|||
mathw | I guess I've used new and delete for so long, it doesn't bother me anymore | 13:15 | |
moritz_ | happily there decent languages out there which use GCs | ||
mathw | true :) | 13:16 | |
colomon | :) | ||
moritz_ points at the channel name | |||
PerlJam | mathw: "I guess I've been stabbing myself with a knife for so long, it doesn't bother me anymore" :) | ||
moritz_ | well, once the nerves are all dead, you don't feel it anymore | ||
colomon | Really, if you're using a decent set of foundation classes, calling delete (directly) is pretty darned rare. | 13:17 | |
And Perl 6 requires more calls to new than C++ does. ;) | 13:18 | ||
mathw | I just... do it | ||
It doesn't seem to matter | |||
moritz_ | actually I find that I call .new in test code many times more than in regular code | ||
mathw | When I compare languages, GCness just doesn't factor into it | 13:19 | |
moritz_: in test code, you're generally making a whole bunch of stuff for each few tests, so that's something I tend to do as well | |||
in real code, you tend to make a few objects and then squeeze them in various ways for some time | |||
PerlJam | mathw: statistics aren't on your side. Most bugs, particularly the hard-to-track-down variety, come from improper memory management. | ||
mathw | Not here | 13:20 | |
here they come from improper multithreaded resource handling | 13:21 | ||
colomon | PerlJam: I think there's a selection bias going on there. | ||
mathw | sometimes that does involve one thread deleting something while another thread is still trying to use it, admittedly | ||
they're always fun... | |||
PerlJam | mathw: well ... threads are just evil ;) | ||
mathw | well actually they're usually quite easy to track down | ||
it's just hard to figure out how to fix them | |||
yeah threads are evil | |||
every time I write multithreaded code I think 'there must be a better way' | 13:22 | ||
moritz_ | just put in a sleep(1) in appropriate place to avoid race conditions :-) | ||
smash_ | if you need sleep's to avoid race conditions you're probably doing something wrong (or something nasty) | ||
PerlJam | It's interesting that the phrase "race condition" has crossed my conciousness twice in such a short time this morning | 13:23 | |
moritz_ | smash_: I know. I wasn't serious | ||
mathw | I was working with a colleague earlier on a design | ||
We managed to design ourselves into and then out of a race condition | |||
We felt quite good about that | |||
colomon | Anyway, I don't love Perl 6 because it has garbage collection. I love it because instead of saying | 13:24 | |
PerlJam | (I was just chatting with a coworker about a program that it sucking resources and it appears that there's some race condition, but we can't spot it) | ||
colomon | for (unsigned int i = 0; i < p_trimloops.size (); i++) | ||
I can say | |||
mathw | It would have been embarrassing not to spot it | ||
colomon | for $.trimloops -> $loop | ||
mathw | colomon: oh yes I love that | ||
smash_ | moritz_: :) | ||
mathw | and I love it because I can say @things>>.frobnicate; | ||
colomon | nod | ||
mathw | and because I can say given $thing { when $condition {} when Trout {} when EndOfTheUniverse {} } | 13:25 | |
and just because it's so awesome | |||
colomon | I found myself saying ~~ $x .. $y several times in my recent code, which Very Nice | 13:26 | |
oh! | 13:27 | ||
just occurred to me that i've seen people implement +- as a Perl 6 operator which did a junction. | |||
tpf|[particle] | if you put a scalar on the right side of a ->, it gets invoked automatically? | ||
13:28
tpf|[particle] is now known as [particle]
|
|||
colomon | but for my work, it would be better if it made a range. | 13:28 | |
[particle] takes off his gsoc org admin hat | |||
moritz_ | colomon: that's more useful most of the time | ||
[particle]: no | |||
[particle]: it treats it as a one-element list | |||
so colomon's example should probably be for @.trimloops -> $l { ... } | 13:29 | ||
colomon | indeed. | ||
[particle] | ok, that's what i was getting at, thanks. | ||
colomon | just a think-o. | 13:30 | |
[particle] | glad it wasn't mine, this time ;) | ||
colomon | and that in itself is another cool Perl thing ... the sigil documents what type of variable it is. :) | 13:31 | |
(assuming you get it right!) | |||
moritz_ | :-) | ||
colomon++ | |||
colomon | but yeah, my $work is filled with things like | 13:32 | |
fabs(x - 1.0) < tolerance | |||
replacing that with ~~ $x +- $tolerance would be a big win in clarity. | 13:33 | ||
[particle] | |$x - 1.0| +-- $tolerance # dare to dream... | ||
you'd probably want unicode characters there for | and +-, but i'm too lazy to look them up | 13:34 | ||
13:35
ruoso joined
|
|||
colomon | I think you can't use | | as a bracketing operator? at least I tried and failed sometime last year. | 13:35 | |
PerlJam | colomon: there's no such thing as "can't" in Perl 6 :) | ||
moritz_ | there's a prefix:<|> operator already | 13:36 | |
that clashes with circumfix:<| |> | |||
[particle] | circumfix:<| |> would be tough, i fear, due to ... moritz_++ | ||
mathw | the poor parser might find that quite painfulk | 13:37 | |
13:37
gurjeet left
|
|||
jnthn | If circumfix is a term, and a prefix is an operator, maybe you'd get away with it in that the parser always knows which it's looking for. I'm not sure though. | 13:39 | |
moritz_ | uhm, prefixes are expected in term position | ||
masak | hah! 'has' scoped only applies to methods. :) | 13:40 | |
jnthn | moritz_: ah, yes | 13:43 | |
:-/ | |||
masak: ...and attributes and submethods... :-) | |||
...and regexes.... | |||
:-) | |||
moritz_ | and tokens, rules | 13:44 | |
masak | not attributes, if you only mean the private storage location. | ||
moritz_ | (ok, that's cheating) | ||
[particle] | so, unicode to the rescue | ||
masak | and all the others are a kind of method, really. | ||
jnthn | masak: How so? | ||
I read has-scoped as "available through an instance" | |||
masak | hm, ok. | ||
jnthn | That fits attributes and methods quite well | ||
masak | I was more thinking about it as 'doing lookup along the axis of inheritance'. | 13:45 | |
it's like we have these primitives at different levels of abstraction: blocks, routines, packages, and classes. and for each of these we have a type of variable: 'my', dynamic variables, 'our', and 'has', respectively. | |||
PerlJam | Hmm | 13:46 | |
dynamic vars and "our" are the same thing. "our" just modulates the scoping of a dynamic var's short name | 13:48 | ||
masak | this is news to me. | ||
moritz_ | PerlJam: that's not true | ||
afaict | |||
masak | I thought a dynamic variable could reach outside of its package, as opposed to an 'our'-scoped variable. | 13:49 | |
PerlJam | great. I'm always ready to adjust my mental model if it's wrong :) | ||
moritz_ | it was in perl 5 | ||
our-scoped variables are just like my()-variables, except that there's also a way to access them from outside the package via the full name | |||
masak | conversely, an 'our'-scoped variable won't be visible if you're not in a block nested in a block with an 'our' declaration. | ||
moritz_ | just like my, exactly | 13:50 | |
masak | right. | ||
moritz_ | but visible from everywhere via the full name | ||
masak | the main difference is where they install the variable. | ||
moritz_ | (unless you're in an anonymous package...) | ||
masak | my:lexpad::our:package | ||
PerlJam | perhaps it's just a vocabulary thing. | ||
moritz_ | masak: our: package+lexpad | ||
masak | moritz_: oh, indeed. | ||
moritz_ | dynamic variables look into caller's scopes | ||
masak | PerlJam: how couldn't it be a vocabulary thing? :) | 13:51 | |
std: class A { has $foo } | 13:52 | ||
p6eval | std 30447: OUTPUT«ok 00:01 109m» | ||
masak | std: class A { has $*foo } | ||
p6eval | std 30447: OUTPUT«ok 00:01 107m» | ||
masak | std: class A { has $^foo } | ||
p6eval | std 30447: OUTPUT«ok 00:01 107m» | ||
masak | I don't know what those last two mean :) | ||
PerlJam | I'm not sure what you mean by "dynamic var" I think. | 13:53 | |
colomon wonders if STD just accepts any random non-alphanum character after the $.... ;) | |||
masak | seems to me 'has' more or less requires a '!' or a '.' twigil, if you're to use it for something useful. | ||
moritz_ | PerlJam: it's an overloaded term... I was refering to contextual variables, actually | ||
PerlJam | okay, then the universe is sensical :) | ||
masak | PerlJam: simply a variable that does lookup back along the call stack, as opposed to back along nested lexical scopes. | ||
moritz_ | but "dynamic" always means "follows the execution path" in Perl 6 | ||
masak | PerlJam: what do you mean by 'dynamic variable'? | 13:54 | |
PerlJam | masak: they need 2 things in my head: 1) follows the execution path and 2) live in a package's symbol table | 13:56 | |
moritz_ | well, to a degree you're right, I think | ||
PerlJam | our just installs a lexical alias for the shortname of the "package var" | ||
moritz_ | they do live in the PROCESS:: namespace, iirc | ||
masak | I've never thought of where they live, actually. | 13:57 | |
moritz_ | but it would be a perl5ism to think that only our-variables can be temp()ed | ||
PerlJam | honestly, I've only rarely even thought of temp() in Perl 6. :) | 13:58 | |
masak | S02 introduces $*foo as 'dynamically overridable global variable'. | 14:00 | |
14:04
takadonet left
|
|||
PerlJam | Hmm. Scope declarators have always implied a particular storage location to me. | 14:06 | |
different declarator, different storage location | |||
moritz_ tests rakudo with latest parrot and immutable_strings merged | 14:07 | ||
colomon | moritz_++ | ||
14:10
nsh joined
|
|||
moritz_ | doesn't work | 14:10 | |
Null PMC access in invoke() | |||
jnthn | schiese. :-( | 14:11 | |
moritz_: Where, and is there a backtrace? | |||
moritz_ | while compiling src/Perl6/Grammar.pm | ||
jnthn: yes, just a sec | |||
jnthn | oh damm, that's early. | ||
moritz_ | nopaste.snit.ch/20337 | 14:12 | |
masak | moritz_: looks like the one I had the other day. | ||
jnthn | :| | 14:13 | |
It's a crash in NQP then. | |||
my @words := HLL::Grammar::split_words($/, $past); | 14:22 | ||
In src/HLL/Actions.pm | |||
14:23
sundar joined
|
|||
jnthn | That may be the issue. methods used to accidentally the namespace due to a Parrot issue that got resolved. | 14:23 | |
I'm doing other bits ATM but maybe try it with HLL::Grammar.split_words($past); | 14:24 | ||
14:25
alester joined
|
|||
moritz_ | uhm, the files are full of ::method calls, if my ack-fu hasn't left me | 14:28 | |
14:28
takadonet joined
|
|||
moritz_ | not so bad as first though | 14:28 | |
some of them are actually subs, most are pir:: | 14:30 | ||
cognominal | hum, what is the standard way to convert a string to lower case in Perl 6? | 14:33 | |
moritz_ | lc | ||
14:34
charsbar left
|
|||
sundar | hi... In the Perl-5-to-6 tutorial in perlgeek.de, in 'Objects and Classes' it says "Public attributes are just private attributes with a public accessor. So for write access you always use the ! twigil." What does this mean? | 14:34 | |
14:34
charsbar joined
|
|||
moritz_ | sundar: it mean what is says... which part is not clear to you? | 14:34 | |
PerlJam | that last sentence he quoted doesn't make sufficient sense to em. | ||
er, me | |||
moritz_ | jnthn: I now have a scary "solution" that involves hand-editing generated stage0 code | 14:35 | |
PerlJam | (but it may just be because it's out of context) | ||
14:35
agentzh left
|
|||
moritz_ | and that gets us much further in the compilation stage | 14:35 | |
masak | I thought the same thing. | ||
sundar | later the code does "$x.c = 3; # ok". If I the last sentence means wat I thought, shouldn't it be $x!c = 3;? | ||
masak | you don't need ! for write access. | ||
moritz_ | you need, if it's not marked as 'is rw' | ||
masak | I wouldn't have put it that way. | 14:36 | |
sundar | moritz_: so you can write even to non-rw variables by using ! twigil? | ||
masak | it leads to the kind of confusion that sundar expresses above. | ||
moritz_ | sundar: from within the class, yes | ||
masak | sundar: inside the class, you can do $!c = 3. outside, you can't. | ||
sundar: if you want a writable public attribute, you should say 'is rw' at its declaration. | 14:37 | ||
sundar: and then $x.c = 3; when you want to modify it. | |||
moritz_ | ok, what should I write to make it clearer? | 14:38 | |
sundar | so if a public attribute is not 'is rw', I can use only $x!c = 3;, and not $x.c = 3; even inside the class? | ||
moritz_ | sundar: correct | 14:39 | |
because $x.c is actually a method call | |||
and not the attribute | |||
arnsholt takes a look at the NQP book | |||
14:40
iblechbot joined
|
|||
PerlJam | arnsholt: what NQP book? ;) | 14:40 | |
moritz_ | So if you want to change the attribute, you | ||
need to use the C<!> sigil (unless the accessor is marked C<is rw>). | |||
is that clearer? | |||
arnsholt | PerlJam: Indeed. Hopefully I can add a bit of stuff at least | 14:41 | |
PerlJam | arnsholt: I think it's still at the stage where anything would be an improvement (unless Pm committed a bunch of stuff lately and I didn't notice) | 14:42 | |
sundar | moritz_: yes, though 'change' may be replaced with 'modify' or 'write to'... | ||
masak | sundar: you can't use $x!c inside the class either to mean that. | ||
sundar: you'd just use $!c to mean the private attribute $!c on self. | |||
$!c would mean a call to a private method c in the class. | 14:43 | ||
arnsholt | PerlJam: No, he didn't =) | ||
masak | er, $x!c would mean that. | ||
14:44
ruoso left,
broquaint left
|
|||
sundar | masak: umm, actually I'm quite confused right now as to when something gets interpreted as a method call and when an attribute access. Any place that has a detailed explanation (is the Synopsis easy to read?)? | 14:45 | |
masak | I'd say S12 explains it quite well. | ||
moritz_ | sundar: anything with a . is a call to a public method | ||
14:45
broquaint joined
|
|||
moritz_ | both $.method and $obj.method | 14:46 | |
masak | except at that one point when it's declared :) | ||
arnsholt | There's only pmichaud working on the book so far, right? | ||
moritz_ | right ... :& | ||
arnsholt: last I looked there wasn't much in the book | |||
PerlJam | sundar: anything with a . is a method call | ||
arnsholt | moritz_: Yeah, there's just the preface | ||
moritz_ | $!thing is an attribute | ||
PerlJam is slow | |||
moritz_ | $thing!other is a call to a private method | ||
arnsholt | So, I figured I might be able to add some stuff as I hack on my Prolog project | ||
Another idea I just had was to look at the Perl 6 book and see if there's any interesting stuff I can nick from the parts about grammars =) | 14:47 | ||
PerlJam | arnsholt: the NQP book should have a good, small language example I think, but I'm not sure prolog is it :) | ||
sundar | So the only ways to access attributes are: $!thing inside the class, and $obj.thing outside the class _if_ thing is rw. is that right? | ||
arnsholt | PerlJam: Well, that was not the plan =) | 14:48 | |
PerlJam | I was reading about Io the other day and though it might make a good "learning language" for NQP | ||
moritz_ | sundar: if you're talking about write access, yes | ||
PerlJam | s/though/thought/ | ||
arnsholt | But seeing how I'm hacking using NQP, I might be able to add some more stuff | ||
masak | sundar: also, if it helps, I was mightly confused about exactly those aspects of Perl 6 until I had used them for a bit. | ||
arnsholt | NQP deserves more documentation | ||
moritz_ | sundar: please update the article you were reading... is it clearer now? | 14:49 | |
14:50
uniejo left
|
|||
sundar | moritz_: yes, that's much clearer. did you add the set_stuff method too now? | 14:52 | |
moritz_ | sundar: yes, I did | ||
sundar++ # feedback | |||
masak | moritz_++ # reacting constructively to 'this needs to be improved'-type comments | ||
moritz_ hates it when line numbers in error messages point to empty lines | 14:53 | ||
masak | in 22nd century computer science, we will probably discover that those lines aren't all empty space as we previously thought. | 14:54 | |
TimToady | .oO(Acme::Bleach) |
14:57 | |
frettled was about to make a stupid comment regarding masak++'s blog entry, but realized the stupidity and just barely managed to use ctrl+u instead of enter. :)@ | 14:58 | ||
masak | frettled: sounds interesting. :) | 14:59 | |
was it stupid-silly or stupid-stupid? | |||
frettled | stupid-stupid | ||
masak | ok :) | ||
frettled | I thought I had a better example for class-based variables, when I suddenly realized that the example was actually contrived; I'd never do it that way in real code, I'd do something cleverer. | 15:00 | |
But perhaps the right thing to do is to ask an experienced Java programmer: when TF do you _really_ need those class-based variables? | 15:01 | ||
masak | I figure the way I put it in that blog post will either give us a good suggestion for how to integrate class-based variables into Perl 6, or a non-contrived example of class-based variables, or both :) | ||
frettled | win-win | 15:02 | |
15:06
ruoso joined
15:07
ash_ joined
|
|||
masak | that's an interesting use of the word 'backported' in the release announcement. :) | 15:10 | |
'Most of the DateTime built-in type has been backported from the "alpha" branch' | |||
but the master branch is newer than the alpha branch...? :) | |||
jnthn | forwardported? :-) | 15:11 | |
moritz_ | we lost the functions by the merge, and ported them back | ||
masak | ported into the FUTURE! | ||
moritz_ | back to where we need them :-) | ||
ash_ | i know a good use of class variables that need to be inherited | ||
masak | moritz_: I think we should stick with your usage, because then 'backport' in the case of Perl 5 becomes entirely non-inflammatory again :P | ||
ash_: let's hear it. | 15:12 | ||
moritz_ | I think the perl point of view is that if you want something that's inherited, you use a method | ||
that can be an rw method | |||
masak | moritz_: yes, but that's still per-instance, then. | ||
moritz_ | unless it's a class method | 15:13 | |
masak | what's a class method? | ||
ash_ | In an ORM, they are useful for Single Table Inheritance objects, the base object needs to keep track of its children as well as its current list of table columns, so, children classes can modify their parents row definition | ||
there are other ways of doing that | |||
moritz_ | masak: one that doesn't access attributes (or calls methods that access attributes) | ||
ash_ | but an inherited class variable would make it a lot more simple | ||
masak | moritz_: ah, ok. | 15:14 | |
moritz_ | method foo is rw { my $x } | ||
masak | moritz_: yes, that'd be the way to do it, I think. | ||
moritz_ | now you have an inherited class "variable" | ||
masak | or better yet, `my $x; method foo is rw { $x }` :) | ||
moritz_ | only downside: it's also writable from the outside | ||
masak | aye. | ||
moritz_ | masak: or even better: method foo is rw { state $x } | 15:15 | |
masak | aye. | ||
unless you want to access the same var from other methods. | |||
moritz_ | then you're breaking encapsulation | ||
ash_ | ruby has 5 types of variable scope: global, local, instance, class (inherited), and class-instance (not inherited) | ||
they all seem pretty useful IMO | 15:16 | ||
15:16
am0c joined
|
|||
PerlJam | ash_: useful in general, or useful in the context of ruby (and all of the limitations of that language) ? | 15:18 | |
rurban | cygwin package for rakudo and parrot ready. now testing and uploading | ||
ash_ | useful from a OO perspective, they each serve a different purpose IMO in any OO language, if you don't have all of those then you'll probably find a way to add them, or something that acts similarly | 15:19 | |
masak | thing is, there's not really a 'class scope' in any other part of Perl 6. | ||
thanks to type objects and metaclasses, we seem to do fine without it. | |||
PerlJam | As long as Perl has facilities for handling whatever people want class vars for, then there will never be a need for class vars in Perl | 15:20 | |
ash_ | yeah, i have noticed that, it seems odd... thats one thing i keep having to wrap my mind around | ||
masak | recall that 'class' as a concept isn't really (no pun intended) first-class in Perl 6. | ||
ash_ | yea | ||
PerlJam | But as soon as 6.0.0 comes out and a wider audience starts using it, maybe someone will find a really good reason for class vars. | ||
if so, we can add them then :) | 15:21 | ||
masak | PerlJam: or just do like moritz_ suggested :) | ||
jnthn | rakudo: my $first-class = class { method omg { say "yes I am!" } }; $first-class.omg | ||
p6eval | rakudo 43f110: OUTPUT«yes I am!» | ||
masak | jnthn: :P | ||
jnthn: bad choice of words on my part. | |||
I meant that there's no Class type. | |||
15:22
REPLeffect joined
|
|||
jnthn | rakudo: my $x = "the answer" but role { method Numeric { 42 } }; say +$x; | 15:22 | |
p6eval | rakudo 43f110: OUTPUT«42» | ||
jnthn | \o/ | ||
masak: No, true. There is a ClassHOW though. :-) | |||
masak | jnthn: yes, but when types start screaming at me, I kinda zone out. | ||
jnthn | WHY? | 15:23 | |
masak | ... | ||
jnthn | :-) | ||
slavik | google responded to my resume :D | ||
jnthn | Actually .WHY is only conjectural at the moment, iirc. | ||
PerlJam | WHAT | ||
slavik | don't know why anyone here would care | ||
ash_ | google is a great company to work for (so i hear, i don't know from personal experience) | 15:24 | |
masak | jnthn: S26 mentions it. | ||
TimToady | well, if you move to Mountain View, it could raise the value of my termite-ridden house. | ||
slavik | TimToady: I am staying in NYC :P | 15:25 | |
TimToady | funny how ridden means the opposite of rid... | ||
jnthn | .oO( ridded? ) |
||
slavik | TimToady: I watched your google tech talk | ||
TimToady | those were the early days of STD | ||
slavik | what surprised me was that at 20min (out of 60) you somehow realised you were running short on time | ||
TimToady: it's still a good insight into the idea behind perl6 :) | 15:26 | ||
I actually started wondering how easy it would be in embed parrot/rakudo/perl6 into C and such programs | |||
TimToady | at some point there was work on making parrot embeddable, but I don't know where that went | 15:28 | |
might've bitrotted by now | 15:29 | ||
15:29
renormalist left,
renormalist joined
|
|||
jnthn | I read that somebody recently did get it embeded into...Postgres, iirc. | 15:29 | |
TimToady | and mod_parrot was a similar deal | ||
slavik | which reminds me ... who was working on mod_parrot? | ||
^^ | |||
bah! | 15:30 | ||
TimToady wins :) | |||
slavik | rakudo shouldn't ship without mod_parrot :) | ||
slavik discovered mason | |||
PerlJam | slavik: but without mod_perl6 is okay? | ||
slavik | PerlJam: no! | ||
PerlJam | :) | ||
slavik | mod_parrot implies Perl6 | 15:31 | |
PerlJam | obviously not to me | ||
masak | Rakudo Star might ship with it. Rakudo proper will not. | ||
jnthn | Right. | ||
PerlJam | heh ... though I just realized (thanks masak++) that when slavik said "rakudo", I was thinking "Rakudo Star" | 15:32 | |
15:32
madalu joined
|
|||
slavik | rakudo star? | 15:32 | |
masak | Rakudo StarrrrRRRR! | ||
PerlJam | masak: that'll be the september release | 15:33 | |
masak | :P | ||
slavik: use.perl.org/~pmichaud/journal/39411 | |||
ash_ | i do think moritz_++ suggestion on using a method to simulate class variables seems fine by me | 15:34 | |
masak | so now it's April, and the April release is out. I guess I've been wondering many times how it would feel to be at this point. | 15:35 | |
ash_ | seems like an easy way to get the appropriate behavior | ||
masak | one thing is for sure: there are still things to do before the R* release. | ||
PerlJam | masak: anti-climactic? | ||
masak | PerlJam: well, not really. | ||
there have been some exciting improvement thanks to nqp-rx. | |||
things we couldn't do before. | |||
but there's still a lot to do just to get back to what alpha does well. | 15:36 | ||
and to making all our old examples work, the app cheese, the advent code, etc. | |||
and the book still needs lots of love. | |||
it's sort of "better than I feared but still far from ideal" feeling, I guess. | 15:37 | ||
jnthn | We've come a long way closer to what alpha could do during the last month. I'm comfortable we can do at least as well over the next month too. | 15:38 | |
PerlJam | I'm happy the tests are coming back so well. I thought we'd be a long time living up to alpha's standard | 15:39 | |
colomon | If we make that much progress again, we will have surpassed alpha by a good bit. | ||
masak | what needs to happen for us to have named enums back? | ||
PerlJam | (I mean, I knew we'd have lots of features, but many of them would be new while the old ones we broke would languish) | 15:40 | |
CokeBot9000 | mod_parrot is jeff Horwitz. | ||
jnthn | masak: Somebody to implement them. | 15:41 | |
15:41
ash_ left
|
|||
masak | jnthn: duh. could we look sometime at what the blocker actually was? | 15:41 | |
jnthn | masak: Well, I know what the blocker in the approach we tried was. | 15:42 | |
masak | I had it explained to me, but since I didn't fully grok it, it fell back out of my skull. | ||
jnthn | masak: But I'm not especially hurrying to work on named enums themselves given that even yesterday there was changes that would probably have an impact on them. | ||
pmichaud | masak: did you see my readline example in the backscroll? | ||
rurban | Is this now the "Rakudo Star" release? | 15:43 | |
pmichaud | rurban: No. And Rakudo Star has been delayed by a few weeks due to personal issues on my part. | ||
rurban | I see. | ||
slavik | if Rakudo comes on xmas, then Rakudo* will be easter? | ||
masak | pmichaud: yes; thank you very much. | 15:44 | |
[particle] | rurban: rakudo star will be a set of releases on a different cycle, not the thursday following the third tuesday. | ||
masak | slavik: Rakudo comes on xmas, but only because it's released every month :) | ||
rurban | Shoudl I write this into my release announcement :) | ||
slavik | masak: so we get xmas every month? SWEET! | ||
PerlJam | christmas every month! | ||
pmichaud | (spending 19 nights in 4 different hospitals in march was Not Fun. | ||
15:44
k23z__ joined
|
|||
jnthn | :-( | 15:45 | |
[particle] | every day will be xmas after perl 6 is released | ||
audreyt++ | |||
jnthn | hugme: hug pmichaud | ||
hugme hugs pmichaud and blushes | |||
masak | [particle]: originally, that quote is from spinclad++, I think. | ||
k23z__ | Perl in a nutshell Perl, in a Nutshell | ||
Perl, in a Nutshellwww.youtube.com/watch?v=Mxk5RMQF6Js | |||
rurban | So I'm writing about Rakuda Star: "It's not this April release though, most likely the next one" | 15:47 | |
masak | or June. | ||
PerlJam | I wouldn't even say that | ||
pmichaud | Rakudo Star isn't *any* of the existing releases. | ||
masak | rurban: the initial estimate was 2010Q2. | ||
pmichaud | It's a distribution release instead of a compiler release. | ||
rurban | I was pointing to use.perl.org/~pmichaud/journal/39411 | ||
[particle] | ah, spinclad++ | 15:48 | |
PerlJam | rurban: for what are you writing? | ||
rurban | The cygwin announcement | ||
[particle] | rurban: it's still targetted for 2010Q2 | ||
rurban | Ok | ||
pmichaud | rurban: see also the discussion about R* at irclog.perlgeek.de/perl6/2010-04-22#i_2251615 | ||
today's release was never intended to be R* on its own. | 15:49 | ||
I had originally been targeting April 29 for R* release. | |||
I think jnthn++ and I have the consensus that R* will likely be sometime in June | |||
rurban | I will not get rakudo* as official package name | 15:50 | |
pmichaud | rakudo-star works. | ||
rurban | rakudo-star-1.0 maybe? | ||
pmichaud | I'd probably like to avoid the 1.0 -- maybe 2010.06 | ||
1.0 sounds too much like we're saying this is a production-ready release. | |||
(at least to me) | |||
also, others see 1.0 as having that meaning -- e.g. en.wikipedia.org/wiki/Software_vers..._milestone | 15:52 | ||
"In contrast to this, the free-software community tends to use version 1.0 as a major milestone, indicating that the software is "complete", that it has all major features, and is considered reliable enough for general release." | |||
Rakudo Star definitely doesn't meet that criteria. | |||
smash_ | rakudo-star-0.1 ? | 15:53 | |
sundar | pmichaud: yes, to me too, and even just Rakudo Star might give a wrong impression. Your dated idea might be good and necessary. | ||
pmichaud | I like dated releases and simple incrementing numbers. | ||
sundar | *dated idea => idea of using dates | ||
pmichaud | Dated releases are like automobiles -- if I tell you that I have a 2000 Volkswagen, that says a lot. | ||
Numbered releases provide sequence -- if I say it's the fifth model in the sequence, that's also saying a lot. | 15:54 | ||
jnthn | .oO( If it was a 2010 Toyota, it'd not responed to ^C ) |
||
PerlJam | pmichaud: by contrast, saying this is the 28th release of Rakudo, doesn't quite have the same impact :) | 15:55 | |
pmichaud | PerlJam: thus I give both. | ||
the sequence numbers give an idea of the number of releases between two events | 15:56 | ||
for example, how many releases were there between Perl 5.6 and Perl 5.8 ? | |||
can't tell by looking at those numbers | |||
when was Perl 5.6 released? Can't tell by looking at the number. | |||
How old is Perl 5.6? can't tell by looking at the number. | 15:57 | ||
slavik | since everyone here is a better language designer than I am, does Python's GIL make sense? | ||
my opinion is that it doesn't | |||
PerlJam | The other day, on another channel, some people were complaining about Perl 6 vaporware and I pointed out that there's a compiler release every month. That was unsatisfying to them. I wonder if any such timed releases would be so. (say R* does a release every 6 months, "but is it *ready*?" will still be the question on everyone's mind) | ||
pmichaud | "ready for what?" | ||
Is Perl 5.12 ready? | |||
TimToady | WHY CAN'T YOU GUYS GIVE A STRAIGHT ANSWER!?!?!? :) | ||
PerlJam | exactly :) | 15:58 | |
pmichaud | TimToady: exactly :) | ||
actually, we could start giving a straight answer | |||
slavik | TimToady: that question sounds/reads weird coming from you ... | ||
PerlJam | but 5.12 doesn't have the vaporware stigma to overcome. | ||
slavik | pmichaud: xmas? | ||
TimToady | slavik: we don't like GILs here | ||
pmichaud | no, we could say "It's ready for limited purposes, and it's up to you to decide if it meets your needs or not." | ||
That's a reasonably straight answer; it's certainly not the "ready for what?" question. | 15:59 | ||
slavik | TimToady: I agree :) but wanted to ask someone who actually designed a language :) | ||
PerlJam | pmichaud: yeah, I tried that but got accused of claiming Perl 6 was production-ready when it is not. | ||
TimToady | I'd much rather go as far as we can in the direction of not needing locks in the first place | ||
15:59
justatheory joined
|
|||
pmichaud | I don't know if TimToady qualifies as a language designer -- I don't think he has the necessary University background. </perlmonks> | 16:00 | |
TimToady | well, maybe not as far as Erlang... | ||
16:00
justatheory left
|
|||
pmichaud is still drafting his reply post to that. | 16:00 | ||
slavik | pmichaud: TimToady is probably more qualified since he's a languist ;) | ||
takadonet | pmichaud: which post? | 16:01 | |
pmichaud | slavik: I was parroting a post from perlmonks | ||
slavik | oh | ||
pmichaud | takadonet: www.perlmonks.org/?node_id=835737 | ||
takadonet | pmichaud: thanks | ||
pmichaud | I'm also quite enamored of the poster's assertion that TimToady is somehow an "open source rookie". :) | 16:02 | |
rurban | Ok, I will not mention rakudo-star yet | ||
pmichaud | or at least not a <em>real</em> compiler person. | ||
rurban: I plan to do a post explaining the status of Rakudo Star in the next day or so. | 16:03 | ||
Since I know a lot of people will say "it's April, what happened to Rakudo Star?" | |||
rurban | ok, thanks. we just have to plan a new name in advance | ||
16:04
justatheory joined
|
|||
pmichaud | I was thinking of also putting a paragraph in the release announcement for #28 that said "This is not the Rakudo Star release", but it got out before I could write it up this morning. :-) | 16:04 | |
slavik | Rakudo ** ? | 16:05 | |
16:05
justatheory left,
justatheory joined
|
|||
pmichaud | Entirely my fault there. | 16:05 | |
moritz_ | pmichaud: I actually thought about the same thing | 16:06 | |
pmichaud: and then decided that announcement clearly says what it is for | |||
cognominal | in a sense, the complainers miss the point. It does not take only 10 years to release Perl 6. It took more than 20 years for TimToady to get the Perl syntax right. And something as futile as paint color for most people. "@jamesiry If the main diff between Scala and Clojure is syntax then the main diff between an F-22 Raptor and Boeing 777 is paint color." | ||
moritz_ | a development release | ||
cognominal | *And for something | 16:07 | |
pmichaud | moritz_: yes, but I think it might've helped to also make it clear "up front" that "This is not the Rakudo Star release." so that rurban's question doesn't come up as easily. | ||
maybe I'll draft my message as a followup announcement. | 16:08 | ||
rurban | They'll ask me first anyway. | ||
moritz_ | pmichaud: you're also welcome to update the release announcment on rakudo.org | ||
pmichaud | well, I mean others who may be also looking to download the April release because "Rakudo Star comes out in April and this is the April release." | 16:09 | |
I had hoped to use March and April to set the stage and make the differences clearer, but failed on that. | |||
rurban | Ok, I'm releasing now. | ||
moritz_ | pmichaud: I have a patch for nqp-rx to build on latest parrot, just adding :nsentry to a method (once in the source, once in s0) | 16:12 | |
pmichaud: should I push? | |||
pmichaud | moritz_: I thought I already fixed that in nqp-rx. | ||
can I see the diff? | |||
or tell me which :method gets the :nsentry ? | 16:13 | ||
lisppaste3 | moritz_ pasted "fix nqp-rx" at paste.lisp.org/display/98146 | ||
[particle] | from backscroll... "releases between 5.6 and 5.8" isn't a good measure | ||
there were 5.6 releases *after* 5.8 | |||
rurban | BTW: rakudo-1.0 will be numerically lower than rakudo-2004, so we will have to make extra hints to sort it correctly (current, prev) | ||
pmichaud | rurban: I don't think there will ever be a rakudo-1.0. See my comment above. | 16:14 | |
masak | I think we should all learn to think of Perl 6 more like this: steveblank.com/2010/04/22/turning-o...ion-field/ | ||
and Rakudo. | |||
pmichaud | I don't ever plan to go to major+minor release numbers. | ||
rurban | Ok. That's what I got from the version number discussion from two years ago also | 16:15 | |
pmichaud | nor do I necessarily think there will be just one "rakudo" | ||
16:15
xalbo joined
|
|||
pmichaud | rurban: was that the version number discussion about Parrot, perchance? :-) | 16:15 | |
16:15
[particle] is now known as tpf|[particle]
|
|||
rurban | I forgot everything. Something about x.3 or x.4 being the middle of the year stable releases. Totally logic | 16:16 | |
16:17
cdarroch joined,
cdarroch left,
cdarroch joined
|
|||
pmichaud | That's Parrot. | 16:17 | |
I've never liked that scheme. | |||
Not only that, but it's never been self-consistent. Parrot's supported releases thus far are 1.0, 1.4, 2.0, and 2.3, and the next is 2.6. | 16:18 | ||
tpf|[particle] | i don't want to hear it. the 1.* release numbering was so wrong, it made me cry. | ||
moritz_ | well, the stable releases switched from twice-a-year to quaterly | ||
pmichaud | and they aren't "stable releases" | ||
moritz_ | pmichaud: have you seen the patch? (nqp-rx) | ||
pmichaud | which is *another* problem. | ||
moritz_ | right, "supported" | ||
pmichaud | moritz_: yes. Apply it. | ||
rurban | I saw "supported" | ||
pmichaud | The only thing that Parrot's release numbers tell you is when a new year begins. | 16:19 | |
moritz_ | pmichaud: now if you tell me how to update the copy of nqp-rx shipped with parrot, I'll do it too, and document it | ||
pmichaud | moritz_: actually, you only need to update the hll-grammar.pir file. the -s0 file is generated. | ||
anyway, the steps would be: | 16:20 | ||
moritz_ | pmichaud: I needed to update the -s0 file, otherwise the compilate failed | ||
that's what boostrapping gives you, if the underlying platform changes :-) | |||
pmichaud | moritz_: oh, I see. The trick there would be to build nqp-rx against 2.3.0 with the :nsentry flag, update the -s0 file using that, and then rebuild using trunk. | ||
moritz_ | right | ||
pmichaud | (since 2.3.0 supported :nsentry but didn't honor it) | ||
anyway, the steps are | 16:21 | ||
(1) patch nqp-rx, make test | |||
(2) make bootstrap-files, make test | |||
(3) commit the non-bootstrap files | |||
(4) commit the bootstrap files | |||
(5) copy the src/stage0 files from nqp-rx repo into the parrot repo | 16:22 | ||
(6) test parrot, commit the src/stage0 files in the parrot repo | |||
(done) | |||
moritz_ | thanks | ||
pmichaud | I tend to want to do the commits of the stage0 (bootstrap) differences as separate commits | ||
moritz_ | understandable | 16:23 | |
pmichaud | so that it's easy to see what changed without being swamped by the large number of changes in the generated files | ||
anyway, the "transfer to parrot" is always simply copying the src/stage0/*.pir files into the appropriate place of the parrot repo | |||
(I guess we need to copy the tests too, perhaps) | |||
moritz_ | I'll put these steps into a new file in nqp-rx | ||
pmichaud | great, thanks. | ||
PerlJam | moritz++ | ||
moritz_ | adding to the README feels wrong, most users don't care about it | ||
pmichaud | right. | ||
it can go in docs/ | 16:24 | ||
(and it's okay to create docs/ :-) | |||
dalek | p-rx: 779f443 | moritz++ | (3 files): bump PARROT_REVISION and enable build |
||
16:24
ash_ joined
16:28
CokeBot9000 is now known as TPF|Coke
16:32
finanalyst joined,
masak left,
finanalyst left
16:34
molaf left
16:35
TPF|Coke is now known as tpf|Coke
16:36
Xaero left
|
|||
dalek | p-rx: 515d267 | moritz++ | src/stage0/ (4 files): update boostrap |
16:41 | |
p-rx: d823fc2 | moritz++ | docs/bootstrapping.pod: [docs] bootstrapping guide |
|||
moritz_ | jnthn++ # identifying the problem in nqp-rx | ||
pmichaud | we should eliminate that :nsentry entirely, btw | 16:43 | |
jnthn | moritz_: Does Rakudo build on latest Parrot with this fix? | ||
pmichaud | something is doing a global namespace lookup that shouldn't be | ||
moritz_ | jnthn: nope, but it gets much further | ||
jnthn | I suspect an s/'::'/./ could do it in this case. | ||
lisppaste3 | moritz_ pasted "rakudo on parrot HEAD for jnthn++" at paste.lisp.org/display/98148 | ||
moritz_ | it gets up to the point where it compiles the setting | 16:44 | |
jnthn | Ouch. | ||
That looks...bad. | |||
moritz_ | (that's with immutable_strings merged into master) | 16:48 | |
16:52
sundar left
|
|||
jnthn afk for a bit | 16:55 | ||
17:00
dakkar left
17:04
ash_ left
17:24
lihaitao joined,
betterworld joined
|
|||
moritz_ | rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.perl.say | 17:25 | |
p6eval | rakudo 43f110: OUTPUT«{"1" => (2, 3, 4)}» | ||
17:29
envi^home left
|
|||
pmichaud | here's my draft response to the perlmonks thread -- comments welcome: pmichaud.com/sandbox/response.txt | 17:37 | |
17:37
pyrimidine joined
|
|||
pmichaud | It still needs formatting and links added, but I have to go fetch lunch, so I'll work on that when I get back | 17:37 | |
comments and suggestions welcomed. | |||
pugssvn | r30448 | moritz++ | [t/spec] test Seq.perl | 17:38 | |
pmichaud | TimToady: I'd be specifically interested in any corrections if I've distorted reality surrounding your work on the grammar | 17:41 | |
afk, lunch retrieval | |||
17:43
sundar joined
|
|||
moritz_ | pmichaud++ great response | 17:43 | |
PerlJam | The very last sentence evoked a TED-prize feel for me :) | 17:47 | |
BTW has anyone seen Randal's presentation at Texas LinuxFest 2010? I almost thought Larry had paid Randal to mention him so many times :) | 17:50 | ||
mberends | pmichaud++. But I would rather say "building on an unfinished toolset like Parrot" | ||
"the problems without Perl 6" makes no sense, should that be "with"? | 17:51 | ||
colomon | pmichaud++ | 17:52 | |
pyrimidine | (backlogging): hell, even I have a PhD. Molecular Biology, yes, but still... | ||
tpf|[particle] | pmichaud++, but the last sentence in yoru postscript has a dangling modifier | 17:55 | |
17:55
pmurias left
|
|||
tpf|[particle] | better as "even the ones I disagree with or don't find interesting" | 17:55 | |
PerlJam | pmichaud: The anonymonk is suffering a delusion that you don't quite excoriate him for. "You get people skilled for this exact task!" As if a *volunteer* project can just "get" whomever they choose. It's *good luck* that we have the skilled people that we do have. | 17:57 | |
mberends | "its [STD's] implementation is considered part of the spec." is a counterproductive claim as the P6 design process aims to get away from that aspect of P5. It also only borderline true, the Synopses should be the entire spec. | 17:58 | |
moritz_ | mberends: you can't modify the grammar of different implementations in a consistent way without using the same grammar in all of them | 17:59 | |
so STD is spec | |||
PerlJam | mberends: we're moving away from compiler implementation == spec, but the grammar implementation is another matter. :) | 18:00 | |
jnthn | pmichaud++ # very nicely written! | ||
mberends: Many programming language specs include a formal grammar. Perl 6's just happens to be executable too. :-) | 18:02 | ||
18:03
Grrrr left,
mberends left,
colomon left,
PerlJam left,
pnu left,
zibri left,
moritz_ left,
spinclad left
18:08
Grrrr joined,
mberends joined,
colomon joined,
bbkr joined,
LionMadeOfLions joined,
tewk joined,
dhoss joined,
PerlJam joined,
pnu joined,
zibri joined,
moritz_ joined,
card.freenode.net sets mode: +oooo mberends colomon PerlJam moritz_,
spinclad joined
18:10
lihaitao left
|
|||
pmichaud | mberends: (std as spec) actually, I'm paraphrasing TimToady++ there. He's often commented that STD should be considered spec as much as the synopses are. | 18:11 | |
what we have to be careful of us to not let STD look too much like a complete reference implementation then :) | |||
18:12
smash_ left
|
|||
pmichaud | PerlJam: I actually don't want to excoriate Anonymous Monk for that particular point. The truth is, I can't really imagine that we'd get a better set of people to work on this project than we already have, volunteer or otherwise. | 18:13 | |
TimToady | well, you might point out that my University degree was in "Natural and Artificial Languages" | ||
pmichaud | If I was working on Perl 6, who would I want to be working on it? Larry Wall? Check. Damian Conway? Check. Allison Randal? Check. Jonathan Worthington? Check. | 18:14 | |
TimToady | pmichaud: ^^ | ||
pmichaud | TimToady: okay, thanks. What degree? | 18:15 | |
18:15
meppl left
|
|||
pmichaud | Bachelor's, Ph.D, ...? | 18:15 | |
TimToady | BA | ||
pmichaud | Okay. | ||
TimToady | also two years graduate work in Linguistics | ||
pmichaud | okay | ||
TimToady | at U.C. Berkeley | 18:16 | |
undergrad from Seattle Pacific University | |||
pmichaud | would you consider your language design experience to flow directly from your academic experience? | ||
18:16
hercynium left
|
|||
TimToady | among other things | 18:16 | |
18:16
justatheory left
|
|||
pyrimidine | pmichaud: Not sure if this was mentioned, but I think that needs a full blog post. Shouldn't be buried as a response to some troll. | 18:16 | |
pmichaud | pyrimidine: it's there in the response. :) | ||
TimToady | certainly I studied the Dragon Book :) | ||
pmichaud | pyrimidine: "And I don't want my response buried in a thread somewhere, so it | 18:17 | |
gets its own post." | |||
pyrimidine | yes | ||
pmichaud | I haven't decided whether the post should go to perlmonks or use.perl | ||
or somewhere else | |||
pyrimidine | blogs.perl? | ||
PerlJam | pmichaud: both! | ||
pyrimidine | I vote both as well. | 18:18 | |
pmichaud | well, I prefer one with links from the others, I think. | ||
I want to revise the concluding paragraph a bit. | |||
pyrimidine | or, at least post to use.perl, point the troll to that (hopefully s/he can follow links) | 18:19 | |
pmichaud | I'm really not after the troll. | ||
I'm after those who think that any of what the troll is saying makes sense. | |||
pyrimidine | true | ||
pmichaud | The troll himself/herself really needs some serious hugs. | ||
TimToady | I agree on the s/without/with/ | ||
18:20
alester left
18:21
justatheory joined
|
|||
pmichaud misses the without/with reference. | 18:21 | ||
PerlJam | what's it called when someone says "You just need to do ..." ? There's a whole lot of hand-waving behind that "just". The anonymonk and his ilk still won't get that. | ||
pmichaud | ...because anonymonk thinks we're overly complexifying what (to him) seems like a simple thing to do. | 18:22 | |
however, believe me, if anyone had a simple answer to Perl 6 development, I suspect they would've done it by now. | |||
Imagine the rewards and fame that would accrue! | |||
diakopter | heh. | 18:23 | |
PerlJam | pmichaud: s/without/with/ on like the 8th paragraph towards the end .... "the problems without Perl 6" | 18:24 | |
TimToady | re "without/with", see mberends's remarks at irclog.perlgeek.de/perl6/2010-04-22#i_2253402 | ||
pmichaud | thanks | ||
my ability to type lately has become much less precise. | 18:25 | ||
18:25
ash__ joined
|
|||
PerlJam | pmichaud: you're just getting old ;> | 18:25 | |
pmichaud | I'm hoping it's not a symptom of a growing inability to think as well :) | ||
18:25
rv2733 left
18:27
pyrimidine left,
pyrimidine joined
|
|||
diakopter | TimToady: yeah but, you could label your own degree program, right? :P | 18:28 | |
w | |||
: | |||
hm. | |||
TimToady | the Natural and Artificial Languages was a self-designed major, yes | ||
and though it was Seattle Pacific College when I started, it was Seattle Pacific University by the time I graduated :) | 18:30 | ||
pmichaud | heh | ||
diakopter looks around in vain for masak | |||
TimToady | so I have a University education :) | ||
not even counting Cal (and UCLA) | |||
pmichaud | all of the universities I graduate from changed their names after I left. | ||
*graduated | 18:31 | ||
18:31
justatheory left
|
|||
pmichaud | and not even by a little bit | 18:31 | |
diakopter wonders when they'll rename themselves Multiversities to reflect the relativism of Truth. | |||
pmichaud | Corpus Christi State University -> Texas A&M University-Corpus Christi | ||
k23z__ | it's a trap | ||
pmichaud | University of Southwester Louisiana -> University of Louisiana at Lafayette | ||
18:31
ash__ left
|
|||
diakopter | or Pluraversities, I guess | 18:32 | |
or Antiversities | 18:33 | ||
PerlJam | "local maxima" :) | 18:34 | |
(yes, it's a long windy thought-path from riffing on universities to maxima/minima) | 18:35 | ||
pmichaud | I've never known PerlJam to be long winded. :-) | 18:36 | |
TimToady | "sufficiently enough" is kinda redundant | ||
pmichaud | now "sufficiently" | 18:37 | |
TimToady | you misspelled Artifical | ||
pmichaud | I just updated the academic credentials paragraph and fixed without->with ; feel free to reload | ||
Fixed Artificial | 18:38 | ||
TimToady | you might be overusing the word "speculations" a bit | 18:39 | |
pmichaud | yes, I do that sometimes -- get latched on a word and reuse it a lot | ||
speculations only used twice now | 18:41 | ||
pugssvn | r30449 | moritz++ | [t/spec] define that Rat.new() returns a kind of 0 | ||
TimToady | after, "can be done by a few | ||
dedicated undergraduates. | |||
you might add "We already have lots of those kinds of languages." | 18:42 | ||
pmichaud | can I quote you on that? ;-) | ||
TimToady | "Sure!" | ||
moritz_ | quoting is quite versatile in Perl 6 :-) | ||
takadonet | never seen so much effort put into a post | ||
tpf|[particle] | texas-quote him! | ||
pmichaud | added the quote | 18:43 | |
oh, I'll do it as a link to the log here | |||
TimToady | s/kind/kinds/ | ||
pmichaud | updated (changed the quote attribution) | ||
takadonet: oh, from my perspective, this is actually a quickly-put-together post | 18:44 | ||
relative to the time I've taken on some others | |||
TimToady | s/I suspect that the anonymous critics/I suspet that some of the anonymous critics/ | 18:45 | |
tpf|[particle] | how long did the treatise on microwaving grapes take? | ||
TimToady | you just got through saying that some of the anonymous critics were trying to discredit Pelr | 18:46 | |
Perl | |||
pmichaud | I'm still reworking the conclusion altogether | ||
so that last paragraph before the signature is going to be redone pretty significantly | 18:47 | ||
but I need a walk first | |||
keep suggestions and comments coming :) | |||
bbiab | |||
18:49
stephenlb joined
18:50
sjn joined
|
|||
pugssvn | r30450 | moritz++ | [t/spec] test that you can call a method all(), and access attributes in there (RT #69202) | 18:50 | |
sundar | degrees and backgrounds | 18:53 | |
in language theory and practice. | |||
oops.. premature paste. :) | |||
moritz_ | std: /\G/ | 18:54 | |
p6eval | std 30448: OUTPUT«===SORRY!===Unrecognized regex backslash sequence at /tmp/1R665RzhNw line 1:------> /\⏏G/Check failedFAILED 00:01 110m» | ||
tpf|Coke | pmichaud++ | ||
diakopter | TimToady: it's the daw-PELR effect :P | ||
sundar | pmichaud: a few minor ones: "degrees and backgrounds in language theory and practice" might be better phrased "degrees and backgrounds in languages theory and implementation" | 18:56 | |
diakopter | or pragmatics | ||
sundar | pmichaud: "Or, looking at it another way if you feel [...]" is easier to understand with a comma after "way" | 18:57 | |
19:00
justatheory joined
|
|||
sundar | pmichaud: in fact I don't see what purpose that sentence serves. | 19:02 | |
k23z__ | P vs. NP the epic battle www.youtube.com/watch?v=HjUEEHTyhdA | ||
sundar | pmichaud: and a very minor one: "<em>that we're already doing</em>." would IMHO look better with an exclamation at the end. | 19:03 | |
sundar thinks he might some day grow up to be a proofreader! | 19:04 | ||
moritz_ thinks that exclamation marks don't enhance credibility - rather the opposite | 19:05 | ||
PerlJam wonders how punctuation affects credibility at all except perhaps in a negative fashion :) | 19:06 | ||
moritz_ just found out that rakudo probably passes ~250 tests more than noted in the release announcment | 19:08 | ||
colomon | moritz_: no way! | ||
moritz_ | I've used tools/update_passing_test_data.pl to find passing test files | ||
19:09
justatheory left
|
|||
pmichaud | (that we're already doing) I'm going to link to an example. | 19:09 | |
I think it's better with the period. | |||
moritz_ | and it seems nobody looked that tool very closely in the last few months | ||
it started parrot -G perl6.pbc | |||
so... removing that -G, and re-running, revealed that two of the S05-mass files pass | 19:10 | ||
(I always run that tool with a ulimit set, otherwise it occasionally kills the computer) | |||
colomon | huh. is there any way to use it to detect test files that work for a bit, then crash? I've found that many of those only require a skip or two to get working.... | 19:11 | |
moritz_ | colomon: same tool, more or less | ||
colomon: it shows you how many tests pass before crashing | 19:12 | ||
colomon | moritz_: sweet | ||
19:13
astrojp joined
|
|||
moritz_ | t/spec/S32-list/map.t is such a candidate | 19:13 | |
oh, I don't like that file | |||
far too many tests for far too few features | |||
colomon | yeah, it's in the back of my head as trouble | ||
jnthn back after $cooking-adventure | 19:14 | ||
colomon | moritz_: if you skip the block that's crashing, map.t finishes with 16 errors. | 19:16 | |
moritz_ | colomon: I'm currently re-working the whole test file | ||
colomon: currently it's 6 tests for a 5 elements return list | |||
I'm changing that to 2 each | 19:17 | ||
colomon | heh, I bet we pass more of it than alpha did when you're done. | ||
moritz_ | one length, one @result.join(', '); | ||
and the official cout will be much lower | |||
colomon | like on series. | ||
only with a length check too. | |||
nice. | |||
moritz_ | and the test descriptions just plain suck | 19:19 | |
colomon looks forward to seeing a fixed version. :) | 19:22 | ||
moritz_ | rakudo: my @list = 1 .. 5; say map {; $_ => 1}, @list | 19:24 | |
p6eval | rakudo 43f110: OUTPUT«No candidates found to invokecurrent instr.: 'map' pc 345955 (src/gen/core.pir:19741)» | ||
moritz_ | why doesn't this list the candidates? | ||
rakudo: say ({; $_ => 1}).WHAT | |||
p6eval | rakudo 43f110: OUTPUT«Hash()» | ||
moritz_ | looks like a bug to me | 19:25 | |
colomon | yup. | ||
rakudo: my @list = 1 .. 5; say map {say 'a'; $_ => 1}, @list | |||
p6eval | rakudo 43f110: OUTPUT«aaaaa1 12 13 14 15 1» | ||
colomon | moritz_++ | 19:26 | |
pmichaud | I've redone the paragraphs towards the end, changes start with "Personally, I'm impressed and honored..." | 19:29 | |
moritz_ | most errors are non-sufficient Parcel flattening, afaict | ||
rakudo: say +(1, 2).map: {$_, $_} | 19:30 | ||
p6eval | rakudo 43f110: OUTPUT«2» | ||
moritz_ | should be 4 | ||
colomon | right, I ran into that while doing $work the other day. | 19:31 | |
pmichaud | more minor updates | ||
19:32
molaf joined
|
|||
pugssvn | r30451 | moritz++ | [t/spec] rework map.t | 19:32 | |
r30451 | | |||
r30451 | Replace excessive testing of elements with a single test for | |||
r30451 | @result.join($sep). Also adapt Rakudo fudging to current state-of-the-art. | |||
19:33
tri1 joined
|
|||
colomon | pmichaud: can you repost the url? | 19:33 | |
pmichaud | pmichaud.com/sandbox/response.txt | ||
(about to become response.html) | |||
colomon | danke. | ||
snarkyboojum | type here? "the community, And" | ||
typo even :) | 19:34 | ||
pmichaud | reload -- you probably caught it in the middle of a save | ||
oh wait, comma instead of period. | |||
fixed. | |||
snarkyboojum | :) | ||
PerlJam | pmichaud++ the last two paragraphs are gold. | ||
pmichaud | Platinum is the metal of choice around our house lately. Although I think Paula may be sick of it. :-) | 19:35 | |
dalek | kudo: eb0d263 | moritz++ | tools/update_passing_test_data.pl: [tools] run parrot without -G |
19:36 | |
kudo: 7d43ee0 | moritz++ | t/spectest.data: 4 more passing test files |
|||
pmichaud | (sorry, medical joke for those who didn't catch it) | ||
colomon | pmichaud: figured. | 19:37 | |
pmichaud | en.wikipedia.org/wiki/Carboplatin # platinum reference | ||
colomon | pmichaud++ # still a great post | 19:40 | |
snarkyboojum | might have a newline between goal and s at "that our goal" | 19:41 | |
pmichaud | snarkyboojum: thanks, fixed | ||
pugssvn | r30452 | moritz++ | [t/spec] calling a named parameter with empty name | 19:44 | |
mberends | alpha: my @a=" aa "," b"; my @b=@a.map(*.trim);@b.join(":").say | ||
p6eval | alpha 30e0ed: OUTPUT«aa:b» | ||
mberends | rakudo: my @a=" aa "," b"; my @b=@a.map(*.trim);@b.join(":").say | ||
p6eval | rakudo 43f110: OUTPUT«Null PMC access in find_method('params')current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)» | ||
moritz_ | rakudo: my @a=" aa "," b"; my @b=@a.map(*.trim); | 19:45 | |
p6eval | rakudo 43f110: OUTPUT«Null PMC access in find_method('params')current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)» | ||
moritz_ | rakudo *.trim | ||
rakudo: *.trim | |||
p6eval | rakudo 43f110: ( no output ) | ||
moritz_ | rakudo: <a b c>.map(*.trim) | 19:46 | |
p6eval | rakudo 43f110: ( no output ) | ||
TimToady | pmichaud's version sounds right to me | ||
whoops, wasn't on the right page... | |||
moritz_ | rakudo: my @a=" aa "," b"; @a.map(*.trim); | ||
p6eval | rakudo 43f110: ( no output ) | ||
moritz_ | rakudo: my @a=" aa "," b"; my @b = @a.map(*.trim); | ||
p6eval | rakudo 43f110: OUTPUT«Null PMC access in find_method('params')current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)» | ||
mberends | rakudo: <a b c>.map(*.trim).say | ||
p6eval | rakudo 43f110: OUTPUT«Null PMC access in find_method('params')current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)» | ||
moritz_ | rakudo: <a b>.map(*.trim).eager | 19:47 | |
p6eval | rakudo 43f110: OUTPUT«Null PMC access in find_method('params')current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)» | ||
moritz_ | rakudo: say *.trim.WHAT | ||
p6eval | rakudo 43f110: OUTPUT«Block()» | ||
moritz_ | rakudo: say *.trim.params | ||
p6eval | rakudo 43f110: OUTPUT«Method 'params' not found for invocant of class 'Block'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
colomon | !!! | ||
moritz_ | rakudo: say *.trim.signature | ||
p6eval | rakudo 43f110: OUTPUT«Null PMC access in type()current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
pmichaud | .parameters, perhaps? | 19:48 | |
moritz_ | .signature.somthing | ||
seems to be related to rt.perl.org/rt3/Ticket/Display.html?id=69362 | |||
colomon | I had no idea *.method was implemented yet. | 19:49 | |
moritz_ | rakudo: say (*.uc).('foo') | ||
p6eval | rakudo 43f110: OUTPUT«FOO» | ||
jnthn | .signature.params | ||
rakudo: say &trim.signature.perl | 19:50 | ||
p6eval | rakudo 43f110: OUTPUT«get_attr_str() not implemented in class 'Perl6MultiSub'current instr.: 'perl6;Code;signature' pc 13389 (src/builtins/Str.pir:68)» | ||
frettled | pmichaud++ - I like that post. | ||
jnthn | ah. | ||
I need to work out what .signature on a multi should do. | |||
frettled | I never saw whatever you responded to, pmichaud, but that doesn't matter - it stands on its own. | ||
jnthn | Obviously, not explode. :-) | ||
frettled | hm | ||
moritz_ | my first reaction is "junction", but that might not be quite right | 19:51 | |
frettled | maybe explode is exactly what it should do | ||
moritz_ | don't think that blends well with the rest of Perl 6 | ||
frettled | but then more like an exploded view than a huge scattering of wreckage | ||
jnthn | moritz_: Yeah | 19:53 | |
moritz_: I may stick in "junction of the signatures" and we see what happens. :-) | |||
TimToady | pmichaud: the final "continues" should be "continue" for parallelism | ||
I'd also swap the "disagree with" and the "don't find interesting" | 19:54 | ||
frettled | jnthn: that phrase just begs for a netnews signature pun | 19:56 | |
19:56
_jaldhar left
|
|||
mberends | moritz_: the origin of the NPMCA in find_method('params') bug: github.com/masak/proto/blob/master/...r.pm6#L576 | 19:57 | |
moritz_ | mberends: as a workaround, {.trim} | 19:58 | |
mberends | thanks moritz_, will test immediately | 19:59 | |
colomon | jnthn: meant to ask you, is there something weird going on with Hash attribute initialization in classes? | 20:00 | |
moritz_ | rakudo: use Test; plan 1; isa_ok Hash, Hash | ||
p6eval | rakudo 43f110: OUTPUT«1..1Method 'isa' not found for invocant of class 'RoleHOW'current instr.: 'perl6;Any;isa' pc 9984 (src/gen/RoleToClassApplier.pir:556)» | ||
moritz_ | that's because Hash is a role, not a class | ||
20:01
ShaneC joined,
ShaneC left
|
|||
moritz_ | (maybe unrelated, but freaked me out while fudging some files a few days ago) | 20:01 | |
colomon | specifically has %.bar is rw; in S12-class/attributes.t | 20:02 | |
(role issue may be behind the scenes) | |||
isa_ok($foo.bar, Hash) fails. | 20:03 | ||
but the rest of the tests on %.bar are fine. | |||
20:04
lichtkind joined
|
|||
colomon | when I looked at it, %.bar.WHAT was Hash, but %.bar.PARROT was nothing at all. | 20:04 | |
mberends | moritz_: \o/ proto installs dependencies | ||
colomon | mberends: \o/ | ||
that's awesome! | |||
mberends | colomon: proto installed mandelbrot earlier today... :) | 20:05 | |
jnthn | colomon: I'm still not sure what to do with those isa tests. | ||
colomon | mberends++ | ||
jnthn | If you re-write isa_ok $foo, Hash | ||
as ok $foo ~~ Hash | |||
Then it works of course. | 20:06 | ||
In general, doing .isa on a role probably won't work out... | |||
Or at lesat, doesn't make much sense to me. | |||
Or asking if something isa role. | |||
colomon | and Hash is a role, eh? | ||
jnthn | It is, but I think we planned to change it back to a class. | 20:07 | |
colomon | should it be doesa_ok or something? | ||
jnthn | Unfortunately, when I tried to do that, we get into trouble with Parrot's Hash type | ||
Or something. | |||
colomon | Sounds like it's fine adding it as a TODO test, then. | ||
jnthn | colomon: tbh for *most* "is this the correct type" checks, I'd just write them in terms of smartmatch. | ||
colomon | s/adding/leaving/ | ||
jnthn | It's the way I always encourage people using Perl 6 to do them. | 20:08 | |
Because it means you can refactor a class into a role or vice versa | |||
colomon | makes sense. | ||
jnthn | And not have to update your code all over the place that's doing the checks. | ||
20:08
SmokeMachine left
20:10
justatheory joined
|
|||
pmichaud | okay, semi-final draft now (with links) at pmichaud.com/sandbox/response.html (note .html, not .txt) | 20:10 | |
only question I have at this point is if someone would take my "even more garbage in public forms" link as meaning that schwern's post was itself garbage (as opposed to the garbage he was calling out) | 20:12 | ||
s/would/might/ | |||
mberends | pmichaud: anonoymous in paragraph 3 | ||
pmichaud | fixed "anonoymous" (thanks) | 20:13 | |
mberends | I still don't like "inadequate toolset", it's too deprecating | 20:16 | |
TimToady | in as not being "real compiler people" or "open source rookies" | ||
the "not" distributes badly | |||
jnthn | mberends: I read it more as "other people say this" than Pm stating it, fwiw. | 20:18 | |
mberends | jnthn: it might be re-quoted out of context, "unfinished" or something is safer | ||
k23z__ | what's the closest recipe to mackerel + some sort of soup. I mean I don't know any recipe with this, does anyone here know one ? | 20:19 | |
mberends | k23z__: please don't go off-topic during the current discussions | 20:20 | |
20:21
meppl joined
|
|||
pmichaud | mberends: "inadequate toolset" is what others claim | 20:23 | |
mberends | jnthn: it might be re-quoted out of context, shooting your foot | ||
s/jnthn/pmichaud/ | 20:24 | ||
pmichaud | the people making claims never say "unfinished". Generally they say "broken" or even more colorful but-not-too-flattering | ||
mberends | just $0.02 worth ;-) | ||
20:24
masak joined,
kensanata joined
|
|||
masak | ahoj, #perl6! | 20:25 | |
m6locks | hejsan | ||
pmichaud | agreed, the 'not' distributes wrong | ||
jnthn | ahoj, masak | ||
pmichaud | moved it inside the quotes, does that work? | ||
not quite. :-) | 20:26 | ||
TimToady | well, I don't think the original was actually claiming we were open source rookies | ||
pmichaud | right | ||
TimToady | so I'd just drop that half | ||
or modify it to point out that we have a lot of experience in nurturing open source rookies | 20:27 | ||
20:28
SmokeMachine joined,
hghgd_ joined
|
|||
pmichaud | rewritten. | 20:30 | |
jnthn reading for a bit, then some Rakudo hacking | |||
20:31
hghgd left
|
|||
tpf|Coke | does fperrad have a list he's working off of? I am always very surprised to see what he's checking in. | 20:31 | |
ww | 20:32 | ||
frettled | pmichaud: in case you haven't changed it yet: yes, the direct link to Schwern's comment may be seen as criticism of him. Okay, we here understand that it's not, but I think it would be smart to play it safe. | 20:33 | |
pmichaud | frettled: I couldn't figure out a good way to reword it. And I think it's better to link directly to the comment than the original post. | 20:34 | |
masak | pmichaud++ # inspiring post | ||
frettled | pmichaud: Perhaps add a parenthetical remark "Schwern's response to idiocy" or something slightly more diplomatic? | 20:35 | |
Tene | pmichaud: you could say something about "garbage that others need to clean up" | ||
pmichaud | yeah, I'll do Tene++'s suggestion | ||
frettled | Tene++ - better | ||
pmichaud | updated. | ||
updated again to say "that someone has to clean up" | 20:36 | ||
Tene | Yes, better. | ||
mberends | this collective editing is makes an outstanding post | 20:37 | |
frettled | community++ | ||
pmichaud | I find that collective editing makes for superior work, yes. Indeed, that's the open source philosophy in many quarters. :) | ||
frettled | It's like submitting a paper for review; first you use your colleagues and friends for a pre-review. | ||
PerlJam | frettled: only with a quicker feed-back cycle :) | 20:38 | |
frettled | Yep, IRC is PDQ :) | ||
masak | diakopter: you sought me earlier? | 20:41 | |
pmichaud | hmmm, perlmonks.org has gotten very slow suddenly | ||
20:41
hercynium joined
|
|||
masak | others have been saying that today on Twitter. | 20:41 | |
mberends | masak: $ proto install tardis # Downloading tardis...downloaded\nDownloading yapsi...downloaded\nBuilding yapsi...built\nBuilding tardis...built\nInstalling yapsi...installed\nInstalling tardis...installed | 20:42 | |
masak | mberends: awesome. | 20:44 | |
mberends++ | |||
wait... is that proto running on alpha? | |||
Tene | So, I've moved in to an apartment in California, and worked for two weeks at my new job. Still trying to get internet at home and furniture. | ||
mberends | cheese will be on the table shortly | ||
masak: on master | 20:45 | ||
Tene | Still exhausted every day when I get home, but looks like I'll be able to start working on projects again soon. | ||
frettled | Tene: goodie! | ||
mberends | Rakudo 2010.04 and Parrot 2.3.0 | ||
Tene | I've missed working with all of you. | ||
masak | mberends: what, in that case, constitutes 'building' tardis and yapsi? | ||
hugme: hug Tene | |||
hugme hugs Tene | |||
frettled | I still miss working :) | 20:46 | |
mberends | masak: that's up to your Makefiles... | ||
masak | ooh! they're hardcoded, now I remember :) | ||
mberends | some specification required, and a new 'make install' protocol | ||
Tene | I haven't been following Perl 6 or Parrot dev in about a month. Things still moving forward, I hope? Have I missed anything exciting? | 20:47 | |
masak | mberends: I might have time to co-evolve a specification and a core test suite this weekend. how about you? | 20:48 | |
snarkyboojum: o/ | |||
PerlJam | Tene: not exciting, but cool that it works now ... "%hash<key>[5].(<foo bar>) now interpolates in double quoted strings" | ||
Tene | perl6: say "{5}.frob" | 20:49 | |
p6eval | elf 30452: OUTPUT«{5}.frob» | ||
..pugs, rakudo 7d43ee: OUTPUT«5.frob» | |||
masak | Tene: need final parens. | 20:50 | |
mberends | masak: unfortunately there won't be much free time in the next few weeks, we'll have to use ad hoc occasions to exchange ideas | ||
pmichaud | oh wait, I just realized an important point missed in my response. | ||
fixing..... (tee hee!) | |||
masak | Tene: oh, and an initial sigil :P | 20:51 | |
Tene | masak: I was checking that post-stuff didn't tack on to {} interpolation. | ||
masak | mberends: ok, what I need most from you is to do a quick mind-meld so I grok the current workage of proto. maybe I'll start by reading your excellent TODO list again. | ||
Tene: oh, it won't. I saw jnthn implement it :) | 20:52 | ||
jnthn++, I mean. | |||
Tene | :) | 20:54 | |
masak | it was definitely that jnthn++ guy did it :) | 20:55 | |
frettled | That jnthn++ guy certainly gets around. | 20:56 | |
PerlJam | rakudo: say "{'wee'}.uc()" | ||
p6eval | rakudo 7d43ee: OUTPUT«wee.uc()» | ||
PerlJam | Hmm. :) | ||
pmichaud | two changes: I now added detail about "how you do that" in the first quotation from Anonymous monk, and return to that point at the paragraph that now begins with "Returning to the topic of..." | 20:57 | |
masak | both seem good improvements. | 20:58 | |
frettled | pmichaud: soon there are so many changes that it ought to have been a Wikipedia article ;) | ||
pmichaud | frettled: you should see how many changes my drafts go through *before* I tell people about them :) | ||
I've come to learn that I'm not a particularly fast writer. | |||
frettled | pmichaud: or perhaps I'd rather not, I suspect it's somewhat like my own posts used to be on netnews | 20:59 | |
It's not the LOC or LOL (lines of literature), it's the QOC and QOL. :) | |||
pmichaud | changed "lead implementor" to "primary implementor" | ||
PerlJam envies those people who can think the right words that concisely say what they want to express | 21:00 | ||
pmichaud | I can think them, just not always on the first draft :) | ||
21:00
ReiniUrban joined
|
|||
pmichaud | But I take heart knowing that Winston Churchill put all of his speeches through incredible numbers of drafts and rehearsals as well :) | 21:01 | |
21:01
rurban left,
ReiniUrban is now known as rurban
|
|||
frettled | Yep, there's usually a huge effort behind those things. | 21:01 | |
tpf|[particle] | is that a fat joke? | 21:02 | |
21:02
tpf|[particle] is now known as [particle]
|
|||
[particle] takes off his tpf hat | 21:02 | ||
PerlJam | it is now | ||
[particle] | :) | ||
pmichaud now wipes off his keyboard. | 21:03 | ||
frettled | :) | ||
pmichaud | okay, I'm done. I'm posting it. | ||
frettled | \o/ | 21:04 | |
PerlJam is still a little irked by the anonymonk's idea that language design/compiler construction is like a recipe | |||
[particle] | we'll lput our further edits in a response to your post. | ||
frettled | PerlJam: But it is! In compilers 101. | ||
;) | |||
PerlJam | a dash of smart people, a sprinkle of programming, a bit of thinking ... mix well, et voila! a language and a reference compiler | 21:05 | |
frettled | or a huge mess, but who can tell the difference from ten feet away? | ||
(and therein lies the problem) | 21:06 | ||
PerlJam | frettled: what are you doing ten feet away? You need to be closer. | ||
frettled | or 11 feet away, so that I could use my 11-foot pole | 21:07 | |
PerlJam | Also, the naysayers who say the equivalent of "Perl 6 is too ambitioius. Scale back the ambition and release something now!" bother me too. | 21:08 | |
(but perhaps with better spelling) | |||
frettled | I sort of understand them. | ||
masak | I'm glad people are criticizing. that's, like, Ghandicon 2 or something. some of the people doing the criticizing are bound to be loud, irascible, and wildly wrong. | 21:09 | |
pmichaud | uh, we are "releasing something now" | ||
I'm fine with criticism. It's uninformed criticism that bugs me. | |||
frettled | But I think the problem with that criticism is that people get to see parts of the process that you traditionally _don't_ see as a layperson. | ||
PerlJam | pmichaud: but it's not a "real" release | ||
21:10
hghgd_ is now known as hghgd
|
|||
masak | PerlJam: now *that* argument I really hate. :( | 21:10 | |
pmichaud | PerlJam: yeah, I know. "What's a 'real' release?" | ||
pugssvn | r30453 | kyle++ | Test for RT 74448: eval of empty string should be Nil | ||
PerlJam | masak: indeed. That gets on my nerves too | ||
pmichaud | And why would anyone believe that 'now' and their notion of 'real release' are in any way compatible. | ||
masak | PerlJam: it usually comes right after I tell someone stubborn that yes, there are Perl 6 releases. | ||
frettled | In other words, people get information about what used to be an internal, semi-closed process, and therefore equate the stages of that process with what would normally be public at a much later stage. | ||
masak | PerlJam: and they go no-true-Scotsman on me as if that were something original. | ||
frettled | Personally, though, I think the misunderstandings are a price that's worth paying for the huge benefits of having an open process from the get-go. | 21:11 | |
masak | me too. | ||
PerlJam | frettled: no, it's because Perl 6 was announced in 2000, so *anything* that has happened since should have gotten us a Perl 6 compiler by now | ||
masak | it's sometimes possible to get a sense of the silent majority, still waiting by the sidelines for something that they can take and use and enjoy. | ||
PerlJam | (this is one variation I see) | 21:12 | |
pmichaud | Oh dear. Has the clock already started on Perl 7, then, since we mentioned it? ;-) | ||
masak | Perl 8! | ||
frettled | PerlJam: well, yes, the announcement happened when the process started instead of when the process was nearly complete, so those people got it bass ackwards. | ||
GoogolPerl | |||
masak | I wouldn't be here if it weren't for that announcement in 2000. | ||
PerlJam | I still blame orwant :) | ||
masak | neither, I guess, would a lot of other people. | 21:13 | |
frettled | I wouldn't be here if I hadn't been to YAPC in Vienna, and just curiously joined in on one or two of the Perl 6 talks. | ||
So I hope I can spend the coming years contributing 10% of what masak++ has done. That would be awesome. | 21:14 | ||
21:14
boigaz joined
|
|||
masak | me? I'm just contributing to the torment of the developers. :P | 21:15 | |
frettled | Yes, exactly, 10% of the pain. | ||
pmichaud | fast becoming a time-honored tradition, that. | ||
PerlJam | at least something is fast ;) | ||
mberends | masakism means self.torment(), apparently | ||
masak | still not up to that promised jackhammer speed, though. | 21:16 | |
I need to automate bug-finding a bit more... | |||
massive testing of the app cheese is probably the way. | |||
PerlJam | masak: just write a Synopsis compiler | ||
masak: and run it on rakudo | |||
21:16
kensanata left
|
|||
masak | :) | 21:17 | |
frettled | BTW, I'm positively surprised that 5.12 got here so quickly. | ||
masak | obra++ | ||
PerlJam | frettled: I bet you won't be so surprised when 5.14 gets here | ||
mathw | 5.12 is quite exciting | 21:18 | |
PerlJam | I won't be surprised until 5.mumble *really* starts to look like Perl 6. | ||
mathw | I also noticed that it's called Perl 5 version 12, which I thought was quite nice | ||
frettled | PerlJam: Maybe I'm so deep in dementia that I'm constantly surprised by then. | ||
mathw: ooh, nice | |||
masak | mberends: subset DateTime::Formatter where { .can<fmt-datetime fmt-ymd fmt-hms> } | 21:19 | |
mberends: that looks... wrong. | |||
the .<> will be seen as a hash slice on the .can method call. | |||
probably not what was intended. | |||
PerlJam | add some parens | 21:20 | |
masak | I will. just checking. | ||
PerlJam | (or a space) | ||
masak | nope. | ||
it's a method call. | |||
I didn't know .can accepted a list. | |||
21:20
pyrimidine left
|
|||
masak | what does it return in that case? | 21:20 | |
frettled | PerlJam: hmm, that comment of mine may have come off wrong; I'm merely implying that I might be slipping into dementia really quickly, not that 5.14 will wait until y2314. | ||
masak | (given that when it accepts a string it returns a dispatch order) | 21:21 | |
PerlJam | frettled: heh | ||
mberends | it may well be wrong, it's not in use yet. I'm hoping to do plug-in formatters from loadable modules, to handle human languages and locales | ||
21:21
rv2733 joined
|
|||
masak | mberends: I think you meant .can(all <...>) or something like that. | 21:21 | |
PerlJam | yeah ... I was just about to say something like that | ||
masak | or something like that. | ||
PerlJam | (I would expect .can LIST to mean .can all LIST) | 21:22 | |
masak | PerlJam: again, there's no such syntax. | ||
21:22
rv2733 left
|
|||
masak | std: .can <a b c> | 21:22 | |
p6eval | std 30452: OUTPUT«===SORRY!===Bogus term at /tmp/y1x7Hj9H46 line 1 (EOF):------> .can <a b c>⏏<EOL>Undeclared routine: 'c' used at line 1Parse failedFAILED 00:01 110m» | ||
21:22
boigaz left
|
|||
PerlJam | er, modulo syntax :) | 21:22 | |
masak | PerlJam: it's 2010! learn Perl 6 :P | ||
PerlJam | I don't write enough of it for some things to stick well. | 21:23 | |
masak | I understand. just saying you should :) | ||
PerlJam | you're right. I should | ||
masak prods PerlJam | |||
frettled | Perl 6: not sticky | ||
21:24
mariano__ left
|
|||
masak | but iffy and fiddly :) | 21:24 | |
mberends: also, should fmt-ymd really format the year as $dt.year.fmt('%04d'), rather than just '%d'? I haven't studied iso8601 closely enough, but it seems to me speaking of year 350 is better than 0350... | 21:26 | ||
mberends | hmm, %4d would be safer | 21:27 | |
masak | or %d. | ||
I think %4d would insert spaces, no? | |||
PerlJam | Perl 6 ... the 10,000 year language | ||
masak | didn't want to say it :P | ||
mberends | yes, so that the size does not vary | ||
ISO8601 should have the final word | 21:28 | ||
PerlJam | Besides ... that's a bug that can be fixed later ;) | ||
masak | mberends: that 4 feels arbitrary, and the spaces potentially bothersome. | ||
mberends: kudos on strftime, by the way. | |||
I don't think it needs to be moved to a separate file. let's spec it instead. | 21:29 | ||
I suspect %a and %A will need to fall under the l10n part of the spec somehow. | |||
at least if we're to stick to the unspoken "no names, just numbers" policy of the core module. | 21:30 | ||
mberends | masak: the implementation looks quite slow, if you study the algorithm. A comment also says so. | ||
words are ok if their source is pluggable | |||
masak | mberends: I know a better way to write that. care if I do it? | ||
mberends | and posix can be the default locale for names | 21:31 | |
masak: so do I, but the time is better spent doing other stuff | |||
masak | mberends: loop and find all '%', switch on the letter after it. much less repetition. | ||
oh, it'll only take ten minutes of my time :) | |||
PerlJam | where is this code you are looking at? | ||
masak does it now | |||
PerlJam: src/core/Temporal.pm | 21:32 | ||
mberends | :-) yes, but not a switch, a hash | ||
masak | turns out the difference isn't that great. | ||
but a hash might be better for other reasons. | |||
mberends | masak: a loadable module is an important facility we really should begin to use. strftime is a good use case for a module, there will be many others too, but we must begin somewhere. | 21:34 | |
frettled | ISO 8601 uses four digits even for the year "0000". | ||
masak | I sit corrected, then. | ||
PerlJam | Hmm. | ||
masak | frettled: does it mention five-digit years? | 21:35 | |
21:35
hercynium left
|
|||
mberends | the details of strftime interest me less than the concept of slimming the huge monolithic core | 21:35 | |
frettled | masak: yes | ||
masak | mberends: you're probably right about loadable modules. I was speaking of strftime in particular. | ||
frettled | "By mutual agreement of the partners in information interchange, it is permitted to expand the component | ||
21:35
pmurias joined
|
|||
frettled | identifying the calendar year, which is otherwise limited to four digits. This enables reference to dates and | 21:35 | |
times in calendar years outside the range supported by complete representations, i.e. before the start of the | |||
year [0000] or after the end of the year [9999]. | 21:36 | ||
ow, hard newlines, hatessss them | |||
" | |||
PerlJam | I think scanning the string from left to right would closer match what POSIX::strftime does now | ||
mberends | rakudo: 12345.fmt("%4d").say | ||
p6eval | rakudo 7d43ee: OUTPUT«12345» | ||
mberends | rakudo: 12345.fmt("%04d").say; 12.fmt("%04d").say | 21:37 | |
p6eval | rakudo 7d43ee: OUTPUT«123450012» | ||
pmichaud | www.perlmonks.org/?node_id=836349 # now posted, more minor edits | ||
PerlJam | for instance .... I think this version would turn "%%years" into "%10ears" rather than "%years" | ||
pmichaud | THANK YOU to everyone for your suggestions and help, the post is far better because of it. | ||
21:38
TiMBuS joined
|
|||
frettled | pmichaud++ for taking the time and effort | 21:38 | |
pmichaud | hugme: hug everyone | ||
hugme hugs everyone and blushes | |||
masak | PerlJam: yes, you're right. | ||
pmurias | diakopter: hi | ||
masak | PerlJam: the %% case is what I'm thinking about now, though. | ||
mberends | PerlJam++: re-ordering would fix that, but the algorithm still sucks | 21:39 | |
masak | PerlJam: I basically need to take it out-of-band for the duration of the loop, and then reinsert a single '%'. | ||
mberends | it turns out that strftime() has several other locale dependencies, such as the '-' and ':' separators | 21:40 | |
frettled | Yep. | 21:41 | |
mberends | so making swappable formatters is quite crucial | ||
masak | aye. | ||
it all needs to interact nicely with the locale business, too. | |||
PerlJam | "%%a" would become "%Thu" which would then become "21:41:35hu" | ||
21:41
tri1 left
|
|||
mberends | and I figured that if we can do that, we can have swappable parsers too | 21:42 | |
PerlJam | (assuming a loop) | ||
frettled | So %%ah would become %Thu would become 21:41:35huh ;) | ||
mberends | lol | ||
masak | PerlJam: that's wju I need to take %% out-of-band, as I said. | ||
s/wju/why/ | |||
PerlJam | right, just thinking out loud some more :) | ||
masak | PerlJam: actually, maybe the right way to do this is to build a new string on the side from scratch. | 21:43 | |
somehow I sense that .comb figures into this, too... | |||
the '%3N', '%6N', '%9N' cases complicate things a bit, though. but nothing that a regex wouldn't solve. | 21:44 | ||
mberends | it's very efficient to implement in C ;-) | ||
21:44
snarkyboojum left
|
|||
mberends | %9N failed in testing because of a Num restriction :-/ | 21:45 | |
masak | actually, I think those three are better handled separately. | ||
jnthn returns | 21:46 | ||
mberends | rakudo: my $second = 3.98765432; | ||
p6eval | rakudo 7d43ee: ( no output ) | ||
mberends | rakudo: my $second = 3.987654321; | ||
p6eval | rakudo 7d43ee: ( no output ) | ||
mberends | (blew up: no bigint lib loaded) | 21:47 | |
pmichaud | also at use.perl.org/~pmichaud/journal/40322 . | ||
21:47
iblechbot left
|
|||
masak | mberends: part of why the current implementation is slow is that it makes a lot of method calls, whether they're needed or not. | 21:48 | |
pmichaud++ | |||
mberends | masak: exactly | ||
masak makes a hash of closures | |||
mberends | masak: exactly, again | 21:49 | |
jnthn | pmichaud++ | ||
frettled | pmichaud** ? :D | 21:50 | |
21:50
wknight8111 joined
22:01
SmokeMachine left
|
|||
jnthn | std: class C does OhNoThisRoleDoesNotExist { } | 22:03 | |
p6eval | std 30453: OUTPUT«ok 00:01 107m» | ||
diakopter | TimToady: did you see my question about array declaration vs generic variable declaration | ||
jnthn | TimToady: ^ Maybe missing is_type call in module_name | 22:04 | |
22:04
clintongormley left
|
|||
jnthn | s/is_type/is_name/ | 22:04 | |
pmichaud | bah, I'd like to add a reference to my post from chromatic++'s post but MT doesn't seem to know my username and doesn't want to let me register for a new one :-( | ||
if someone else is able to do that, that'd be great. | 22:05 | ||
jnthn | diakopter: I'd be curious to see that - what/when was it? | 22:07 | |
diakopter: Ah, found it. | 22:08 | ||
diakopter | jnthn: a day or two ago... I don't know. I was complaining about my confusion over the use of [] for parametric types and also for array declaration | ||
jnthn | diakopter: It'd be an error. | ||
diakopter | probably resulting from my confusion over how it's spec'd | ||
what was my question? | |||
jnthn | I think because of its position it'd be unambiguously parsed as a type name and thus a parametric type. | ||
std: my int[int] $foo = 1; | |||
That one. | |||
p6eval | std 30453: OUTPUT«ok 00:01 108m» | 22:09 | |
jnthn | If you want an array of ints then | ||
my int @foo; | |||
or | |||
my Array of int $foo; | |||
my int[int] $foo; # fail because int is not a parametric role | |||
diakopter | std: my Array of Int[Array] $foo = 1; | ||
p6eval | std 30453: OUTPUT«ok 00:01 108m» | ||
diakopter | rakudo: my Array of Int[Array] $foo = 1; | 22:10 | |
p6eval | rakudo 7d43ee: OUTPUT«In "my" declaration, typename Array must be predeclared (or marked as declarative with :: prefix) at line 11, near " of Int[Ar"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» | ||
diakopter | jnthn: ok; thanks | ||
jnthn | afaict, STD doesn't worry about what kind of type things are | ||
Just that they're type names. | |||
In general, you can't know whether a given parameterization of a role is going to work out without actually getting all of the variants and trying the multi-dispatch. | 22:11 | ||
TimToady: Ah, it's wrong to put the check in module_name. | 22:16 | ||
(just tried and, yeah, epic fail :-)) | |||
Putting it in the trait_mod instead. | |||
masak | rakudo: say "foo".subst( /(o)/, { (~$0).uc }, :global ) | 22:19 | |
p6eval | rakudo 7d43ee: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''current instr.: '!postcircumfix:<[ ]>' pc 10896 (src/builtins/Role.pir:78)» | ||
22:19
rv2733 joined
|
|||
masak | was there a known workaround for this one? | 22:19 | |
(other than writing things out as a loop doing .index) | 22:20 | ||
jnthn | rakudo: say "foo".subst( /(o)/, "x", :global ) # does this work? | 22:21 | |
p6eval | rakudo 7d43ee: OUTPUT«fxx» | ||
jnthn | rakudo: say "foo".subst( /(o)/, { "x" }, :global ) # this? | ||
p6eval | rakudo 7d43ee: OUTPUT«fxx» | ||
masak | sure. it's the $0 that's the problem. | ||
jnthn | rakudo: say "foo".subst( /(o)/, { $0 }, :global ) # this? | ||
p6eval | rakudo 7d43ee: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''current instr.: '!postcircumfix:<[ ]>' pc 10896 (src/builtins/Role.pir:78)» | ||
jnthn | rakudo: say "foo".subst( /(o)/, { uc(~$/) }, :global ) # this? | ||
p6eval | rakudo 7d43ee: OUTPUT«fANY()ANY()» | ||
masak | or rather, its desigaring $/[0] | ||
jnthn | Oh | ||
Well that explains a lot. | |||
masak | aye. | 22:22 | |
jnthn | We ain't getting $/ in there | ||
masak | oh well. | ||
jnthn | So it's not a $/[0] problem at all. | ||
Just a ENO$/ | |||
masak | I'll push tonights patch as a branch, then. | ||
22:24
ash__ joined
|
|||
masak | s/ts/t's/ | 22:25 | |
mberends: here's how it ended up: github.com/rakudo/rakudo/commit/720...8c292b6a1c | 22:26 | ||
mberends | looking | ||
masak | I don't know if the tests still pass, due to the above rakudoTODO. | ||
jnthn | I think the above rakudobug decidedly means the tests won't pass. ;-) | 22:27 | |
masak | yeah, kind of a show-stopper. | 22:28 | |
jnthn | rakudo: class C does OhNo { } | ||
p6eval | rakudo 7d43ee: OUTPUT«Null PMC access in type()current instr.: 'perl6;C;!class_init_11' pc 352 (EVAL_1:161)» | ||
jnthn | masak: Can you remember submitting that? | ||
masak | I can. | ||
jnthn | masak: If so, can you think what you may have called the ticket? | ||
masak | I've encountered it many times in the cheese. | ||
masak looks | |||
jnthn | I concluded it sucks and decided to make things better. | 22:29 | |
> class C does OhNo { } | |||
Typename OhNo must be pre-declared to use it with does at line 1 | |||
masak | jnthn: I called it rt.perl.org/rt3/Ticket/Display.html?id=66782 , it seems. | ||
jnthn++ | |||
jnthn | Also | 22:30 | |
rakudo: class A { }; class B does A { } | |||
p6eval | rakudo 7d43ee: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''current instr.: 'perl6;ClassHOW;add_composable' pc 4100 (src/metamodel/ClassHOW.pir:185)» | ||
jnthn | Now you get the rather more helpful | ||
> class A { }; class B does A { } | |||
Can only use does with a role, but A is not one | |||
masak | \\oo// | ||
jnthn | Though I have the RT for that in front of me. :-) | ||
masak .oO( I'd rather have an RT in front of me... ) | |||
jnthn | masak: Oh! | 22:31 | |
masak: I didn't mean *that* bug. | |||
masak | oh. | ||
which one did you mean? | |||
jnthn | I meant the "class C does OhNo { }" gives a crappy error one. | ||
masak | oh, ah. | ||
masak looks | |||
mberends | masak: there will be a workaround way to apply the %substitutions hash in combination with substrings. It would be a pity to lose all the benefit because of an only partly related bug. | ||
lichtkind did www.perlfoundation.org/perl6/index....ine_traits | 22:32 | ||
jnthn | mberends, masak: I can have a peek at the bug and see if I can fix it. | ||
mberends | masak++ for the hash of closures, it's what I would have chosen too. | ||
masak | mberends: well, .=subst is really what we want here, because it's one-pass and doesn't have any problems with '%%'. | ||
jnthn: only found this so far: rt.perl.org/rt3/Ticket/Display.html?id=74092 | 22:33 | ||
jnthn: sounds great! | |||
jnthn | mmm...yulia. | ||
Sadly that bug is still there. :-/ | 22:34 | ||
masak | jnthn: rt.perl.org/rt3/Ticket/Display.html?id=74032 | 22:36 | |
the RT system and I are one. | |||
masak levitates | |||
jnthn | Excellent. | ||
Typename Pet must be pre-declared to use it with does | |||
:-) | 22:37 | ||
masak: Well, you've put enough of you into it... :-) | |||
masak | I've created... a monster! | ||
22:37
Matthias_ joined
|
|||
masak gets out of chair as RT stirs | 22:38 | ||
Matthias_ | Hey, does someone of you know how to become part of the perl 6 development network? | ||
mberends | Step right in here, sir! | 22:39 | |
masak | Matthias_: yes. what do you want to know? | ||
masak and Matthias_ privmsg | 22:40 | ||
22:41
hercynium joined
22:42
ash__ left
|
|||
sundar | masak: for the sake of the other would-be volunteers here, could you summarize anything helpful from the privmsgs? | 22:48 | |
masak | oh, sure. | 22:49 | |
first I passed on this link: perlbuzz.com/2009/08/perl-6-is-my-mmorpg.html | |||
it's written by some frood, forgot who :) | 22:50 | ||
22:50
ruoso left
|
|||
masak | now we're talking about having fun and managing time and starting small. | 22:51 | |
22:55
ash_ joined
|
|||
ash_ | how goes it | 22:58 | |
masak | still converging. :) | ||
ash_ | to zero or pi? | ||
masak | too early to tell. | 22:59 | |
hopefully to 6.0.0, though. | |||
ash_ | that would be cool | 23:00 | |
masak | yes. I guess that's why most of us hang around here. | 23:01 | |
jnthn | orly? | 23:02 | |
:-) | |||
masak | and for the beer, of course. | ||
jnthn | Yeah, that's why I'm here. | 23:03 | |
I occasionally write patches to keep that from being too blatant though. | |||
.oO( I need a "Will patch Rakudo for beer" t-shirt ) |
|||
jnthn tries to further unbreak parametric roles | 23:04 | ||
masak | that's a bit like me. I pretend to find a lot of bugs and submit RT tickets, but I basically just hang around because I like the Camelia mascot. | ||
I'm really not too interested in Perl 6 as such. | |||
:D | |||
mberends hangs out here to be able to say that he hangs out here | 23:05 | ||
masak | ah, right. the hip factor. tres chic. | ||
ash_ | what does: class Foo { our $.a }; do? | 23:06 | |
pmichaud | I hope some of the incredible coolness of some of the denizens here rubs off on me :) | ||
*citizens # better | |||
jnthn | ash_: Nothing useful. | 23:07 | |
Probably makes Rakudo give you a stupid unhelpful error... | |||
masak | rakudo: class Foo { our $.a } | ||
ash_ | no error | ||
p6eval | rakudo 7d43ee: ( no output ) | ||
jnthn | heh. :-) | ||
rakudo: class Foo { our $.a }; say Foo.new.a | |||
p6eval | rakudo 7d43ee: OUTPUT«Method 'a' not found for invocant of class 'Foo'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
pmichaud | std: class Foo { our $.a }; # curious | ||
p6eval | std 30453: OUTPUT«ok 00:02 107m» | ||
jnthn | pmichaud: "if it's also possible to quickly concatenate RSAs" - I think that some work when into making the join opcode do well. | 23:08 | |
pmichaud: Or did you mean, take two RSAs to make another one? | |||
Rather than concantenate the things in the RSA? | |||
ash_ | i rather like the perl6 channels attitude towards programming, oh, and i can say i was apart of something maybe | ||
pmichaud | jnthn: the latter | 23:09 | |
jnthn | Which latter? ;-) | ||
two RSAs to one? | |||
I guess your splice comment fits that. | |||
pmichaud | yes | ||
jnthn | splice is probably fastest. | ||
pmichaud | each POST::Sub ends up being its own CodeString | ||
jnthn | Ah, OK. | ||
pmichaud | those CodeStrings need to be concatenated, and it's not always the case that the CodeString generated later always comes after the previous one | 23:10 | |
23:10
orafu left
|
|||
jnthn | nod | 23:10 | |
23:10
orafu joined,
snarkyboojum joined
|
|||
jnthn wonders how compilation performs under latest Parrot | 23:10 | ||
pmichaud | i.e., the order of things in the final PIR output doesn't always match the order in which those things were generated. | ||
s/doesn't always/almost never/ | |||
so one can't simply do a sequence of RSA.push and expect everything to work. | 23:11 | ||
jnthn | Sounds like we need some good solution then...the Rope thing sounds interesting. | ||
pmichaud | I suppose one could also stringify one RSA with a join and push it onto the other. | ||
jnthn | True | ||
You still end up creating a bunch of intermediate strings though. | 23:12 | ||
pmichaud | but that also feels like we're just doing a bunch of string conc.... right. | ||
jnthn | Wonder if we can have a descendent join. | ||
oh wait | |||
It's an RSA so it can't ahve an RSA in it. | |||
pmichaud | at any rate, repeated concatentations is *very* common in HLL programs, so Parrot needs to be fast about it anyway, regardless of any Rope implementation. | ||
jnthn | d'oh. | ||
Right. | |||
pmichaud | from a HLL perspective, the Rope tangent is a false lead. | 23:13 | |
jnthn | I hope that doesn't mean that latest Parrot kills our compile performance. | ||
pmichaud | well, I'd think that we could find that out somewhat with NQP performance | ||
jnthn | ah, good point. | ||
pmichaud | if NQP takes significantly longer, then Rakudo will *really* take significantly longer. | ||
jnthn | Rakudo doesn't build on latest Parrot. | ||
pmichaud | because NQP also generates not-insignificant amounts of code. | ||
jnthn | Testing with nqp sounds sensible. | 23:14 | |
I don't expect Rakudo on latest Parrot to get unbroken in a great hurry. | |||
pmichaud | oh, I did. | ||
jnthn | I saw where/how it fails and it looks un-fun to hunt down. :-( | 23:15 | |
pmichaud | 2.3 was a supported release, which means that major refactors land immediately after the release | ||
23:15
Matthias_ left
|
|||
jnthn | Right | 23:15 | |
pmichaud | so those refactors were the new strings implementation, :nsentry, etc. | ||
jnthn | Which is why we're broken on post-2.3. | ||
pmichaud | oh, I read "don't" as "didn't", sorry. | ||
jnthn | ah, OK. :-) | ||
pmichaud | I'm obviously over-tired again. Plus I have to go buy some food and appliances for the house. | ||
jnthn as confused for a moment. | 23:16 | ||
23:16
pmurias left
|
|||
jnthn | *was | 23:16 | |
I'll maybe see if I can unbreak it at the weekend. | |||
Or we'll end up blocking because we want nqp-rx updates after not long, or something. | |||
sundar | masak++ # for the great article by some frood :) | 23:17 | |
dalek | kudo: 08c4cf0 | jonathan++ | src/Perl6/Grammar.pm: Detect non type names in the does and hides trait mods, so we can give good meaningful parse time errors rather than crappy runtime ones. |
||
kudo: 776e793 | jonathan++ | src/ (2 files): Sensible rather than meaningless unhelpful error when using does trait mod on something that's not a role. |
|||
masak | sundar: thanks. | ||
jnthn | Yay, two more tickets just needing spectests. :-) | ||
pmichaud | afk, dinner and shopping | ||
jnthn | o/ | 23:18 | |
masak | last night I refreshed my memory on where it was I was blocking on GGE grammars. | ||
thing is, PGE uses the fact that there's no invocant type checking in PIR. | |||
so it actually calls Match methods on Str. | |||
naturally, I can't do the same in Perl 6. | 23:19 | ||
problem is, PGE has a flag on Match objects called 'iscont', which determines whether the Match should try to match all positions in succession, or just the one position. | 23:20 | ||
ash_ | do package variables work right now? | ||
masak | the 'iscont' flag is set when a Match is created from a Str, and unset when a Match is created from another Match. | ||
rakudo: package A { our $b = 42; }; say $A::b | |||
p6eval | rakudo 7d43ee: OUTPUT«42» | ||
masak | ash_: seems like it. | ||
ash_ | rakudo: class Foo { our $.a }; $Foo::a = 4; # probably shouldn't work? | 23:21 | |
p6eval | rakudo 7d43ee: OUTPUT«Null PMC access in getprop()current instr.: '&infix:<=>' pc 17061 (src/builtins/Junction.pir:224)» | ||
ash_ | rakudo: class Foo { our $a }; $Foo::a = 4; | ||
masak | in this rather ingenious way, only the outermost grammar rule has the 'iscont' flag set. | ||
p6eval | rakudo 7d43ee: ( no output ) | ||
masak | I'm at a loss for how to faithfully emulate this behaviour. | 23:22 | |
ash_: no, 'our' and the '.' twigil don't match meaningfully. | |||
ash_ | should that be an error? | ||
std doesn't complain, but that doesn't mean it shouldn't.... | 23:23 | ||
masak | it could probably be an error somewhere, yes. | ||
but until it is, just try to avoid doing it :P | |||
ash_ | lol, it was an accident (at first), now i am just curious what it would mean, if it could mean something | 23:24 | |
pugssvn | r30454 | jnthn++ | [t/spec] Re-fudge parameterized-basic.t role tests to remove a few for now that Rakudo can't yet handle. | ||
masak | ash_: I don't think it could. | ||
it kinda tries to say two contradictory things. | |||
the 'our' says 'install this variable name in the current package and lexpad'. | |||
TimToady | see S12:725 | 23:25 | |
masak shuts up and reads | |||
oh, right. | |||
TimToady: not sure I like that. | |||
ash_ | ah, so it should work, its just not | ||
23:27
mberends left
|
|||
jnthn | IIUC, it just means "it's a normal our variable + an accessor method for it" | 23:27 | |
But in that case | |||
I'd imagine | |||
our %!cache; | |||
means | |||
our %cache; | |||
Which feels...odd. | |||
masak | does it work in a nested scope, such as a method? | ||
also, I think calling them 'class attributes' is misleading, given that the variables won't inherit. | 23:28 | ||
dalek | kudo: 0bea1f4 | jonathan++ | src/Perl6/ (2 files): Fix to role type parameter handling so we don't get scoping of parameters wrong. |
||
kudo: 3954332 | jonathan++ | t/spectest.data: Turn S14-roles/parameterized-basic.t on again; we pass 18 tests in there after the previous fix. |
|||
ash_ | so... package scope is orthogonal? (stealing a work from masak's blog) to lexical scope? | 23:29 | |
TimToady | masak: you don't generally want your class variables to inherit anyway | ||
masak | ash_: hm. package scope and lexical scope aren't 100% orthogonal, I think. | 23:30 | |
ash_: they're still almost they same kind of thing. | |||
my/our are much less different than, say, our/has. | |||
ash_ | well, a lexpad is the current block, so whatever is between { ... }, in a sense... and each lexpad has an OUTER so you could look at it like its a stack, where the lowest part of the stack is the outer most lexpad, so if lexical scope is a bunch of lexpads in a stack, package scope is...? | 23:32 | |
masak | TimToady: so the '!' twigil means 'instance attribute', except when it's a class attribute? | ||
ash_ | (i might be looking at this from the wrong perspective) | ||
masak | ash_: no, it sounds good. | 23:33 | |
TimToady | ! does not mean 'instance attribute' | ||
! means 'no public accessor' | |||
masak | ash_: package scope is what you get when you do `package A {}` or something synonymous. | ||
TimToady | 'has' means 'instance' | ||
masak | ash_: in general, 'our' vars end up in a MAIN (or something) package. | 23:34 | |
ash_ | masak: i know what package scope is, but i am trying to figure out how i should implement it, in my language | ||
has = instance, our = package, my = lexical, ? | |||
masak | as far as I grok it, yes. | 23:35 | |
ash_: I think for the purposes of an implementation, 'my' and 'our' scoping are indeed orthogonal. | |||
but I could be wrong; I haven't tried implementing 'our' variables yet. :) | 23:36 | ||
TimToady | they main way they aren't orthogonal is that you get a lexical alias along with the our | ||
*the | |||
masak | moritz_++ pointed out that even 'our' variables install themselves in the lex... what TimToady said. | ||
ash_ | i was thinking, i could put a longname identifier in the outer most lexpad that represents the "true" variable, and have a lexical reference to it | 23:37 | |
TimToady | also, following 'PARENT::' from a package may get you to GLOBAL::, or it might get you to a lexical scope | ||
since you can have lexically scoped packages | |||
ash_ | hmmm | ||
masak | TimToady: I think I'll retract my doubts about 'my $!class-var;' et al for now. | ||
TimToady | or even anonymous packages | ||
std: my $x = package {...} | 23:38 | ||
p6eval | std 30454: OUTPUT«ok 00:01 110m» | ||
ash_ | hmm | ||
then my strategy would not work out, methinks... | |||
jnthn | TimToady: Isn't that just a fancy way to get a hash? :-) | ||
TimToady: Also, in this case what about code inside the package? | |||
TimToady | a hash of symbols | ||
ash_ | rakudo: my $x = package {...} | 23:39 | |
p6eval | rakudo 7d43ee: OUTPUT«error:imcc:syntax error, unexpected ')' (')') in file 'EVAL_1' line 71No applicable candidates found to dispatch to for '&infix:<=>'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
masak submits rakudobug | |||
jnthn | my $x = package { our $y; }; | ||
masak | ash_: I just did that locally! :) | ||
ash_ | lol | ||
masak | rakudo: package {} | ||
p6eval | rakudo 7d43ee: ( no output ) | ||
jnthn | TimToady: In the above, is $y a... | ||
masak | rakudo: package { ... } | ||
jnthn | well, what is it. :-) | ||
p6eval | rakudo 7d43ee: ( no output ) | ||
masak | rakudo: my $x = package Foo {} | 23:40 | |
p6eval | rakudo 7d43ee: OUTPUT«Null PMC access in can()current instr.: '&infix:<=>' pc 17061 (src/builtins/Junction.pir:224)» | ||
masak | ooh, two in one! | ||
jnthn | Well, same underlying issue | ||
masak | how can you tell? | ||
those are two quite different errors. | 23:41 | ||
jnthn | Because I know that Rakudo has no concept of non-our package | ||
We sometimes look like we do | |||
masak | rakudo: our $x = package { ... } | ||
p6eval | rakudo 7d43ee: OUTPUT«error:imcc:syntax error, unexpected ')' (')') in file 'EVAL_1' line 75No applicable candidates found to dispatch to for '&infix:<=>'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
jnthn | No, that's different. | ||
ash_ | i think he means: our package { } | ||
jnthn | That's an anonymous package being put into an our variable. | ||
masak | rakudo: my $x = our package { ... } | 23:42 | |
p6eval | rakudo 7d43ee: OUTPUT«error:imcc:syntax error, unexpected ')' (')') in file 'EVAL_1' line 71No applicable candidates found to dispatch to for '&infix:<=>'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
masak | rakudo: my $x = our package Foo { ... } | ||
jnthn | That should complain that an our-scoped package should have a name, I guess. | ||
p6eval | rakudo 7d43ee: OUTPUT«error:imcc:syntax error, unexpected ')' (')') in file 'EVAL_1' line 71No applicable candidates found to dispatch to for '&infix:<=>'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
masak | and that one? | ||
jnthn | To clarify what I wrote before | ||
Rakudo has no concept of non-our package or any package not in sink context. | 23:43 | ||
masak | ah. | ||
jnthn | class and role do know what to do. | ||
In such cirumstances. | |||
TimToady | std: our class FOO {}; GLOBAL::FOO::PARENT::FOO | ||
p6eval | std 30454: OUTPUT«ok 00:01 107m» | ||
TimToady | std: GLOBAL::FOO::PARENT::FOO | ||
p6eval | std 30454: OUTPUT«===SORRY!===Undeclared name: 'GLOBAL::FOO::PARENT::FOO' used at line 1Check failedFAILED 00:01 107m» | ||
jnthn | Ugh. | 23:44 | |
masak | std: our class PARENT {}; GLOBAL::PARENT | ||
p6eval | std 30454: OUTPUT«ok 00:01 107m» | ||
masak | std: our class PARENT {}; GLOBAL::PARENT::PARENT::PARENT | ||
p6eval | std 30454: OUTPUT«ok 00:01 107m» | ||
TimToady | don't do that :) | ||
masak | :) | ||
ash_ | so, our means "make a lexical" which references a package with the name of the current package? | ||
TimToady | std: GLOBAL::PARENT | ||
p6eval | std 30454: OUTPUT«===SORRY!===Undeclared name: 'GLOBAL::PARENT' used at line 1Check failedFAILED 00:01 107m» | ||
ash_ | and our in the global scope makes variables for GLOBAL | ||
TimToady | ash_: except without the name | 23:45 | |
23:45
cdarroch left
|
|||
ash_ | yeah, so "our $a" does a GLOBAL::<$a> | 23:45 | |
and a lexical $a (assuming your not in another package) | |||
jnthn | I'm still trying to work out how on earth to implement things like my $x = package { our $y } | ||
TimToady | yes, but the compiler, at the point it's processing 'our', doesn't care whether there's a name or not | ||
jnthn | TimToady: In | ||
TimToady | it just knows the $*CURPKG as a ref | 23:46 | |
jnthn | my @x; for 1..5 { @x.push(package { our $x }) } | ||
1 package of 5? | |||
ash_ | ah, got ya, i am not keeping track of a $*CURPKG | ||
jnthn | *or | ||
ash_ | i'd guess 5 anonymous packages | 23:47 | |
(personally) | |||
masak too | |||
jnthn guesses 5 too | |||
Just want to be sure that it is as hellish to implement as I expect. :-) | |||
(I'm increasingly skeptical we'll manage it in R*, though if not I'll try and get us a good error message saying it's NYI.) | |||
ash_ | how would you access $x? @x[0]::<$x> to access $x? | ||
masak | you mean you'd prefer to detect when two arbitrary packages were equivalent? :P | ||
TimToady | well, you make separate subs for 'sub {...}' | ||
jnthn | TimToady: Yeah, it's what I'd expect. | ||
TimToady: Just means that it also takes me from a hacky way to implemnt it to no clue how to if it's 5 seperate ones. :-) | 23:48 | ||
Almost certainly it's post-R*, anyways. | |||
Stuff we don't support doesn't stop us being a subset. :-) | 23:49 | ||
23:49
hercynium left
|
|||
ash_ | can you assign a package to a variables? like alias Foo::bar::long::name as blah or to $blah ? | 23:49 | |
TimToady | The name of a package itself is the type object, which is undefined. To get the actual package object, add '::' on the end | 23:51 | |
so Int is a type object, but Int:: is the package associated with Int | 23:52 | ||
jnthn | TimToady: Alternatively, use Foo.WHO ? | ||
TimToady | and it is a hash, as jnthn++ points out | ||
masak goes to bed | |||
jnthn | That is, Foo:: is a nicer way to write Foo.WHO ? | ||
masak | 'night, #perl6 | ||
jnthn | o/ masak | ||
TimToady | so Int::<xxx> would look for Int::xxx | ||
23:52
masak left
|
|||
TimToady | WHO is intended more for the exact pedigree of a module, really | 23:52 | |
ash_ | rakudo: class Foo { ... }; my $x = Foo::; my $y = $x.new; | 23:53 | |
p6eval | rakudo 395433: OUTPUT«Could not find sub &Foocurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
jnthn | Dalmatian! Terrier! | ||
ash_ | std: class Foo { ... }; my $x = Foo::; my $y = $x.new; | ||
p6eval | std 30454: OUTPUT«ok 00:01 108m» | ||
ash_ | so, $y in that example would have a Foo.new? | ||
TimToady | more like Spot the 3rd, son of Spot and Missy | 23:54 | |
unless it was really Fido | |||
ash_: no, that'd probably be a Stash.new | 23:55 | ||
ash_ | hmm | ||
why a new stash? | |||
TimToady | because you said .new | ||
and $x contains something whose .WHAT is Stash | 23:56 | ||
sorear -> backlog | |||
TimToady sighs, because he's still about 24 hours behind... | |||
ash_ | okay, so, if you did module Foo { sub bar { "Foo::bar" }; }; my $x = Foo::; say $x::<bar>; # prints "Foo::bar" ? | 23:57 | |
TimToady | std: module Foo { sub bar { "Foo::bar" }; }; my $x = Foo::; say $x::<bar>; | 23:58 | |
p6eval | std 30454: OUTPUT«ok 00:01 111m» | ||
TimToady | hmm, that should really fail to compile | ||
I wonder how it parsed | 23:59 |