»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
lichtkind TimToady: do you consider it? 00:30
lichtkind night heros 00:40
colomon o/ 01:31
sorear hello colomon 02:11
colomon Hello! Seems like finishing finals has you back working at niecza with a vengence. 02:12
sorear :) 02:17
sorear ping jnthn. 02:30
sorear lovely. I just noticed that niecza's <nibbler> (quoted constructs, block comments) 02:47
is O(n^2)
now I know why commenting out 1500 lines with #`『』 is so slow!
colomon O(n^2)-- 03:09
sorear ... UNDEAD BUG 04:22
so much for "upgrading mono fixes the amazing byte array breakage"
wow. 04:26
only 6 commits to Mono since I last updated
back in Jan-Feb, I normally saw 6 commits *in the time it takes to compile* so any installed mono would necessarily be outdated
sorear I knew it; the problem *is* contingent on having dissimilar assemblies in with the same name in different AppDomains 05:09
benabik sorear: Separate AppDomains not as separate as they should be?
sorear benabik: I guess 05:10
I know you can segfault the AOT-compiler by giving it two versions of the same assembly
and I've always had a bad feeling about this
whee, I've broken off the Mono bug from any dependency on running Perl 6 code 05:12
it's all misbehaving C# now. (ok, 10,000+ lines of it, but I can fix that)
jdhore1 <sorear> only 6 commits to Mono since I last updated <--- I'm guessing this is because Attachmate dissolved the Mono team so they've been working more on getting employed than Mono 05:14
sorear jdhore1: yeah, I also blame the community disruption
jdhore1 ah
sorear screams 06:03
the bug just *stopped manifesting* in my test area 06:04
I've reverted all of my changes to the last broken revision. No help
I would suspect an intermittant hardware failure at this point, except that it's still bugging for my production code 06:05
sorear obviously there is some variable that I have not adequately controlled for. 06:11
it's sensitive to some amazingly small things. 06:13
"cp -a lab1 lab2" can make a lab2 that fails to reproduce the bug
on second thought, the filename lengths were different
that could affect GC timing, maybe, I guess? 06:14
and this is definitely a GC involved fail
sorear \o/ 06:17
controlling for the length of the current directory's name has made the fail reproducable
too bad printf debugging is quite useless now 06:21
gdb time
sorear is working under the guess that there's a race between runtime code generation and the GC, which is causing garbage to be copied into the runtime data under very special circumstances 06:50
sorear \o/ 07:10
SUCCESS
time to 1. file a mono bug 2. implement a workaround in niecza
sorear bugzilla.novell.com/show_bug.cgi?id=696817 # hopefully a good report 07:39
dalek ecza: 3cbbfcd | sorear++ | / (4 files):
Implement workaround for DefineInitializedData/dynamic assembly/sgen incompatibility
07:56
ecza: ae3d3b7 | sorear++ | / (3 files):
Add Any.delete-key, Hash.delete-key, Bool.Numeric accelerators
08:17
ecza: de5e663 | sorear++ | lib/ (3 files):
Avoid redundant cloning of Any type variable
08:18
sorear good night #perl6 08:21
mberends good night sorear 08:27
sayu hello 09:45
mberends hello sayu
masak hello, #perl6. 10:00
tadzik witajcie, zebry 10:13
masak czesc, tadeusz. 10:15
tadzik jak leci Carl? 10:15
masak dobrze, bardzo dziekuje. 10:16
a ty?
tadzik też dobrze, dziękuję 10:17
masak akcenty. showoff :P 10:18
tadzik masz na myśli: popisówa? :P
this channel is super awesome
masak :D 10:19
tadzik and it's rather Ogonki (tails) than akcenty. Akcenty are purely oral, the tails are the things you attach to letters to create new letters
masak oh right.
I used to know that... :)
masak I didn't get the 'masz na mysli' line at all, by the way. 10:19
tadzik "did you mean: {"showoff".to-polish(:informal)}" 10:20
masak ah.
masak "popisówa" means something like "performance", no? 10:20
so that kinda makes sense. 10:21
tadzik no, not really
"popisywać się" is "showing off", "popisówa"... I don't think it's even in a dictionary, but it's the act of showing off
no, it's not in a dictionary
masak ok, so here I go again, then. 10:22
ogonki. popisówa :P
tadzik ;) 10:23
masak I will always have a soft spot for the Polish language.
tadzik now that I look at that, "popisówa" may be something related to performance, noun 10:24
at first I thought of performance, verb
you say "popisowy numer" as the key point of a performance, when it comes to acrobacy or illusionism or something like that
masak: why is that?
masak based on what you just said, I can't help wonder if "popisówa" isn't an adjective. 10:25
it looks like the sing-fem form of "popisowy". 10:26
which is an adjective.
tadzik no, "popisówa" is a noun. It may be a nounisation of "popisowy" 10:27
masak ok.
tadzik "popisowa popisówa"
masak oh wow. so the ogonek actually makes a difference there?
er, "ogon" 10:28
oh, both forms exist :)
tadzik ogonek is fine. You know what? I dnd'nt even notice that the only difference here is the ogonek
masak :P
tadzik yeah, it changes the word completely. You see, it's not just the accent :)
masak heh. 10:29
tadzik ó is just a u written in a fancy way, so you spell that exactly the same as "popisuwa", the last one being a ortographic error of course
masak funny thing; огонёк means something completely different in Russian. means "twinkle" or "little light".
tadzik ó and u, like "rz" and ż are exactly the same things, when spelled
masak tadzik: yeah. orthographic accidents of history, I guess. 10:30
tadzik I hope they won't become history very soon. Although when you look at the young people, and I include people of my age, some of them are so ortographically impaired that I wonder if Polish won't end up massively simplified over the time 10:31
The comitee of a Polish language has already made an effort of making things allowed just because people write them incorrectly anyway 10:32
I can understand that, but having a bit of a language purist that drives me nuts as well
masak there's a tendency for simplification in every language. simply because the learning process is imperfect and sometimes people's spelling errors take hold and remain. 10:33
masak it's only from a static point in history that things feel completely hopeless :) 10:33
tadzik my favourite joke, correcting "tą" and "tę" usage (almost no one can use it correctly, even professors or people of this sort), is becoming a dying joke because the comitee has allowed the incorrect usage of "tą" in informal speech, and recently even in informal writing 10:34
but almost no one knows that anyway, so the joke is still on ;) 10:35
masak :) 10:36
ostrzyżenie & 10:39
tadzik :D 10:40
mberends noms a Śliwka Nałęczowska in an attempt to feel in-topic 10:41
mmm, /me noms a nother one ;) 10:42
tadzik oh, you still have them? :) 10:57
sweets don't have such a long lifecycle in my sorrounding :)
mberends :-) 10:59
mberends tadzik: here they have a half-life, as the population shrinks I try harder to save them. and randomly they disappear :) 11:09
tadzik ;) 11:17
Moukeddar Hello O/ 13:19
tadzik hello Moukeddar 13:34
Moukeddar sadly i have to go 13:36
later
masak I haven't really started seeing the deep parallels between Dependency Injection, testability, and some slightly more nebulous notion of "good, durable design", until fairly recently. 13:52
tadzik playing a ball with my nephew I got an idea for a Perl6-based build system, basically "I don't want to write makefiles, something is ought to do the dirty work for me" 14:34
I imagine plugins for doing the dirty work for specific languages. Maybe I'll end up reimplementing the wheel, if not the square
pmurias tadzik: did you take a look at scons? 14:42
ruoso always gets back to plain make... 14:46
mberends knows the feeling too :) 14:47
masak that's the problem with those X that make up a "Tyrrany of X". :) they're in a sweet spot, and they're occupying it as a niche. 14:56
arnsholt I talked to some people at work about make on friday. We all agreed that it sucks and we wish it upon noone to work with make 14:58
Also, that all the alternatives are worse =)
tadzik phenny: tell pmurias no, haven't yet 15:07
phenny tadzik: I'll pass that on when pmurias is around.
tadzik arnsholt: how about this scons thingy?
scons looks more or less like a thing I'd want to use 15:09
arnsholt tadzik: I've not tried scons, but what I've heard about it hasn't been too good unfortunately 15:14
tadzik though it doesn't make running external commands too easy it seems, as I can see from the docs. I've been reading them for like 5 minutes though 15:15
masak there's also Rake. and probably many others. 15:21
arnsholt That'd be big minus in my book, since running external commands is pretty much my only use-case for make ATM
masak thing is, even if they *were* better than make (along some dimension that matters), they're not going to replace make overnight anyway. 15:22
tadzik I don't care who replaces what. I want a build system that does what I want :) 15:29
make is here to stay, in one form or another (see cmake)
masak aye. 15:32
pmichaud good morning, #perl6 15:38
tadzik good morning pmichaud 15:40
sorear good * #perl6 15:47
masak morning, pmichaud, sorear. 16:02
sorear o/ masak 16:11
masak decides to build rakudo/nom 16:32
tadzik always funny 16:36
sorear has rerun the Profiler of Doom 16:45
masak oh, --gen-nqp :) 16:52
pmichaud TimToady: ping 16:56
pmichaud TimToady: larger question.... how should a sequence signal to the caller that the List it returns is infinite? (more) 16:58
TimToady: currently, I have it locally that a sequence ending in * returns a Parcel containing the generator portion and a whatever star (i.e., ,*) 16:59
for example: 1,2,3 ... * returns a (<generator> ,*) Parcel, and the Parcel knows that it's "infinite" because of that final whatever star
but this doesn't seem to quite work when the sequence has a terminating iterator, as in 17:00
1,2, { last if $_ >= 5; $_+1 } ... *
because the sequence ends up being (1,2,3,4,5,*) instead of (1,2,3,4,5) 17:01
do we: (a) come up with a different mechanism for signaling infinite/whateverish, or (b) always have the final whatever star in a sequence that ends with * ? 17:02
(or (c) other)
EOQ
masak building rakudo/nom dies with the error "Cannot open output file Perl6/ModuleLoader.pbc" here. 17:05
pmichaud (d) I can give Lists an "$!infinite" or "$!whateverish" attribute that is somehow set by whatever is creating the list 17:08
(if so, how... thus returning to original question :-)
masak pmichaud: feels like a question for github.com/perl6/mu/blob/master/misc/pm.txt ... 17:10
pmichaud masak: yes, I'm not sure how closely that's being monitored atm, though. 17:11
if I don't get an answer here, I'll put it into pm.txt
(and perhaps phrase it a little more clearly)
anyway, the ,* approach has a hiccup or two to clean up
tadzik masak: did you install your nqp? 17:13
pmichaud guess I need to work on the nom build system :) 17:18
sorear pmichaud: how involved are you in nom? 17:23
masak tadzik: I did 'perl Configure.pl --gen-nqp', but I didn't "install" nqp beyond that. 17:40
tadzik I see
pmichaud sorear: @otherstuff has prevented me from being involved in the day-to-day stuff of nom, although I hope that to change soon 17:41
pmichaud I've keep a high-level view of what's going on with nom and left it to others to carry the day-to-day stuff :) 17:41
afk, lunch
masak oh! 17:55
turns out the error I got was just because there is no directory 'Perl6'.
I have a feeling a path gets generated wrongly somewhere.
masak unless there's meant to be a 'Perl6' directory immediately in the 'rakudo' directory. 17:56
masak now it builds. 18:04
$ ./perl6 -e 'say 42'
masak Can only use get_who on a SixModelObject 18:05
sorear odd 18:13
#`(foo) stopped working altogether... not quite sure why yet
colomon sorear++ # just read the epic mono debugging comments in the log from last night 18:23
sorear o/ rindolf 18:32
felher are Lvalue subroutines already implemented in rakudo? 18:33
rindolf Hi sorear
Hi all.
felher hi rindolf
masak hi rindolf
rindolf What's new?
sorear felher: yes 18:34
felher: I don't beleive any current implementation has rvalue subroutines
perl6: my $x; sub foo () { $x }; foo = 5; say $x 18:35
p6eval niecza v5-120-gde5e663: OUTPUT«===SORRY!===␤␤Any()Preceding context expects a term, but found infix = instead at /tmp/4d4NuqQiXD line 1:␤------> my $x; sub foo () { $x }; foo ⏏= 5; say $x␤␤Parse failed␤␤»
..pugs, rakudo 30809a: OUTPUT«5␤»
sorear perl6: my $x; sub foo () { $x }; foo() = 5; say $x
p6eval pugs, rakudo 30809a, niecza v5-120-gde5e663: OUTPUT«5␤»
masak std: my $x; sub foo () { $x }; foo = 5 18:37
p6eval std 4b1b100: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix = instead at /tmp/WUysEoKeed line 1:␤------> my $x; sub foo () { $x }; foo ⏏= 5␤Parse failed␤FAILED 00:01 117m␤»
masak submits rakudobug 18:38
felher sorear: Ah, great. I tried it with 'sub something() is rw { ... }'. The current way is diffrent to what S06 says, isn't it? Or am i just misunderstanding something? 18:40
sorear perl6: my $x; sub foo is rw () { $x }; foo() = 5; say $x 18:41
p6eval niecza v5-120-gde5e663: OUTPUT«5␤»
..rakudo 30809a: OUTPUT«===SORRY!===␤Confused at line 22, near "sub foo is"␤»
..pugs: OUTPUT«*** ␤ Unexpected "()"␤ expecting trait or block␤ at /tmp/2XOXAMyaDq line 1, column 22␤»
sorear perl6: my $x; sub foo () is rw { $x }; foo() = 5; say $x
p6eval pugs, niecza v5-120-gde5e663: OUTPUT«5␤»
..rakudo 30809a: OUTPUT«===SORRY!===␤No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Mu $child, Role $r)␤:(Routine $r, Any :default($default)!)␤:(Code $block, Any $arg?, Any :export($export)!)␤:(Mu $child, Mu $parent)␤:(Mu $type where ({ ... }), Any
..:rw($rw)…
sorear felher: all subs are rw for now because nobody can figure out how non-rw subs are supposed to work 18:41
niecza explicitly ignores "rw" because I want to be able to write futureproof code 18:42
someday, we're going to work out what non-rw means 18:43
felher sorear: I see, thnx :)
masak forgive me, but what's so mysterious about non-rw?
sorear the specs are written in a very head-in-the-clouds way. one of the rules we set ten years ago was that TimToady was not allowed to look at the implementations 18:44
sometimes it's hard to figure out how to interpret them
masak sure. 18:45
rakudo: 4 = 5
sorear masak: the main interesting cases are things like sub foo () { @obj }
p6eval rakudo 30809a: OUTPUT«Cannot modify readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 22:/tmp/5WEPUYxarh␤»
masak sorear: I figger a non-rw sub would be one that replied something like that.
sorear: oh! arrays.
sorear masak: does that return a read-only pseudoarray that proxies to @obj?
masak thinks
sorear the scalar and Parcel cases are not particularly hard
masak there's a rule (elsewhere) in the spec saying of arrays that "readonliness only goes one level deep". 18:46
I think it's in relation to parameters.
sorear we could also have @obj decaying into a read-only slice, but that would destroy .kv and other array functionality
masak would be nice if the same could be made to hold here.
sorear readonly array parameters also make no sense to me.
masak why not? 18:47
sorear same reason really
I don't see a sane way to take an arbitrary Positional and make it readonly
maybe we need a new allomorphic flag for this 18:48
masak clearly at least Array needs to have some support for it. 18:53
masak I agree that one can not reasonably expect all user-defined Positional types that anyone will ever write to play along with some readonly-related rules. 18:55
but... one can ask nicely :)
sorear I guess we need to invent a new set of rules for that.
masak hah, rakudo/nom is funny: 18:56
$ ./perl6 -e '2'
Class 'Int' not found
sorear reference-level allomorphism won't do - my $foo = @x strips off that level
do you think it would make sense for list types to have an ASREADONLY method, masak? 18:57
we could have it default (at the Any level) to just return self
masak sorear: maybe.
sorear Array and Hash can return readonly proxy objects 18:58
masak (I'm guessing the method name was just a suggestion) :P
sorear Parcel distributes ro-ness over its children
felher So how can i return the value of a private attribute of a class? I can not write get_private_attribute() { return $!privat_attribute; } as that would expose the attribute. 19:02
tadzik why don't you want a public accessor?
dalek ecza: 048c930 | sorear++ | / (2 files):
NIECZA_VERBOSE_EXCEPTIONS to print .args.perl in backtraces
19:04
tadzik niecza: class A { has $.foo = 5; }; A.new.foo = 7 19:05
p6eval niecza v5-120-gde5e663: ( no output )
tadzik rakudo: class A { has $.foo = 5; }; A.new.foo = 7
p6eval rakudo 30809a: OUTPUT«Cannot modify readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 22:/tmp/0mU494jvBM␤»
tadzik sorear: nieczabug above?
sorear tadzik: yes, ultimately the same as the lack of ro subs
rakudo: class A { has @.foo = 1,2,3 }; A.new.foo[1] = 7 19:06
p6eval rakudo 30809a: ( no output )
tadzik sorear: I see
rakudo: class A { has $!foo; method a { return $!foo }; }; A.new.a() = 19 19:07
p6eval rakudo 30809a: ( no output )
tadzik rakudo: class A { has $!foo; method a { return $!foo }; }; my $a = A.new; $a.a() = 19; say $a.a
p6eval rakudo 30809a: OUTPUT«19␤»
felher tadzik: Let's say I have the following class: >> class Man { has $!is_werewolf; method is_werewolf() { if not is_fullmoon() { return false; } return $!is_werewolf; } } <<. As one can only identify a werewolf during fullmoon, i have to check if its fullmoon first. If so, i return the attribute, otherwise false;
tadzik oh rakudo, you so crazy
felher: yeah, I can see the issue 19:08
man, that looks _broken_. I hope that's not intentional
masak rakudo: class A { has $!x; method x { my $x = $!x; return $x } }; my $a = A.new(:x(5)); $a.x = 42; say $a.x
p6eval rakudo 30809a: OUTPUT«5␤»
masak \o/
tadzik masak: is the behaviour in my example correct? 19:09
masak tadzik: no, it's not intentional. routines are supposed to be non-rw by default.
known issue.
tadzik so, a rakudobug?
thank FSM
masak an old one, yes.
sorear ahahahaaa 19:15
niecza: #`(foo) say 5
p6eval niecza v5-120-gde5e663: OUTPUT«Unhandled exception: Unable to resolve method balanced in class Any␤ at /home/p6eval/niecza/src/STD.pm6 line 495 (STD STD.babble @ 13)␤ at /home/p6eval/niecza/src/STD.pm6 line 542 (STD STD.quibble @ 4)␤ at /home/p6eval/niecza/src/STD.pm6 line 671 (STD
..STD.comment:sym<#`(...)> @ …
sorear niecza: say 2; #`(foo) say 5
p6eval niecza v5-120-gde5e663: OUTPUT«2␤5␤»
sorear std: #`(foo) say 5 19:16
p6eval std 4b1b100: OUTPUT«ok 00:01 113m␤»
sorear the problem in niecza is that comp_unit is a 'rule'
in particular, the first thing it does is to parse whitespace
masak oh!
sorear it tries to parse the comment... BEFORE setting up %*LANG
masak oops. 19:17
dalek ecza: c9177a8 | sorear++ | src/niecza:
Fix #`() at beginning of file
19:31
pmichaud (is rw) ... routines and blocks that aren't declared 'is rw' have to remove the containers of any return values prior to returning them 20:00
in the past we've called it "decontainerize" 20:01
masak oh, right.
pmichaud when we get it implemented, it'll also resolve the "take bug"
masak there's been talk of 'take' doing the same too, methinks.
right. 20:02
but returned arrays wouldn't get decontainerized, I guess?
pmichaud they could be made into Seqs -- that ends up being the same 20:03
masak ah. 20:03
pmichaud but as a first cut ... no, I wouldn't decontainerize arrays
pmichaud the tricky part is decontainerizing things without losing laziness in the process 20:03
pmichaud I agree with sorear++ that we need to future-proof rakudo by parsing 'is rw' though... I'll start adding that 20:07
masak 'night, #perl6 20:10
felher 'night, masak 20:12
dalek kudo: b15c9ef | pmichaud++ | src/core/ (6 files):
Add dummy "is rw" trait for Routines. Doesn't do anything yet, but

will ultimately be needed. Also mark many of the existing core routines that are known to be "is rw".
21:11
pmichaud did we ever decide what the rw form (or readonly form) of 'take' should be? 21:12
there are a few places in the core setting where we use 'take' and need it to be rw.
sorear the rw form of take is specced to be take-rw, iirc 21:13
likewise there exist return-rw and leave-rw
pmichaud wow, don't think I ever saw those. (looking)
sorear the last is supposed to be useful when you need to have an rw return from a bare block
pmichaud yes, these would all be very useful 21:14
sorear I don't know if map is specced to be rw yet but it would be extremely useful
pmichaud I'm pretty sure it must be 21:15
I'm also curious about some of the others (.values, .pairs, etc.) 21:16
pmichaud grrrrr... can't irclog search for "take-rw" 21:16
ah, but I see it in S06 21:18
wow, how did I miss that commit last June? 21:20
sorear pmichaud: I have issues with your idea of using Seq (more) 21:25
sorear my @bytecode; sub bytecodes() { load-stuff unless @bytecode; @bytecode }; say bytecodes()[13994593] 21:26
it feels wrong to me for "is rw" to turn O(n) code into O(1) code
pmichaud I don't follow here 21:27
and using Seq was just conjectural
sorear ok 21:28
suppose @array is an array with, say, 10 million elements
sorear "return-rw @array" - this is just returning a reference to the Array object, not more expensive than "return 5" 21:28
"return @array" - ??? 21:29
pmichaud you're objecting to the notion that we end up creating a 10-mil element Seq as a result? 21:29
sorear yes
pmichaud I don't disagree. But I'm not the language designer. 21:30
my impression from past discussions has been that ro-ness ends up trumping efficiency here.
it wouldn't bother me if we didn't enforce ro-ness on arrays.
sbp can't you return a reference to an ro object? 21:31
(might be an extremely stupid question, don't entirely follow)
pmichaud there's also the possibility that there could be a Seq that is able to shadow an existing Array without having to clone its elements 21:32
i.e., it could override the at-pos to decontainerize elements as needed
sbp: in this case we're trying to make a rw-object (array) into something that is ro 21:33
sbp: but more precisely, what ends up having to happen is that we have to mark all of the elements of that array as ro
sbp ah, so you were suggesting to flag the array as ro rather than all the elements, and make the ro-marking kind of lazy?
(well, not the array itself, but marking the shadow-Seq) 21:34
pmichaud sbp: possibly. I don't have a good answer to this issue at the moment, tbh -- because I don't know that the speced semantics are clear yet
so my position is more of "what do we want the semantics to be" rather than "here's how we do it"
sbp I see 21:35
thanks
pmichaud my interpretation of things that have been discussed in the past (and my memory is foggy here) is that the array elements should end up acting ro
and the shortcut mechanism at present for doing this is to create a Seq
pmichaud but that can be expensive if the array is large (as sorear++ rightly points out) 21:36
dalek ecza: 767fb25 | sorear++ | lib/CLRBackend.cs:
Fix constants in void context breaking the compiler
21:42
ecza: 5ef2e84 | sorear++ | src/niecza:
New linear time nibbler
kudo: 048573b | pmichaud++ | src/ (2 files):
Add take-rw, to allow taking of rw containers instead of lvalues.

now we can start to correct that.)
sorear hmm... linear time nibbler did NOT make a huge dent in parser slowness (for the STD.pm6 benchmark) 22:34