»ö« 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. |
|||
[Coke] | sorear: 5 test files failed in niecza spectest | 00:02 | |
djanatyn: the SYNopses have an IO chapter. Not sure if the book does. | 00:03 | ||
japhb | The good news is that the performance of @A X~ @A is only slightly worse than linear in (@A X~ @A).elems, and that could just be a matter of the size of the strings. The problem seems to be that the coefficient sucks -- only ~600 elements/second on my box. | ||
00:04
alester left
00:15
donri left
|
|||
djanatyn | okay, got it :D | 00:16 | |
perl6 is fun! | 00:17 | ||
00:20
replore_ joined
|
|||
djanatyn | I'm a little confused on how regex works, though. | 00:20 | |
[Coke] | they're... a little different than from p5. | 00:21 | |
djanatyn | in the original perl5 code I was writing, I had the code: for (<FILE>) { if (/^DTSTART:(.+)/) { print "date: $1\n"; } } | 00:22 | |
00:26
Grrrr left,
DarthGandalf left
00:27
MayDaniel left
00:28
DarthGandalf joined
00:31
Grrrr joined
|
|||
djanatyn | are $1, $2, and $3 just like in perl5? | 00:40 | |
00:40
wolfman2_ left
00:41
daniel-s joined
|
|||
[Coke] | I believe they start at 0 now. | 00:41 | |
djanatyn | aaaaaaaaah | ||
okay, that makes more sense | |||
I always wondered why they didn't start at zero | |||
that also explains why my code was acting weird | 00:42 | ||
[Coke] | nom: "DTSTART: foobar" ~~ /^^ DTSTART: (.*)/ && say $0 | 00:43 | |
p6eval | nom 36d829: OUTPUT«=> <: foobar>» | ||
djanatyn | do I have to escape \: now? | 00:44 | |
00:45
japhb left
|
|||
[Coke] | nom: "DTSTART: foobar" ~~ /^^ 'DTSTART:' (.*)/ && say $0 | 00:45 | |
p6eval | nom 36d829: OUTPUT«=> < foobar>» | ||
[Coke] | sorry, yes, colon is, as in many places in p6, special. | ||
djanatyn | ah, that's okay | 00:46 | |
yay, I've got it doing the same thing as the perl5 code in less lines | 00:49 | ||
gist.github.com/1326659 | 00:50 | ||
perl6 has macros? ...like, lisp macros? O_o | 00:53 | ||
[Coke] | the spec does. ;) | 00:57 | |
djanatyn | hmm, I | 00:58 | |
heh :) | |||
[Coke] | masak++ is working on them for rakudo. | ||
djanatyn | so, how do they work, exactly? | ||
and does any implementation have them yet? | |||
[Coke] | There's a been a lot of chat on the channel in the past week or so yet. No, I think masak's work is the first. | 01:00 | |
djanatyn | is the syntax for anonymous arrays the same as in perl5? | 01:03 | |
[Coke] | nom: sort(1,2,3,5,6).say | 01:05 | |
p6eval | nom 36d829: OUTPUT«1 2 3 5 6» | ||
djanatyn | push @array, ($foo, $bar); # would this push a two element array containing $foo and $bar onto @array? | 01:06 | |
nope, looks like I need to change those parentheses to square brackets | 01:10 | ||
01:12
japhb joined
01:14
frzntoz joined
|
|||
colomon | [Coke]: is it normal to get a number of hangs in the test running? | 01:15 | |
01:18
envi_ joined
01:20
DarthGandalf left
01:30
cooper joined
|
|||
djanatyn | yay, I finished it :D | 01:31 | |
and made a sandwich and coffee too | |||
TimToady | \o/ | ||
djanatyn | now to split things into classes | 01:32 | |
TimToady | ooh, class warfare! | ||
djanatyn | and I can start processing the data and figuring out neat things about the birthdays of all my friends | ||
I can actually do a few things now. let's see which day of the year has the most birthdays: | 01:33 | ||
hmm | 01:37 | ||
how do I go through each key in a hash? | 01:38 | ||
01:38
whiteknight left
|
|||
djanatyn | like, in a for loop. can I just use a for loop? | 01:38 | |
djanatyn hasn't used perl in a long time >_> | |||
01:38
ponbiki left
|
|||
TimToady | %hash.keys in p6 | 01:38 | |
or often, for %hash.kv -> $key, $value { ... } | 01:39 | ||
01:39
ponpon joined,
ponbiki joined
|
|||
djanatyn | for %hash.keys -> $key { say "%hash{$key}"; } # like this? | 01:40 | |
okay, gerat | 01:41 | ||
*great | |||
TimToady | well, in that case you could just use .values | ||
djanatyn | that's awesome :D | ||
TimToady | but if you want to sort them, we usually use sort %hash.pairs -> $p { $p.key, $p.value) | ||
colomon | std: sort %hash.pairs -> $p { $p.key, $p.value) | 01:46 | |
p6eval | std be1f10e: OUTPUT«===SORRY!===Variable %hash is not predeclared at /tmp/skirxUJx7R line 1:------> sort ⏏%hash.pairs -> $p { $p.key, $p.value)Unexpected block in infix position (method call needs colon or parens to take arguments) at /tmp/skirxUJ… | ||
colomon | std: my %h; sort %hash.pairs -> $p { $p.key, $p.value) | ||
p6eval | std be1f10e: OUTPUT«===SORRY!===Variable %hash is not predeclared at /tmp/YrnSo8fiyL line 1:------> my %h; sort ⏏%hash.pairs -> $p { $p.key, $p.value)Unexpected block in infix position (method call needs colon or parens to take arguments) at /tmp/… | ||
TimToady | works better with a 'for' | ||
colomon | oh | ||
I thought you were doing some weird form of sort, with -> $p { $.pay, $p.value } as the schwartzian transform | 01:47 | ||
(which is why I was trying to check to see if it was actually legal. :) | 01:48 | ||
sorear | [Coke]: about a year ago, I implemented the simplest case of string macros for Rakudo, but the code was very horrible and I didn't want it merged | ||
[Coke] | colomon: when running the non-running tests? yes. You could try sorear's ulmit -t trick. | ||
colomon | [Coke]: so far I'm just watching and killing by hand | 01:49 | |
[Coke] | colomon: yah, that's what I did. ;) | ||
djanatyn | i'm just trying to figure out if multiple occurences of an item in an array occur | 01:51 | |
dalek | odel: 3d901f4 | diakopter++ | lua/ (18 files): tons of bugfixes |
||
djanatyn | I have an array of 2 element arrays, containing a date, and a name | 01:52 | |
I want to figure out how many occurences of each date there are | 01:53 | ||
so I made a hash, and each time a date occurs, it uses that date as the key and increments the value by one | |||
so I can track each occurence | |||
and, it turns out, when you try to increment a value for a key that doesn't exist, it intializes that key with a value of zero and sets it to one! | 01:54 | ||
so, hooray! | |||
[Coke] | autovivification. | ||
djanatyn | is that what it's actually called? | ||
TimToady | part of it | ||
the part that creates it | |||
djanatyn | that's awesome | 01:55 | |
TimToady | the other part is that operators know their bootstrap identity values | ||
djanatyn | perl 6 is the most polite language | ||
TimToady | nom: say [+] | ||
p6eval | nom 36d829: OUTPUT«===SORRY!===Unable to parse postcircumfix:sym<[ ]>, couldn't find final ']' at line 1» | ||
TimToady | nom: say [+]() | ||
djanatyn | it's like, "oh, it looks like it would be a pain in the neck to do this the hard way, let me just help you out" | ||
p6eval | nom 36d829: OUTPUT«0» | ||
TimToady | nom: say [*]() | ||
p6eval | nom 36d829: OUTPUT«1» | ||
TimToady | so if you do *= to an autovivified value, it assumes there's already a 1 there | 01:56 | |
djanatyn | good guy perl6 | ||
01:58
DarthGandalf joined
|
|||
dalek | odel: 16a57be | diakopter++ | lua/Runtime/MultiDispatch/MultiDispatcher.lua: missing file |
01:58 | |
djanatyn | :D | 02:02 | |
wow, that's amazgin | |||
*amazing | |||
gist.github.com/1326748 -- it totally works! | 02:06 | ||
interesting! | 02:15 | ||
the most common day for birthdays on my facebook is 10/30, with 7 birthdays | |||
02:16
snarkywork joined
|
|||
djanatyn | ...hey, that's today! | 02:18 | |
snarkywork | djanatyn: looks like ics is the iCal file format - en.wikipedia.org/wiki/ICalendar ? | ||
djanatyn: would be a great module for modules.perl6.org :D | |||
djanatyn | snarkywork: ...sure? | 02:19 | |
I'd like to do that | |||
but this code is really specialized and specific | |||
it doesn't actually parse iCal, it just uses regex to find specific information | |||
but yeah, that seems like a fun thing to do! I'll have to find out more about the iCal format. | |||
snarkywork | could always be generalised later - write a little Perl6 grammar for it, if you wished | ||
djanatyn++ # great idea :) | 02:20 | ||
supporting the whole iCal file format might be a lot of work, but you could start by just parsing a subset, and slowly build it up | 02:22 | ||
djanatyn | yeah | 02:23 | |
are there any good graphing modules for perl6, or should I just transfer this information into a flat text file and graph it with Chart::Clicker in perl5? | 02:25 | ||
snarkywork | djanatyn: not too sure (doesn't appear to be any on modules.perl6.org really) | 02:29 | |
02:37
envi_ left
|
|||
dalek | odel: 02121da | diakopter++ | lua/Runtime/MultiDispatch/MultiDispatcher.lua: most of MultiDispatcher porting |
02:47 | |
japhb | It seems that in rakudo, creating '@A X~ @B' using a sub based on gather/take is a LOT faster than a sub based on push'ing the results on a big array. Looking at the low-level code, it looks like part of what makes this fast is direct Parrot support for gather/take. In niecza, should I also expect gather/take to be much faster than @result.push? | 02:48 | |
TimToady | push typically has to keep reallocating the array as it grows, unless it cheats and peeks how much is incoming | 02:54 | |
(which p5 can do because it's eager) | |||
02:55
frzntoz left
|
|||
TimToady | using .plan might be faster than .push | 02:56 | |
02:56
wolfman2000 joined
|
|||
TimToady | but maybe not | 02:56 | |
dalek | odel: 718d631 | diakopter++ | lua/Runtime/MultiDispatch/MultiDispatcher.lua: rest of MultiDispatcher porting |
02:57 | |
diakopter | forgot about Signatures. 4 more files. | 02:59 | |
djanatyn | is there an article I could read about writing modules for perl6? | 03:04 | |
03:25
Chillance left
03:31
snarkywork left
|
|||
djanatyn | ...what exactly is := ? | 03:40 | |
is it defining an array as a function? | |||
my @fib := 1, 1, *+* ... *; # found this in a blog post | 03:42 | ||
benabik | djanatyn: := is binding. It makes a variable mean something else instead of store something else. | ||
nom: my $x = 1; my $y := $x; $y = 2; say $x | |||
p6eval | nom 36d829: OUTPUT«2» | ||
benabik | nom: my $x = 1; my $y = $x; $y = 2; say $x | ||
p6eval | nom 36d829: OUTPUT«1» | ||
djanatyn | oh, cool! | ||
so it's binding an expression to that array? | |||
benabik | It's binding the list to the variable. | 03:43 | |
djanatyn | oh, okay | 03:44 | |
is there an easy way to describe what * means when declaring a list? | |||
benabik | The * at the end of the list means there is no end. | 03:46 | |
*+* is roughly the same as sub($x, $y) { $x + $y } | |||
djanatyn | okay, I see | 03:48 | |
benabik | *, aka Whatever, is very useful. | 03:51 | |
nom: say (-pi, 0, pi).map: *.cos | |||
p6eval | nom 36d829: OUTPUT«-1 1 -1» | ||
03:56
mkramer joined
|
|||
dalek | odel: 65fea87 | diakopter++ | lua/Runtime/Signatures/SignatureBinder.lua: most of SignatureBinder.lua |
03:59 | |
04:17
daniel-s left
04:18
mkramer left
04:29
mkramer joined,
mkramer left
|
|||
djanatyn | man, now that I wrote some perl6 code, I'm so excited that I don't want to go back to reading my common lisp book ;) | 04:31 | |
common lisp is exciting, but kinda ugly sometimes | |||
and haskell is too hard for me right now | |||
perl6 is fun! I dunno what to do with it, though | |||
dalek | odel: 83f8cb9 | diakopter++ | lua/Runtime/Signatures/SignatureBinder.lua: rest of SignatureBinder.lua |
04:36 | |
04:41
bluescreen10 left
04:44
gorbad joined
04:49
kaleem joined
|
|||
dalek | odel: 377bf88 | diakopter++ | lua/Runtime/Signatures/Signature.lua: Signature.lua |
04:53 | |
moritz | o/ | 05:04 | |
dalek | odel: 48d5e3b | diakopter++ | lua/Runtime/Signatures/ (2 files): Parameter.lua |
05:05 | |
odel: 2b82bd4 | diakopter++ | lua/Runtime/Signatures/DefinednessConstraint.lua: DefinednessConstraint |
05:09 | ||
diakopter | yay; that completes the port of 6model/dotnet to Lua | 05:10 | |
moritz | why lua? because you can? | ||
diakopter | heh | 05:11 | |
an experiment I guess | |||
05:15
orafu left
05:17
orafu joined
|
|||
diakopter | now to start on porting jnthn's nqp->C# compiler to nqp->lua | 05:21 | |
theoretically it's just a matter of syntax, and adjusting for the one-indexed tables | |||
well, and converting the whole compile-to-assembly to compile-to-requirable-lua-module. | 05:22 | ||
that should be pretty straightforward. | |||
phenny: tell jnthn initial port complete; ready for emitter translation | 05:23 | ||
phenny | diakopter: I'll pass that on when jnthn is around. | ||
05:23
preflex_ joined
05:24
preflex left,
preflex_ is now known as preflex
05:34
kaleem left
05:35
drbean left
05:36
kaleem joined
05:38
daniel-s joined
05:41
drbean joined
|
|||
dalek | odel: dc565a3 | diakopter++ | lua/ (101 files): move into foo dir |
05:45 | |
odel: 662ac2e | diakopter++ | lua/ (90 files): rename foo to runtime |
05:46 | ||
05:58
molaf joined
06:01
drbean left
06:07
kaare_ joined
06:08
drbean joined
06:09
sftp left
06:13
molaf left
|
|||
sorear ponders priorities for the next 25 hours | 06:14 | ||
dalek | ecza: 1b30eff | sorear++ | lib/Cursor.cs: Better error message for /<perl>/ et al (fixes #69) |
06:20 | |
sorear | bugs? rewriting outdated documentation? BEGIN? | 06:22 | |
diakopter | BEGIN :) | ||
mberends would say docs | |||
japhb | Performance and correctness test of existing nom Str.Numeric(): gist.github.com/1327012 | 06:31 | |
japhb pops another yak off the stack | |||
sorear | niecza #73 is more complicated than it looks | 06:32 | |
diakopter looks | 06:35 | ||
dalek | ecza: dab6499 | sorear++ | lib/CORE.setting: List.pick shouldn't overwrite the variables it returns (fixes #73) |
||
japhb looks at the size of the current yak, looks at the clock, decides to sleep instead | 06:38 | ||
g'night all | |||
06:38
Trashlord left
|
|||
sorear | niecza: my $str = "a\"b\\c"; $str ~~ s:g { <["\\]> } = '\\' ~ $/; say $str | 06:39 | |
p6eval | niecza v10-245-g1b30eff: OUTPUT«a\"b\\c» | ||
06:41
cooper left
06:42
koban joined
|
|||
sorear | nom: say <a b c>.pick xx 3 | 06:43 | |
p6eval | nom 36d829: OUTPUT«c c c» | ||
dalek | ecza: ab36838 | sorear++ | lib/CORE.setting: Escape backslashes and quotes in Str.perl (fixes #72) |
||
sorear | What exactly does BEGIN { @*INC.push: ... } mean? | 07:06 | |
moritz | what do you think it means? :-) | 07:07 | |
it means, at BEGIN time, push something to @*INC | |||
sorear | my first idea is that it modifies @PROCESS::INC, which is verboten since anything that cannot be saved is read-only at BEGIN time | 07:08 | |
moritz | "cannot be saved"? | 07:09 | |
sorear | when the compilation unit is serialized | 07:10 | |
moritz | why can't it be saved? | ||
sorear | not so much "read-only" as "inaccessible" I suppose | ||
because it's not per-module | |||
moritz surpresss his desire to yell "just make it work" | 07:11 | ||
sorear | heh, current niecza has a *horrible* hack dedicated to exactly that | 07:12 | |
moritz | :-) | ||
sorear | it recognizes BEGIN { @*INC.push("string-literal") } by AST walking and then modifies the search path correctly-ish | ||
moritz | I'm fine with changing it all to 'usb lib ...;', but rakudo doesn't implement that yet :( | 07:13 | |
and since neither approach is specced, the one used in roast is what worked in the earlier compiler(s) | |||
sorear | the other side of this question is, what should be the scope of BEGIN { @*INC }? | ||
I guess it can't reasonably be inherited by importing modules | 07:14 | ||
moritz | sorear: on second thought it could be a feature that all modules share @*INC | 07:15 | |
you set it up once in your mainline, and then the modules can just 'use' their dependencies | |||
masak | g'mornings, #perl6 | ||
sorear | allowing modules to share variables directly opens up a can of worms. | ||
moritz | \o masak | ||
sorear | o/ masak | 07:16 | |
masak | I need to understand this "cannot be saved when the compilation unit is serialized" business. | ||
moritz | how do other languages do it? | ||
masak | it seems to make BEGIN mostly useless. | 07:17 | |
sorear | moritz: most other languages do it by not having BEGIN at all, or not having precompilation | ||
Perl 6 is pretty unique for wanting both | |||
masak | what's precompilation? | 07:18 | |
sorear | masak: the basic rule in Niecza is, read-write access to local state, read-only access to data from imported modules | ||
masak | oh, saving compiled things. I see. | ||
sorear: makes sense. | |||
sorear | masak: A.pm6: 'use B; constant foo = B::bar' # this is ok | ||
masak | right. | ||
sorear | masak: A.pm6: 'use B; BEGIN { push @B::bar, 5 }' # this is not ok | 07:19 | |
masak | *nod* | ||
sorear | what I've decided to do is add a synthetic dynamic scope as the CALLER of all BEGINs, and add @*INC to that as local state | 07:20 | |
otoh, this won't allow modules to find their transitive dependencies, hmm. | 07:21 | ||
because of the caching of compiled modules thing I'm skeptical of anything that allows A to influence B's parsing | 07:22 | ||
masak: I'd like you to test your apps with new-niecza, ideally before the release tomorrow evening :) | |||
masak | will do. | 07:23 | |
oh, it's still Sunday where you're at? :) | |||
yes, of course it is. | |||
sorear | well, 0024 | 07:24 | |
masak | ah. | ||
I just arrived to $work. | |||
sorear | When I say "tomorrow" I often mean "after I've slept", even if it's already past midnight :) | ||
or as my mom puts it: "It ain't tomorrow 'till I've slept." | 07:25 | ||
masak | that's a fine rule-of-thumb ;) | ||
quietfanatic was saying something similar on Twitter the other day. | |||
twitter.com/quietfanatic/status/130...7524573184 | 07:28 | ||
sorear | Maybe the cache should be keyed on (unitname, @*INC) instead of just unitname...? | ||
.o( If I'm going to call it a cache I should probably give it a size limit and LRU eviction code ) | |||
OTOH, I've been thinking a bit about a whole-system redesign, elaborating on S11 and handling :auth, etc etc | 07:29 | ||
masak | ooh | 07:31 | |
I think those parts suffer slightly from overdesignitis, at least where things like module databases enter the picture. | 07:32 | ||
sorear | the place S11 really goes wrong imo is that it assumes the unit of software packaging is the single class | ||
masak | on the other hand, it's difficult to try to deliver on all of the promises without a module database... :/ | ||
07:32
dual left
|
|||
masak | sorear: what, according to you, is the unit of software packaging? | 07:32 | |
sorear | nobody is going to write POE6 as a single file | ||
masak | right. | ||
sorear | masak: a group of one or more files that have tight interconnections | 07:33 | |
CLR assemblies, Java jars, CPAN distributions - these are all instantiations of the same Platonic ideal and I think we would do well to move Perl6 closer to it | |||
masak | aye. | 07:34 | |
sorear | importantly, all of these systems have metadata common to and external to the various classes | 07:35 | |
masak | nice HN comment comparing teaching Scheme to teaching Python: news.ycombinator.com/item?id=3176295 | ||
(via @chromatic_x) | |||
sorear: prototype it in Niecza, without much regard for the spec. then we'll spec it. | |||
07:36
mkramer1 joined
|
|||
sorear | I agree with that comment | 07:37 | |
I'm really bad with these primitive concept things. I didn't _really_ get programming until I understood how to build a computer out of transistors | 07:38 | ||
07:39
Trashlord joined
|
|||
masak | ;) | 07:42 | |
I find it refreshing sometimes to remember that there are people who find assignment bewildering. I can't even recall a time when I did. | 07:43 | ||
sorear | for bureaucratic reasons I'm currently taking an intro to programming class. Most of my classmates don't grok assignment. | 07:44 | |
07:45
mkramer joined,
mkramer1 left
|
|||
moritz | sorear: what language are they teaching? | 07:48 | |
snarkyboojum | I still remember learning to pronounce ":=" in Pascal as "set equal to" heh #probably had to be there | ||
sorear | moritz: Java | ||
snarkyboojum | yay bureacracy | 07:50 | |
bureaucracy* | |||
dalek | ecza: a1c7d29 | sorear++ | / (3 files): Change BEGIN to be run immediately instead of an alias for INIT |
07:54 | |
07:55
baest left,
baest joined
|
|||
sorear | TimToady: is the assignment in my \x = foo; syntacticallyspecial? | 07:58 | |
TimToady: (I am thinking it has to be; if my \x were a normal declarator it would have to decide whether to make a scalar or list constainer) | 07:59 | ||
07:59
mishin_ joined
08:01
finanalyst joined
|
|||
masak | sorear: for many years I've found it almost immorally wrong to be teaching OO to intro-to-programming students. hearing that many of them don't grok assignment makes me more set in that opinion. | 08:06 | |
I wonder if we in the programmers' guild are exceptionally bad at the didactic bits. | 08:07 | ||
sorear thinks it's almost immorally wrong to teach OO *period*, but I digress | |||
masak | ;) | ||
08:10
GlitchMr joined
|
|||
masak was weaned on BASIC, so by EWD he's forever corrupted and probably shouldn't have opinions about didactics | 08:11 | ||
08:11
gorbad left
|
|||
masak | though I doubt that EWD would've appreciated OO in its different forms. | 08:11 | |
sorear | well by that logic we shouldn't let TimToady teach a language, nevermind design one | 08:12 | |
szabgab | tadzik: if I am not mistaken your blog post ttjjss.wordpress.com/2011/10/24/mue...or-perl-6/ got into ironman but not into PlanetSix, any idea why? | 08:13 | |
and apparently that's the only Perl 6 related post in the last week | 08:14 | ||
masak | :/ | ||
sorear | o/ szabgab | ||
szabgab | ./ | ||
masak | argh, gotta blog more... | ||
I have things to write about, just few tuits. | |||
szabgab | I have 3 wooden tuits in my hand | 08:15 | |
but they are heavily used | |||
masak learns about en.wikipedia.org/wiki/Dijkstra_Prize and wonders how many people have won a prize *and have the whole prize renamed in their honour* | |||
sorear | ow! my hand is bit by the circularity saw | 08:16 | |
apparently making enum Bool < False True > call EnumMap.new at BEGIN time adds a bunch of new ordering dependencies to the setting | 08:17 | ||
masak | pmichaud has been complaining about the circularity aspects of Bool. | ||
to the point where he doubts it's even possible. | |||
08:21
daxim joined
|
|||
sorear | *shrug* it's not really any more circular than the idea that ClassHOW is a class | 08:28 | |
at worst it will require knot-tying and fakery | |||
moritz | nom: say ClassHOW.HOW | 08:29 | |
p6eval | nom 36d829: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&ClassHOW' called (line 1)» | ||
moritz | nom: say Int.HOW.HOW | ||
p6eval | nom 36d829: OUTPUT«Method 'gist' not found for invocant of class 'NQPClassHOW' in sub say at src/gen/CORE.setting:5274 in block <anon> at /tmp/nC7CfX3KF8:1 in <anon> at /tmp/nC7CfX3KF8:1» | ||
sorear | niecza: say Int.HOW.HOW | ||
p6eval | niecza v10-248-ga1c7d29: OUTPUT«ClassHOW.new(...)» | ||
masak .oO( Alexandrian knot-tying as a way to solve problems ) | 08:32 | ||
Woodi | found something like 'CICS' en.wikipedia.org/wiki/CICS but wander what it realy is - something like Unix daemon or OS subsystem ? | 08:38 | |
snarkyboojum | briefly, for a newbie, what does YOU_WERE_HERE mean? :D | 08:40 | |
Woodi | and just wondering maybe such thing can be used to do STM work in Perl. or just maybe implement kernel module (accesible via syscal) to do Multi-Compare-And-Swap for transactions opearting on few structures at once... | ||
just something lov-lvl... | 08:41 | ||
low :) | |||
masak | snarkyboojum: it's YOU_ARE_HERE, and that's where your program is inserted into a setting. | 08:42 | |
08:42
GlitchMr42 joined
|
|||
snarkyboojum | Woodi: CICS is a mainframe system to run customer centric backend processing and stuff :) | 08:42 | |
masak: ah! that's sheds some light - the "where your program is inserted into a setting" - thank you | 08:43 | ||
masak | snarkyboojum: so the -n flag corrsponds to something like the program 'for lines() { {YOU_ARE_HERE} }' | ||
08:44
odoacre joined
|
|||
snarkyboojum | Woodi: I have used CICS is a past life #not that it's perl6 related :) | 08:44 | |
08:44
GlitchMr left
|
|||
sorear | Woodi: multi-CAS as a kernel module? do you have a clue what you're talking about? if not, can I help>? | 08:46 | |
snarkyboojum | anyone read the OMeta paper by Alessandro Worth, "Experimenting with Programming Languages"? Some cool ideas in there, Worlds being one of them. | 08:50 | |
Woodi | sorear: a little, just if such functionality as syscall would be fast enough comparing to implementations using few CASes | 08:51 | |
08:51
mj41 joined
|
|||
snarkyboojum | was also struck by the use of 'World' in masak++s macro gists | 08:51 | |
Woodi | snarkyboojum: so what is CICS ? what kind of software, daemon, library ? | ||
sorear | Woodi: lol | 08:52 | |
snarkyboojum | Woodi: a mainframe software system - unless we're talking about different things | ||
Woodi | sorear: if 90% of Fortune 500 use CICS for transaction then fast kernel module for transaction do not looks bad idea | 08:53 | |
sorear | Woodi: you're lucky if a syscall is 100 times slower than CAS | ||
Woodi: transaction, as in, you buy stuff from a company | |||
Woodi | snarkyboojum: but compared to Unix ? | ||
sorear | Woodi: not the same as STM at all | ||
Woodi: CICS handles business transactions | 08:54 | ||
Woodi: prints invoices, etc | |||
snarkyboojum | Woodi: it's software - it's runs on an OS, a Unix probably - nothing to do with STM or programming languages :) | ||
Woodi | sorear: but what it is... :) deamon, app ? | ||
sorear | Woodi: it does not matter | ||
Woodi: it is completely irrelevant | |||
Woodi | i know :) just looking for 'transaction mechanism' | 08:55 | |
sorear | You are frustrating me. | 08:56 | |
masak | snarkyboojum: 'World' is just a more fitting term for 'SymbolTable'. | ||
Woodi | sorear: it is not my intention! just creativity of someone who do not know something cannot be done :) | 08:57 | |
it somethimes work i hear | |||
snarkyboojum | masak: cool - World means something bigger in OMeta, but was just struck by the similarity in terminology | ||
masak | snarkyboojum: oh, I didn't know OMeta used the term. | ||
Woodi | snarkyboojum: how apps use CICS ? by sending request via network or via API from libraries ? | 08:59 | |
snarkyboojum | masak: check out bit.ly/urzzW3 - struck by quite a few design similarities between OMeta and Perl6 - though perhaps that's stretching | ||
really fun read too imo | |||
sorear | snarkyboojum: how do I convince Woodi that "implement STM using CICS" is not a brilliant maverick idea but rather patent nonsense? | 09:00 | |
snarkyboojum | sorear: I'm not really sure :) | ||
Woodi | sorear: i want functionality of transaction, pls do be so straight on names... | ||
snarkyboojum | Woodi: I'd rather not try and remember if that's ok with you :) It's pretty much off-topic here. | 09:01 | |
sorear | Woodi: in English, some words have more than one meaning | ||
masak | snarkyboojum: ah, I think I've seen this one before and at least skimmed it. looks interesting indeed. | ||
Woodi | not off topic at all | ||
masak | Woodi: when regulars tell you that you have misunderstood a word and you're off topic -- pro tip -- listen to them. | 09:02 | |
do not argue. that makes you look like a bit of a fool. and you're not one, I know that. | |||
in general, when people tell you "you are wrong about this", at least review your points before charging ahead and protesting. | 09:03 | ||
tadzik | hello #perl6 | ||
masak | good morning, tadzik | ||
Woodi | masak: problem is that i know that i not mess things, just compressed many things in 2 sentences | ||
sorear | masak: my thoughts here are "if only I could express myself eloquently in, say, Polish!" | 09:04 | |
tadzik | szabgab: seems that I forgot to set a category. Interesting that it got to ironman then, they probably show everything, including pictures of birds and squirrels | ||
masak | Woodi: I'm with sorear on this one. you're speaking nonsense. business transactions != database/software transactions | ||
Woodi: it's like someone were to say "I've heard trampolines are very powerful in software. I have a plank and some springs -- what do I do?" | 09:05 | ||
tadzik | szabgab: should be fixed now | ||
Woodi | masak: pls go to source - read what i say, ok ? | ||
masak | Woodi: I did. | ||
masak decides not to waste more time on this discussion | 09:06 | ||
sorear | stupid NullReferenceException acting all impossible to debug | ||
09:08
Chillance joined
|
|||
tadzik | szabgab: it got there just now, thanks for noticing | 09:34 | |
Woodi thinks mutexes can do semaphore work and something else can "do STM work", what I say. so assuming someone say something not always is that | 09:45 | ||
sorear | ahahaha - found the issue - BEGINs weren't getting lexical storage correctly allocated | 09:46 | |
need to get better at not taking the lowest level code for granted | |||
sorear sleep | |||
szabgab | I hate the trailing 's in English - or rather I don't understand it | 09:48 | |
dalek | p/bigint: f8beb9d | moritz++ | src/6model/reprs/P6bigint.c: avoid allocations and deallocations in bigints {s,g}eg_int jaeckel++ in #libtom told me that this works reliably, and a look into the source confirms it |
09:50 | |
geekosaur | Woodi thinks mutexes can do semaphore wor | 09:51 | |
masak | szabgab: do you mean just the Saxon genitive, or contractions like "it is"/"it has" -> "it's" | ||
? | |||
szabgab | "this years YAPC" | 09:52 | |
or "this year's YAPC"? | |||
moritz | the latter | ||
szabgab | isn't that the same as "this year is YAPC" ? | ||
moritz | no | ||
the 's indicates possesion | 09:53 | ||
szabgab | "Gabor's headache" | ||
moritz | "the YAPC belongs to this year" | ||
"years" would be plural | |||
geekosaur | sort of, you can implement semaphores using mutexes. you are also reinventing the wheel, possibly with more coners than is considered acceptable. likewise STM can be built from ore primitive components | ||
szabgab | so I think I have been doing this in the wrong way for 20 years now :) | ||
moritz | szabgab: I'm glab your mind is still flexible enough to admit that (not easy after 20 years) :-) | 09:54 | |
geekosaur | the "is" version only applies to "it's" vs "its" which is inconsistent with the more common possessive form, which is why many native English speakers get it wrong :) | ||
szabgab | emptyness is very flexible | 09:55 | |
geekosaur: that explains it | |||
masak | geekosaur: right -- if you learn only the rule "X's means possession", you'll get "its"/"it's" wrong. | 09:57 | |
jnthn | moritz: yay, nice :) | ||
phenny | jnthn: 05:23Z <diakopter> tell jnthn initial port complete; ready for emitter translation | ||
masak | it explains many of the grammatical errors related to "its"/"it's" because most of these people are actually *following the rule*, they just don't know about the exception. | 09:58 | |
moritz | good morning jnthn :-) | ||
jnthn | diakopter: Great! \o/ | ||
Grr, I want to do Perl 6 stuff all day, but probably should worry a bit about $dayjob things first :) | 10:00 | ||
10:05
GlitchMr_42 joined,
envi_ joined
10:06
envi_ left,
envi_ joined
10:09
GlitchMr42 left
|
|||
moritz | it's funny how I wrote those bigint tests, and started with a negative number and thought "there's no reason why negative numbers shouldn't work, but no harm done by being extra careful" | 10:12 | |
and of course they broke :-) | 10:13 | ||
jnthn | moritz++ # takes a negative view of my code | ||
;-) | |||
moritz | jnthn: I didn't think whose code it was, just general testing paranoia :-) | 10:14 | |
jnthn | moritz: I'm getting close with the repr refactors. Once they're done, I'll need to update Rakudo to cope with them. After that, I'll update bigint branch to work with it. Then we can make a Rakudo branch to start trying to integrate this there. :) | ||
masak | moritz++ # testing paranoiac | 10:15 | |
moritz wonders about implementing exponentation for bigints | 10:17 | ||
jnthn | moritz: Isn't there a function for that? | ||
moritz | libtommath offers mp_pow(mp_int base, unsigned long exp) | ||
which kinda makes sense, because when the exponent is larger than 'unsgined long', you're having a problem anyway :-) | 10:18 | ||
jnthn | :D | ||
masak | unless your base is 1. | 10:19 | |
jnthn | Then we'll still get the right answer even if we truncate :P | ||
moritz | or 0 | ||
masak | or -1. | ||
i and -i are fine too, I guess. | |||
moritz | but they are not Int | 10:20 | |
so not my problem right now | |||
masak | they are GaussInt :P | ||
jnthn | masak worries about imaginary problems :P | ||
masak has complex issues | |||
colomon++ # pun | |||
it's so typical of our "realist" culture, that we're allowed to have irrational problems and negative issues, but as soon as someone starts talking about something imaginary... | 10:22 | ||
...we get told to multiply by the complement and move on with our lives. | 10:23 | ||
geekosaur | "please rotate your phone 90 degrees and try your call again" | 10:25 | |
10:28
replore_ left
10:41
kfo joined
10:42
jesk left
10:44
jesk joined
10:45
kfo_ left
10:46
koban left
10:53
mishin_ left
11:01
pmurias joined,
preflex left,
preflex_ joined
11:02
preflex_ is now known as preflex
11:05
sftp joined
|
|||
bbkr | tadzik++ # MuEvent | 11:13 | |
jnthn | bbkr: Any chance you can check rt.perl.org/rt3/Ticket/Display.html?id=101912 is now fixed for you? | 11:17 | |
bbkr | jnthn: sure, i'll take a look at it after $dayjob, thanks for taking care of this bug! | 11:22 | |
11:22
SHODAN joined
|
|||
djanatyn attempts to install rakudo on windows | 11:27 | ||
Are there any perl 6 developers on windows? | |||
jnthn does Rakudo dev on windows | 11:28 | ||
Use ActivePerl + MSVC compiler tool chain. | |||
For a smooth experience | |||
:) | |||
djanatyn should really install cygwin | |||
jnthn | oh noes | ||
jnthn hates cygwin. | |||
I've no clue if Rakudo works under that or not. | 11:29 | ||
Just do a "real" Windows build :) | |||
djanatyn | I've been putting it off, since I don't have to use Windows very much | 11:30 | |
why do you hate cygwin? | |||
I like cygwin because I'm much more comfortable doing development in a *nix environment | |||
jnthn | It's sorta like *nix but sorta like Windows so you end up having to cope with the quirks of both. | 11:31 | |
djanatyn | Oh, not nice. | ||
I've used rakudo on fedora and on debian | 11:32 | ||
jnthn | It's probably fine if there already are cygwin packages for what you want. | ||
djanatyn | sure. | ||
Do you ever have any difficulties with writing portable perl6 code? | |||
or, is the current state of the implementations mature enough so that the code is portable no matter what? | |||
geekosaur | .oO { all together now: "Eunice!" } | 11:33 | |
jnthn | Given I do most of my Rakudo dev on Windows, it tends to get looked after quite well | ||
11:33
GlitchMr_42 left
|
|||
jnthn | There's a couple of test fails here and there that I didn't track down yet, but by and large Rakudo works nicely on Windows. | 11:33 | |
I suspect that Niecza also works nicely there too. | |||
Given it targets the CLR :) | 11:34 | ||
moritz | once you get parrot to build on windows, the hard part is probably over | 11:35 | |
jnthn | yes | 11:36 | |
11:38
Psyche^ joined
|
|||
djanatyn | wow, that was surprisingly painless | 11:41 | |
rakudo is working fine on my computer :) | |||
...thanks, jnthn ;) | |||
11:42
Patterner left,
Psyche^ is now known as Patterner
|
|||
jnthn | \o/ | 11:42 | |
djanatyn | maybe I could start using perl6 more often, now that I've got it on all my computers | ||
still having trouble thinking of good use cases, though | |||
all I do with my life is play games and do schoolwork ^_^; | |||
moritz | well, you can use it for math at the very least | 11:45 | |
djanatyn | :D | ||
for anything I've needed to do on windows, I've used python | |||
i'll think of more things to do with perl6 while at school | 11:46 | ||
see ya | |||
moritz | have fun | ||
masak | I bet there's a wide intersection between things that can be coded in Perl 6, and schoolwork. | 11:49 | |
11:58
coto joined
|
|||
coto | hi perl6 | 11:58 | |
i found in rakudo / src / core / Hash.pm line 77 | |||
self.{$key} = [ self.{$key}, $value]; | |||
if i change it to | |||
my $tmp = self.{$key} ; self.{$key} = [ $tmp, $value]; | 11:59 | ||
it works . but dont't konw why. | |||
maybe you want to give it a try? | |||
dalek | p: 91838e0 | mls++ | src/how/NQPClassHOW.pm: use reverse() method instead of manually reversing the mro array |
12:02 | |
12:02
finanalyst left
|
|||
coto | it is about hash stacking push | 12:03 | |
12:06
mkramer left
12:07
Vlavv_ left
12:10
aloha left
12:11
aloha joined
12:12
coto left
12:14
pothos_ joined
12:15
ab5tract joined
|
|||
moritz tries | 12:16 | ||
12:17
pmurias_ joined,
Juerd_ joined,
Tene_ joined,
Tene_ left,
Tene_ joined,
Vlavv_ joined
|
|||
tadzik | why shouldn't that work? | 12:21 | |
12:22
pmurias left,
baest left,
Trashlord left,
pothos left,
sivoais left,
sirmacik left,
smash left,
fhelmberger_ left,
Juerd left,
imarcusthis left,
Tene left,
yath left,
_ilbot left,
Juerd_ is now known as Juerd,
pothos_ is now known as pothos
|
|||
masak | rakudo: my %h; %h<foo> = [ %h<foo>, 42 ]; say %h.perl | 12:23 | |
p6eval | rakudo 36d829: OUTPUT«("foo" => [Any, 42]).hash» | ||
masak | rakudo: my %h = foo => [<value>]; %h<foo> = [ %h<foo>, 42 ]; say %h.perl | ||
12:23
Trashlord joined
|
|||
p6eval | rakudo 36d829: OUTPUT«maximum recursion depth exceeded in method defined at src/gen/CORE.setting:507 in method Parcel at src/gen/CORE.setting:4278 in method iterator at src/gen/CORE.setting:4337 in method reify at src/gen/CORE.setting:3953 in method gimme at src/gen/CORE.setti… | 12:23 | |
masak | yeah, that's gotta be a bug. | 12:24 | |
but I think it's been reported. | |||
coto: if I were you I'd write something like (%h //= []).push($value) | |||
12:26
baest joined,
sivoais joined,
sirmacik joined,
smash joined,
fhelmberger_ joined,
imarcusthis joined,
yath joined,
_ilbot joined
|
|||
Woodi | [D | 12:29 | |
12:36
envi_ left
12:39
bluescreen10 joined
|
|||
moritz | masak: Hash.push isn't supposed to create an array around single items | 12:40 | |
12:46
bluescreen10 left
|
|||
dalek | kudo/nom: 53dd308 | moritz++ | src/core/Hash.pm: fix Hash.push; fix proposed by coto++ |
12:48 | |
12:49
am0c left
12:50
tokuhiro_ joined
|
|||
dalek | ast: 684d27a | moritz++ | S32-hash/push.t: unfudge S32-hash/push.t for rakudo |
12:55 | |
tadzik | oh, it was broken before? I see the point now | ||
12:59
bluescreen10 joined
13:02
simcop2387 left,
simcop2387 joined
13:07
benabik left
13:13
simcop2387 left
|
|||
masak | moritz: um, I meant (%h<foo> //= []).push($value) | 13:17 | |
13:18
simcop2387 joined
|
|||
moritz | masak: yes, but same objection | 13:19 | |
masak | that is a .push to an Array | 13:20 | |
not a Hash | |||
moritz | masak: coto++ explained how to rewrite parts of Hash.push not to trigger a bug. I don't see how your line would have helped with that, since it doesn't match Hash.push()'s desired semantics | 13:21 | |
13:22
envi_ joined
|
|||
masak | oh, now I see what you mean. | 13:24 | |
yeah, it's two different use cases. | |||
13:24
kaleem left
13:32
GlitchMr joined
|
|||
dalek | p: ae3236c | mls++ | / (4 files): bump parrot revision to get directaccess support, use directaccess for most var lookups |
13:33 | |
13:35
cognominal___ joined
13:39
cognominal_ left
|
|||
djanatyn | I wonder, are there any perl-like languages on the JVM? | 13:40 | |
kinda off-topic, I guess | |||
colomon | There's JRuby, if you consider that sufficiently perl-like. | 13:47 | |
13:49
GlitchMr42 joined
13:51
JimmyZ joined
13:52
donri joined
13:53
thou joined,
GlitchMr left
13:54
pmurias_ is now known as pmurias
|
|||
geekosaur | in a skeevy-uncle^Wcousin sense? | 13:55 | |
jnthn | mls: In what cases don't we label it :directaccess? | 13:56 | |
mls: It feels like we should have been able to make that the default, and PAST::Compiler is smart enough to know when it's an issue. | 13:57 | ||
13:58
pernatiy joined
|
|||
mls | two reasons: 1) I didn't want to break existing code that uses its own lexpad/info implementation | 14:01 | |
2) rakudo's lexinfo implementation does that vivify magic on $_, $/, $! | 14:02 | ||
%_ | |||
( 1) means other languages ) | |||
jnthn | mls: aha | ||
yeah, those ones are special... | 14:03 | ||
and yeah, PAST::Compiler can't know. | |||
dalek | p: ca12593 | mls++ | src/PAST/SixModelPASTExtensions.pir: fix label name so that rakudo builds again |
14:04 | |
jnthn | mls: Does it have any measurable performance impact? | ||
moritz tries | |||
jnthn | er, where by impact I mean, positive impact ;) | ||
mls | It should speed things up a bit. Problem is, I don't have good benchmarks for nqp | 14:05 | |
moritz | building rakudo's setting? | ||
tadzik | yeah | ||
mls | could be that most of the time is spent in regex execution | 14:06 | |
14:07
benabik joined
14:09
ab5tract left
|
|||
jnthn | Last time I profiled at least 20% was spent in actions, and about 5% in the optimizer. So both of those should benefit. | 14:14 | |
moritz | should rakudo profit from it too? | 14:15 | |
tadzik | well, the compiler is faster, so I suppose yes | ||
moritz | the mandelbrot benchmark doesn't show much of a difference | 14:18 | |
jnthn | moritz: I suspect only when we patch Rakudo itself to use :directaccess | ||
Well, other than compile time | |||
But mandelbrot is dominated by its runtime. | |||
mls | the nqp compiler is not much faster, just about 1.5% | 14:21 | |
(I timed the compilations of Action.pm) | 14:23 | ||
[Coke] | 1.5% is nothing to sneeze at. | ||
... I wonder if that is a US only idiom. | 14:24 | ||
mls | dunno, am german ;) | ||
Anyway, I committed it so that I compare apples with apples when testing my stacked lexpad patch | |||
(and I also thought that it's a nice thing to have ;) ) | 14:25 | ||
moritz | mls++ | 14:26 | |
mls | I wish there was an easy way to get rid of those lexpad allocations | 14:27 | |
they don't do anything useful for nqp/rakudo, they just store the pointer to the context | |||
the lexical lookup could also take a context as extra parameter, but then it's no longer a vtable op and thus it gets much slower | 14:28 | ||
and I don't want to add extra vtable entries for lexical lookup | |||
jnthn | Such is the problem with making the protocol to everything in the VM be through a often ill-fitting set of v-tables. | 14:29 | |
The Rakudo lexpad does hold onto the odd other thing | 14:30 | ||
But really it'd just as easily be associated with the context instead. | |||
mls | yes, I looked at it. It also holds that default_named_slurpy thing set in the binder | 14:31 | |
jnthn | Right. | ||
But another GCable just to point to a couple of things is kinda costly. | |||
mls | Yes. For rakudo, the context *is* the pad. ctx + lexinfo is enough to get/set vars | 14:32 | |
that may be different for other languages, where the lexpad is more dynamic | |||
djanatyn | :\ ah, I just realized I was trying to write java code in perl6 | 14:35 | |
jnthn | mls: yes | 14:36 | |
djanatyn | I was about to write an accessor method for my perl6 class -_- | ||
jnthn | mls: But the current design penalizes languages that aren't so dynamic. | ||
14:38
lrnperl joined
14:46
simcop2387 left
|
|||
moritz | does t/spec/S14-roles/composition.t have passing TODOs for anybody else on rakudo? | 14:46 | |
14:46
simcop2387 joined
14:47
GlitchMr42 left
14:51
kranius left
|
|||
jnthn | moritz: I saw them, yes | 14:51 | |
moritz | great | ||
dalek | ast: 54eccb9 | moritz++ | S14-roles/composition.t: untodo passing tests in composition.t |
14:52 | |
14:52
Alejandro23 joined
14:53
Alejandro23 left
14:57
ab5tract joined
|
|||
moritz | nom: say (1 < * < 3).(2) | 15:03 | |
p6eval | nom 53dd30: OUTPUT«Bool::True» | ||
moritz | nom: say (1 < * < 3).(1) | ||
p6eval | nom 53dd30: OUTPUT«Bool::True» | ||
moritz | I guess it tries to evaluate (1 < 1) < 3 | ||
nom: say (1 < * < 1).(1) | |||
p6eval | nom 53dd30: OUTPUT«Bool::True» | ||
moritz | nom: say (1 < * < 1).(2) | 15:04 | |
p6eval | nom 53dd30: OUTPUT«Bool::False» | ||
sjohnson | happy halloween ! | ||
benabik | nom: say Bool::False < 2 | ||
p6eval | nom 53dd30: OUTPUT«Bool::True» | ||
15:04
PacoLinux joined
15:05
[particle]1 joined
15:06
[particle] left,
[particle]1 is now known as [particle],
_jaldhar left,
kranius joined
15:10
sirmacik left
|
|||
jnthn | moritz: I guess it's something like that, yes | 15:12 | |
moritz: Not sure how best to fix it. | |||
moritz | jnthn: probably needs to be special-cased in the currier | 15:14 | |
jnthn | moritz: Well, I'm not sure if the currier knows enough at the point it's invoked | 15:17 | |
benabik | nom: say 1 < 1 < 1 | ||
p6eval | nom 53dd30: OUTPUT«Bool::False» | ||
jnthn | I mean, if we have 1 < * < 10, then maybe it sees and transforms the 1 < *, and only after that sees the (already transformed thing) < 10 | 15:19 | |
benabik | nom: say (1 < $^a < 1).(1) | 15:21 | |
p6eval | nom 53dd30: OUTPUT«===SORRY!===Cannot use placeholder parameter $^a in the mainline at line 1, near " < 1).(1)"» | ||
benabik | nom: say {1 < $^a < 1}.(1) | ||
p6eval | nom 53dd30: OUTPUT«Bool::False» | ||
moritz | niecza: say (1 < * < 3).(2) | 15:34 | |
p6eval | niecza v10-248-ga1c7d29: OUTPUT«Bool::True» | ||
moritz | niecza: say (1 < * < 3).(1) | ||
p6eval | niecza v10-248-ga1c7d29: OUTPUT«Bool::False» | ||
moritz | niecza: say (1 < * < 3).(3) | ||
p6eval | niecza v10-248-ga1c7d29: OUTPUT«Bool::False» | ||
moritz | just do it like niecza does it :-) | ||
15:34
risou_awy is now known as risou
|
|||
dalek | ast: f8ffa96 | moritz++ | S02-types/whatever.t: tests for RT #102466, Whatever-currying of chained ops |
15:37 | |
kudo/nom: ee1a1c5 | moritz++ | tools/build/NQP_REVISION: bump NQP revision, just because we can |
15:40 | ||
15:42
benabik left
15:44
donri left
15:47
wolfman2000 left,
lrnperl left
15:56
ggoebel left
16:00
JimmyZ left
16:01
ggoebel joined
16:09
REPLeffect joined
16:10
REPLeffect left
16:11
REPLeffect joined,
REPLeffect left
16:13
dual joined,
ggoebel left
16:17
simcop2387 left
16:18
ggoebel joined
16:19
simcop2387 joined
16:22
donri joined
16:24
araujo left
16:25
araujo joined
16:32
GlitchMr joined
16:37
IngisKahn joined
16:42
ab5tract left
16:52
icwiener joined
|
|||
masak | jnthn: that sounds wrong (the 1 < * < 10 reasoning). even in the normal case of 1 < $a < 10, it can't build the thunk until it's seen all the comparisons. | 16:55 | |
masak installs the new Niecza | 16:57 | ||
jnthn | masak: I never said it was specific to this case. | ||
16:58
kaleem joined
|
|||
masak | oh. | 17:01 | |
nom: sub foo { say "OH HAI"; 4 }; say 1 < foo() < 10 | |||
p6eval | nom ee1a1c: OUTPUT«OH HAIBool::True» | ||
masak | jnthn: but it handles this case right... | ||
dalek | p/reprapi2: a743c97 | jnthn++ | src/ (9 files): Toss clone from the REPR API; it's just implementable in terms of the more primitive allocate and copy_to. |
17:02 | |
jnthn | masak: Yes | ||
masak: We already know it's about currying, no? | |||
masak | it's about priming, yes. | 17:04 | |
my point was that in the above case it seems to already be handling the $a correctly. on the face of it, there's no reason it couldn't handle the * the same way. | 17:05 | ||
I haven't looked at the code for chained comparisons, so I don't know how realistic it is that the same codepath handle the $a case and the * case, but they feel kinda similar. | 17:06 | ||
in both cases there's something that should be evaluated only once but compared twice. | 17:07 | ||
17:07
daniel-s left
|
|||
jnthn | Well, chained ones are handled by a pasttype chain | 17:08 | |
masak | according to Wikipedia, "Schönfinkelisation" has been proposed as an alternative name for currying. | ||
jnthn | ... | ||
masak | ok... | ||
TimToady | riigghhhhttttt....... | ||
masak | :D | 17:09 | |
TimToady is sad because curry is tasty | |||
17:09
daniel-s joined
|
|||
masak hugs TimToady | 17:09 | ||
17:10
MayDaniel joined,
MayDaniel left,
MayDaniel joined
|
|||
TimToady | may we should call it phởing, if we can figure out how it's like noodles | 17:10 | |
ingy | sorear: if there was a CLR yaml implementation, would it be easy to expose to niecza? | 17:11 | |
masak thinks of the awesome hanzi for a kind of noodles | |||
dalek | p/reprapi2: e4e4bb4 | jnthn++ | src/6model/ (8 files): Add gc_cleanup to REPR API; none of the current reprs need it, but bigint will. Not yet called. |
||
masak | en.wikipedia.org/wiki/Biang_Biang#T...bi.C3.A1ng | 17:12 | |
ingy | hi TimToady, made it safely to TimToady.next | ||
masak .oO( dynastic programming ) | |||
ingy: was there a workshop or conference of some sort recently? how was it? | 17:15 | ||
or is it about to happen? | |||
jnthn | Next 2 weekends are workshop filled \o/ | ||
Well | |||
partially | |||
:) | |||
masak | \o/ | 17:16 | |
TimToady | wow, I know all the subparts of it, but that's one impressive collection of radicals | ||
masak | sorear: my app works fine on niecza. bothersome error on compilation still remains, though. I'll try to track it down and golf it now. | 17:17 | |
sorear: but overall, things work just as fine as they did pre-merge. | |||
TimToady: I thought you might like it :D | |||
ingy | masak: I was hanging out in SF last week with rafl for GSoC Mentors thinger | 17:18 | |
TimToady | it's got ⻌ 穴 心 刖 龻 ⾺ and two 長's | 17:20 | |
17:20
am0c joined
|
|||
sorear | good * #perl6 | 17:21 | |
masak | sorear! \o/ | ||
TimToady | offhand I don't see any larger units, though the outside of the inside may be a 愈 variant | 17:22 | |
masak | I doubt that. | 17:23 | |
TimToady | and I haven't labelled all the hole characters in Ext B yet, so there could be something better there | ||
masak | the 刂 on the right doesn't look like the right part of your variant. and the roof is too different. | 17:24 | |
17:24
mj41 left
|
|||
TimToady | 愈 is used in variants that has sword on the right | 17:24 | |
the top is not hole though | |||
sorear | ingy: probably not too hard. | 17:25 | |
masak | knife == sword ? | ||
TimToady | yes, alternate gloss is all | 17:27 | |
masak | ok. | ||
TimToady | I tend to use 'knife' for the 𠚤 variant | 17:28 | |
masak | my computer can't display that one. | 17:29 | |
TimToady | but I've been known to rename radicals before, so I might change it | 17:30 | |
it shows in my firefox | |||
17:32
aloha left
|
|||
TimToady | some of my original radical names were more Japanese-oriented, and sometimes I undo that | 17:32 | |
dalek | p/reprapi2: 6dc6dc9 | jnthn++ | src/6model/reprs/P6opaque. (2 files): Teach P6opaque to delegate to other reprs where it should. We now longer special case handling of various things in P6opaque that we probably never should have, have the hooks for getting P6bigint correctly flattenable into P6opaque, etc. |
17:35 | |
jnthn | If anybody on non-Win32 wants to check reprapi2 builds for them, that'd be helpful. | ||
Next up: get Rakudo to build on it. | |||
IngisKahn | curious, what are you working on, TimToady? | 17:36 | |
TimToady | being able to describe any CJK character by describing its subparts and their locations | 17:42 | |
17:42
aloha joined
|
|||
TimToady | so the character in question comes out something like walk.o hole.it Heart.ib moon.iml sword.imr tiedthreads.imct 2.Long.imcbC horse.imcbc | 17:43 | |
but that could change is any of the subparts turn out to be other characters | 17:44 | ||
sorear | is it public? | ||
I suppose you've seen the ideographic description whatchamahicky in Unicode? | 17:45 | ||
TimToady | not yet, or I couldn't change my radical names :) | ||
IngisKahn | That sounds pretty cool | ||
[Coke] | jnthn: testing on OS X. | ||
17:46
kboga joined
17:47
risou is now known as risou_awy
17:49
sjohnson left
|
|||
jnthn | [Coke]: Danke. | 17:53 | |
dalek | kudo/reprapi2: 5711fcf | jnthn++ | src/binder/sixmodelobject.h: Update sixmodelobject.h. Unsurprisingly, build epicly busted. |
||
kudo/reprapi2: 63a6131 | jnthn++ | src/pmc/perl6lexpad.pmc: Update Perl6Lexpad for new REPR API. |
|||
17:54
MayDaniel left
|
|||
kboga | jnthn: fwiw, the reprapi2 branch builds on Ubuntu 11.10 (x64) | 17:55 | |
jnthn | kboga: Thanks! | 17:56 | |
18:00
poincare101 left
|
|||
[Coke] | jnthn: passes on OSX 10.6.8 intel | 18:01 | |
moritz | the rakudo branch doesn't build yet | 18:03 | |
perl6_ops.c:4277: error: ‘REPROps’ has no member named ‘instance_of’ | |||
jnthn | moritz: right | ||
dalek | kudo/reprapi2: 71cf8b8 | jnthn++ | src/ops/perl6.ops: Update ops for REPR API changes. |
18:07 | |
kudo/reprapi2: 69b450a | jnthn++ | src/binder/bind.c: Update the binder for the new REPR API. |
|||
18:08
mj41 joined
18:09
daxim left
18:12
Holy_Cow joined
18:13
SHODAN left
18:16
Holy_Cow left
|
|||
dalek | kudo/reprapi2: cf864ab | jnthn++ | src/binder/multidispatch.c: Update multi-dispatcher for new REPR API. |
18:19 | |
kudo/reprapi2: 55293a2 | jnthn++ | src/binder/ (2 files): Get remaining C parts updated, or at least to a first approximation. We now get to trying to build the setting...BOOM SEGFAULT! |
|||
18:21
MayDaniel joined
|
|||
sorear | dalek? | 18:25 | |
sorear out | |||
18:32
benabik joined
18:33
mj41 left
|
|||
kboga | no segfault here when building the setting on the rakudo/reprapi2 branch | 18:42 | |
spectests pass too | |||
jnthn | kboga: Oh? | 18:44 | |
kboga: reprapi2 branch in Rakudo and reprapi2 nqp branch? | |||
kboga: What platform? | |||
And 32-bit or 64-bit? | |||
kboga | oh my bad... forgot to pull in the reprapi2 changes =( | ||
rebuilding | |||
jnthn | oh | ||
kboga | ok, segfault confirmed. | 18:47 | |
jnthn | thanks | 18:49 | |
ok, dinner time | |||
18:49
poincare101 joined
18:53
_jaldhar joined
18:54
poincare101 left
18:55
drbean left
18:56
poincare101 joined
|
|||
moritz got a backtrace | 18:58 | ||
gist.github.com/1328486 | 18:59 | ||
18:59
ggoebel left
|
|||
moritz | and valgrind aborts with an internal error when I run the setting compilation step on it :/ | 18:59 | |
cognominal___ pulls rakudo/reprapi2 to build on Lion | |||
18:59
cognominal___ is now known as cognominal
|
|||
moritz | cognominal___: probably not very interesting there either | 18:59 | |
19:00
drbean joined
|
|||
moritz notices the suspicious lack of write barriers in bind_attribute_boxed | 19:02 | ||
cognominal | gist.github.com/1328504 | 19:03 | |
some warnings when building bind.c | |||
19:04
ggoebel joined
|
|||
moritz | well, probably set_pmc_at_offset would need a write barrier | 19:05 | |
maybe also copy_to | 19:06 | ||
moritz doesn't really understand stuff, just guesses around wildly | |||
cognominal | do I need to pull the special nqp/reprapi2 branch? or perl Configure.pl does it for me | 19:08 | |
19:09
kaleem left
|
|||
mls | aargh! the build() method in BOOTSTRAPATTR returns nothing back to the caller | 19:10 | |
19:10
molaf joined
|
|||
mls | parrot's default is *not* to check the return argument count, so the behaviour is undefined | 19:11 | |
this results in spurious buildplan entries (cause create_BUILDPLAN checks if the return value of build() is defined) | 19:12 | ||
moritz | hm, I thought that empty Perl 6 subs return Nil | 19:16 | |
mls | nqp | ||
moritz | or is that compiled with NQP? | ||
ok | |||
19:20
pernatiy left
19:21
mj41 joined
|
|||
mls | for now I'm using the following patch: gist.github.com/1328585 | 19:27 | |
jnthn: please check if the patch is good (is the build method needed at all?) | 19:28 | ||
moritz | is there any general rule what empty NQP blocks should return? | ||
19:30
IngisKahn left
|
|||
mls | currently nqp uses parrot semantics, i.e. when the last statement's value is an native int, an int will be returned and so on | 19:30 | |
if it is void (because the last statement was a pirop or there were no statements), nothing is returned | |||
Actually I like that nqp is so close to parrot | 19:31 | ||
(looking at the code the above is actually not true: void is only returned for empty blocks) | 19:33 | ||
so maybe it's an PCT bug | 19:34 | ||
19:36
shinobicl_ joined
|
|||
mls | anyway, afk -> home | 19:37 | |
19:37
skangas joined
|
|||
TimToady | masak: yes, the default is that a quasi is its own block, and we probably need something like "my COMPILING::<$x> = 42;" to poke things outward | 19:38 | |
cognominal | with Jonathan metamodel, serizalization and masak macro support, I feel that Christmas will be in November this year | 19:40 | |
moritz | perl6: say X::NYI | 19:45 | |
p6eval | niecza v10-251-g806e0fb: OUTPUT«Unhandled Exception: Unable to resolve method postcircumfix:<( )> in class Any at /tmp/cNtqqNjTRU line 1 (mainline @ 1)  at /home/p6eval/niecza/lib/CORE.setting line 2223 (ANON @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 2224 (module-CORE @ … | ||
..pugs b927740: OUTPUT«*** No such subroutine: "&X::NYI" at /tmp/Hhuwm6yORT line 1, column 5 - line 2, column 1» | |||
..rakudo ee1a1c: OUTPUT«NYI()» | |||
19:49
molaf left
19:52
envi_ left
|
|||
moritz | nom: role A { }; say A.new | 19:54 | |
p6eval | nom ee1a1c: OUTPUT«A.new()» | ||
20:18
bluescreen10 left
20:19
drbean left
20:23
_jaldhar left
|
|||
TimToady is not against scrapping @*INC entirely; there's a reason S11 doesn't mention it | 20:23 | ||
sorear: ^^ | 20:24 | ||
20:26
drbean joined
|
|||
TimToady | sorear: all assignment to declarators is syntactically special; we just fudge my's pseudo-assignment a bit more in the direction of real assignment than, say, has | 20:28 | |
this is why jnthn++ and I have been discussing moving the parsing of assignment back to being part of the declarator parse | 20:29 | ||
it's kinda too bad that everyone is used to using = for that, but I don't see a good alternative | |||
20:31
poincare101 left
20:34
mkramer joined
|
|||
cognominal | jnthn: segfaulting in Lion too, but with a different stack trace | 20:35 | |
jnthn is back | 20:36 | ||
20:39
diegoviola joined
|
|||
masak is back | 20:40 | ||
jnthn | copycat | ||
moritz: Write barriers are the responsibility of the stuff calling down to the REPR | |||
20:48
plobsing left
|
|||
jnthn | mls: Patch is probably fine | 20:50 | |
20:51
plobsing joined
20:53
saaki joined
|
|||
jnthn | moritz: Yeah, your segfault report matches mine, so probably not GC related. That's good. | 20:53 | |
20:59
ksi joined
21:11
IngisKahn joined
21:16
GlitchMr left
|
|||
jnthn | moritz: oh, I think I see the place you meant | 21:19 | |
21:30
benabik left
|
|||
jnthn | nqp: say(int.HOW.name(int)); | 21:33 | |
p6eval | nqp: OUTPUT«Can only use get_how on a SixModelObjectcurrent instr.: '_block1000' pc 27 ((file unknown):35) (/tmp/TUO0NNacpC:1)» | ||
jnthn | nqp: class A { }; say(A) | 21:35 | |
p6eval | nqp: OUTPUT«A()» | ||
21:50
jferrero left
21:55
drbean left
22:01
whiteknight joined
22:02
drbean joined
22:03
mj41 left
22:14
shinobicl_ left
22:15
xinming left
22:22
REPLeffect joined
22:28
daniel-s left
22:31
REPLeffect left,
REPLeffect joined
|
|||
masak | sorear: I isolated it! \o/ | 22:34 | |
sorear: gist.github.com/1329249 | |||
masak submits nieczabug | |||
22:35
daniel-s joined
|
|||
colomon | masak: heisenbug? | 22:39 | |
dalek | odel: 8a1fc64 | diakopter++ | lua/ (6 files): lots of Makefile changes; get rid of most 'dofile' calls |
||
masak | colomon: no, it disappears after A.pm has been compiled once. | 22:43 | |
colomon | masak: ah. | ||
masak | (Niecza has a cache where it stores compiled modules) | ||
changing the real A.pm expired the cache, causing the bug to reappear. the bug is thus a bit annoying during development. | 22:44 | ||
sorear: pls fix ;) | |||
(but it's not a problem with the serialization branch. it was there long before) | 22:45 | ||
dalek | p/reprapi2: a375e18 | jnthn++ | src/ops/nqp.ops: Don't look up something we already have. |
||
p/reprapi2: c0c5bb0 | jnthn++ | src/NQP/SymbolTable.pm: Fix a nasty NQP bug where the REPL and code run immediately rather than pre-compiled didn't properly see the setting. |
|||
p/reprapi2: 516c219 | jnthn++ | src/6model/reprs/P6opaque.c: Add a missing sanity check to P6opaque that catches some nasty bugs. |
|||
masak | 'night, #perl6 | ||
colomon | \o | 22:47 | |
22:48
kaare_ left
|
|||
sorear | TimToady: how is assignment to "my $x" in any way different from real assignment? | 22:50 | |
dalek | kudo/reprapi2: caf5040 | jnthn++ | src/Perl6/Metamodel/ContainerDescriptor.pm: Avoid the NQP default constructor for now, which doesn't handle native types properly. This gets us a bit further into the build. |
22:59 | |
23:02
MayDaniel left
|
|||
jnthn | bah, I get a segfault at the command prompt and an infinite loop in realloc under the debugger... | 23:04 | |
23:04
ab5tract joined
|
|||
dalek | odel: 36af411 | diakopter++ | .gitignore: update .gitignore |
23:07 | |
23:07
dual left
|
|||
dalek | odel: 69b75fd | diakopter++ | lua/compiler/compile.pir: add compile.pir |
23:08 | |
23:13
icwiener left
23:14
pmurias left
|
|||
dalek | p/reprapi2: fd65ca0 | jnthn++ | src/ops/nqp.ops: Fix thinko in repr_clone op. |
23:17 | |
23:23
benabik joined,
ksi left
23:36
cooper joined
23:43
snearch joined
|
|||
jnthn | OK, reprapi2 is close. It builds and mostly spectests - if I turn off the optimizer, which is tickling some remaining bug somewhere. | 23:55 | |
23:55
daniel-s left
|
|||
jnthn | ah, and the spectests that fail largely seem to do so because I'm dumping debug output into them... | 23:55 | |
23:57
Tene_ is now known as Tene
23:58
daniel-s joined
|
|||
jnthn will hunt that tomorrow, then get it all merged. | 23:59 | ||
Then the bigint work can continue \o/ | |||
dalek | odel: a435091 | diakopter++ | lua/compiler/ (7 files): first part of DNST->LST CSharp->Lua rename |