»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:00
static_perl left
00:04
uasi joined
00:07
daniel-s joined
00:14
flussence_ joined
00:15
flussence left
00:19
sayu joined
00:26
whiteknight left
|
|||
dalek | rixel: f4e52be | diakopter++ | src/ (3 files): 300% speedup of loops by caching a pool of instruction and state objects; zero allocations on incrementing loops now |
00:28 | |
00:29
kensanata left
00:32
Limbic_Region left,
tokuhiro_ left
|
|||
diakopter | sorear++ # pointing out that incrementing while loops shouldn't use allocations | 00:38 | |
00:52
ZapZ left
00:58
uasi left
01:05
replore_ joined
01:31
sftp left
01:33
sftp joined
01:38
hypolin joined
01:46
thou left
02:07
sayu left,
thou joined
|
|||
dalek | ecza: 1a92563 | (Solomon Foster)++ | lib/ (2 files): Implement naive version of unlink. |
02:09 | |
colomon | sorear: seems like proper error handling for unlink is going to require catching C# exceptions. Not sure if it's worth trying to do that yet, or how to go about it... | 02:11 | |
diakopter | colomon: did you make unlink marked as unsafe? | 02:12 | |
colomon | diakopter: yup. | ||
sorear | niecza automatically catches C# exceptions and turns them into Perl6 exceptions | ||
diakopter | oh goody :) | ||
colomon | (as you could easily tell by clicking on the github link. ;) | 02:13 | |
sorear: in some cases here they should probably turn into return values of False. | |||
hard to say, since unlink is not spec'd at all as far as I can tell. :( | |||
dalek | rixel: c4fed67 | diakopter++ | src/ (4 files): add lexical block descend and noop opcodes |
||
02:14
donri left
|
|||
[Coke] adds 48 more files to t/spectest.data | 02:27 | ||
(for niecza) | |||
[Coke] kicks off a spectest run to make sure. | 02:28 | ||
sorear | colomon: catching exceptions in C# is exactlythe same as in Java | 02:31 | |
[Coke] | colomon: niecza could run a lot of S32-num/atan2.t, if only I could figure out how to fudge it. | 02:32 | |
02:43
am0c joined
02:45
wolfman2000 joined
|
|||
[Coke] | Files=324, Tests=9343, 899 wallclock secs ( 3.21 usr 1.92 sys + 1454.20 cusr 61.61 csys = 1520.94 CPU) | 02:49 | |
(it's really on 323 files, I had to back one out.) | |||
*only | |||
dalek | ast: 000e1e4 | Coke++ | S06-advanced/callframe.t: remove vim directive |
02:50 | |
ast: 3a7da94 | Coke++ | / (29 files): niecza fudging |
|||
ecza: c042c3c | Coke++ | t/spectest.data: run fudged tests. |
|||
03:00
Woodi left,
Woodi joined
|
|||
[Coke] | Files=323, Tests=9343, 1053 wallclock secs ( 3.21 usr 1.92 sys + 1469.49 cusr 65.24 csys = 1539.86 CPU) | 03:11 | |
(there's a real run.) | |||
03:29
daniel-s left
03:32
daniel-s joined
|
|||
[Coke] | gist.github.com/1291893 - niecza test summary output. | 03:40 | |
03:55
satyavvd joined
03:56
envi_ joined
|
|||
sorear | [Coke]: thanks | 04:01 | |
[Coke] | sorear: no problem. | 04:02 | |
04:04
uasi joined
04:07
envi_ left
04:25
uasi left
|
|||
sorear is struggling to work out the details of recursive serialized unit loading | 04:33 | ||
04:37
uasi joined
|
|||
dalek | kudo/nom: f25b3b9 | moritz++ | src/core/ (2 files): use native ints in the setting |
05:05 | |
05:06
daniel-s left
05:08
risou_awy is now known as risou
05:12
orafu left,
orafu joined
05:18
lestrrat left
05:19
lestrrat joined
05:20
soh_cah_toa left
|
|||
moritz | std: /<[-]>/ | 05:41 | |
phenny | moritz: 16 Oct 23:00Z <[Coke]> tell moritz that A61354_1 in S12-class/basic.t smells like the eval/try issue. | ||
p6eval | std 580b69a: OUTPUT«ok 00:01 121m» | ||
05:42
wolfman2000 left
|
|||
moritz | [Coke]: it does indeed | 05:44 | |
good morning | |||
[Coke] | moritz: I still haven't gone to bed yet. Uhoh. | 05:46 | |
moritz | nom: say ('a'^.. 'f') | 05:48 | |
p6eval | nom 6f8660: OUTPUT«"a"^.."f"» | ||
moritz | nom: say ('a'^.. 'f').list | ||
p6eval | nom 6f8660: OUTPUT«b c d e f» | ||
05:51
dual joined,
uasi left
|
|||
dalek | ast: 12561b6 | moritz++ | S12-class/basic.t: update test to deal with eval changes, [Coke]++ |
05:54 | |
05:54
kaleem joined
05:55
uasi joined
06:05
wtw joined,
wtw left,
wtw joined,
kaare_ joined
06:15
static_perl joined
06:16
xinming joined,
thou left
06:17
uasi left
06:21
uasi joined
|
|||
dalek | ecza/serialize: eee0cbb | sorear++ | / (8 files): Add framework for detecting stale precompiled modules |
06:24 | |
06:31
koban joined,
koban left
06:32
mkramer left,
mkramer joined
06:35
daniel-s joined
|
|||
Woodi | can I get mildew source from somewhere ? | 06:36 | |
moritz | I'm pretty sure you can | 06:39 | |
iirc it's in the perl6/mu repo on github | 06:40 | ||
dalek | ast: 979e069 | moritz++ | S05-mass/rx.t: update hyphen-in-char-class test to match current spec |
||
sorear | good luck getting it to run though | 06:41 | |
it seems to be incompatible with recent versions of gcc | |||
Woodi | thanx for location | ||
just want to try to understand few things in C way. | 06:42 | ||
sorear | last time I tried it, it OOMed while trying to build the setting | 06:43 | |
Woodi | it still require pugs/Haskell ? | ||
sorear | no, mildew is C/Perl5 | 06:44 | |
06:50
uasi left
06:54
agentzh joined
|
|||
dalek | ecza/serialize: 288db48 | sorear++ | lib/ (3 files): Use precompiled IL when using a precompiled module |
06:55 | |
ecza/serialize: cbf3a16 | sorear++ | lib/Kernel.cs: Add an entry point to generated assemblies so mono obj/MAIN.exe works again |
07:01 | ||
sorear | stefan@stefans:~/rel/niecza$ mono-sgen obj/CORE.exe | 07:02 | |
Hello, world (0) | |||
sorear -> sleep | |||
tomorrow: | |||
* get the full setting to freeze/thaw correctly | |||
07:02
am0c left
|
|||
sorear | * try and implement compiling-code-against-the-setting | 07:02 | |
* try and implement "use" | |||
rest of the week: | 07:03 | ||
* chase regressions | |||
07:03
baest_ joined
07:05
baest left
07:10
mj41 joined,
uasi joined
07:14
wamba joined
07:19
satyavvd left
|
|||
snarkyboojum | colomon: I implemented unlink and mkdir too (on the weekend), but didn't commit them ;) | 07:30 | |
07:30
baest_ is now known as baest
|
|||
snarkyboojum | colomon: do you need to return True on line 2108? Seems redundant to me (referring to github.com/sorear/niecza/commit/1a92563b93) | 07:31 | |
07:31
uasi left
|
|||
dalek | ast: c7d1f65 | moritz++ | S06-other/main-usage.t: unfudge a passing MAIN test |
07:38 | |
07:55
arthur-_ left
08:05
arthur joined
08:11
wk_ left
08:26
cognominal joined
08:28
dakkar joined
08:31
[Coke] left
08:35
arthur left
|
|||
masak | morning, #perl6 | 08:47 | |
moritz | \o masak | ||
tadzik | 'morning | 08:48 | |
dalek | kudo/nom: c28552e | (Geoffrey Broadwell)++ | src/core/Main.pm: DWIM better in orig-string role in MAIN_HELPER() In the first snapshot orig-string was too aggressive, and in the second snapshot it was too conservative. This middle ground seems to DWIM better than either extreme did. |
08:53 | |
kudo/nom: 548e56a | moritz++ | src/core/Range.pm: BUILD should be a submethod |
08:54 | ||
kudo/nom: ded7222 | moritz++ | tools/build/NQP_REVISION: bump NQP revision |
|||
09:02
wk joined,
xinming left
09:03
jrockway left,
xinming joined,
jrockway joined
09:13
am0c joined
09:20
arthur joined
09:25
am0c left
09:26
am0c joined
09:27
xinming left,
xinming joined
|
|||
masak | t/spec/S05-mass/rx.rakudo parsefails on nom's 'make spectest'. | 09:30 | |
Unsupported use of - as character range;in Perl 6 please use .. at line 338, near "]>/, 'unes" | 09:31 | ||
moritz | masak: the NQP revision bump from ded7222 should fix that | 09:32 | |
masak: or are you already on that version? | |||
masak | no, seems not. moritz++ | 09:34 | |
moritz | $ ./perl6 -e 'class A { has $.x = "foo" }; say A.new.perl' | 09:39 | |
A(x => "foo") | |||
oops. Should be .new | 09:40 | ||
09:40
am0c left
|
|||
moritz | that's the beauty of pasting to the channel, I actually read the stuff more carefully :-) | 09:40 | |
09:41
daxim joined
|
|||
moritz | my current .perl approach doesn't try to perfectly recreate the objects, but rather just goes through all attributes with accessors, and constructs a .new call from it | 09:41 | |
if people would prefer that, I could also emit something like | |||
09:42
jonasbn joined
|
|||
moritz | do { my $new := nqp::create(A); nqp::bindattr($new, A, '$!x', "foo") } | 09:42 | |
09:42
jonasbn left
|
|||
moritz | ... and return $new from that | 09:42 | |
that would reproduce private attributes | 09:43 | ||
but wouldn't look so nice | |||
masak | I don't think we want to reproduce private attributes anyway... | 09:44 | |
moritz | and the second point is that the current approach respects the classes' privacy | 09:45 | |
this implementation also calls the accessor instead of using nqp::getattr() | 09:46 | ||
(by design choice, not because it's easier to implement :-) | 09:47 | ||
nom: say 2e0.perl | 09:48 | ||
p6eval | nom f25b3b: OUTPUT«2» | ||
moritz | nom: say (1/2).perl | ||
p6eval | nom f25b3b: OUTPUT«1/2» | ||
moritz | nom: say 1.e | 09:50 | |
p6eval | nom f25b3b: OUTPUT«Method 'e' not found for invocant of class 'Int' in block <anon> at /tmp/1euhPcc2ev:1 in <anon> at /tmp/1euhPcc2ev:1» | ||
moritz | ... and my patch breaks Int.perl, because that currently just falls back to Mu.perl, which falls back to Mu.Str | 09:51 | |
09:52
uniejo left
|
|||
moritz | nom: say "\x25b6" | 09:55 | |
p6eval | nom f25b3b: OUTPUT«▶» | ||
moritz | .u 25b6 | ||
phenny | U+25B6 BLACK RIGHT-POINTING TRIANGLE (▶) | ||
10:09
hypolin left
|
|||
moritz | nom: say (1..5).roll | 10:11 | |
p6eval | nom ded722: OUTPUT«1» | ||
moritz | nom: say (1..5).roll(*) | ||
p6eval | nom ded722: OUTPUT«(timeout)» | 10:12 | |
moritz kinda hoped it would produce some values before timeouting | |||
masak | is that how &say works? | 10:13 | |
oh, I guess with a lazy list, it is. | |||
moritz | well, the old say would work that way | ||
nom: print (1..5).roll(*) | |||
masak .oO( as the old say goes... ) | |||
p6eval | nom ded722: OUTPUT«(timeout)4112224123521123143544355154344345245421524425132342445325125413421532313535324422222533223144553152345251545531223122343251313135114355545354341444515521124242513514215442334512232253253115351244435554113334235552555223152125415144114442425552133315233324443… | ||
moritz | but the new one .gist's, and that hangs | 10:14 | |
masak | wait... so you're saying... that 'print' works... but 'say' doesn't... :/ | ||
masak feigns great confusion for the sake of demonstration | 10:15 | ||
so confusing! | |||
moritz | it could be made to work, probably | ||
what's the phenny syntax for translating from en to de? | 10:16 | ||
masak | phenny: en do "donut"? | ||
phenny | masak: The en to do translation failed, sorry! | ||
masak | phenny: en de "donut"? | ||
phenny | masak: "Krapfen" (en to de, translate.google.com) | ||
moritz | phenny: en de "one one one"? | ||
phenny | moritz: "ostzonensuppenwürfel ostzonensuppenwürfel ostzonensuppenwürfel" (en to de, translate.google.com) | ||
masak | haha, "Krapfen"! :) | ||
moritz | we use "donut" (and sometimes even "doughnut") for the round ones with a hole though | 10:17 | |
masak | I know what a würfel is, but what is a würfel? | ||
er, what is a ostzonensuppenwürfel? | |||
moritz | phenny: en de "one one"? | ||
phenny | moritz: "One One" (en to de, translate.google.com) | ||
masak | phenny: de en "ostzonensuppenwürfel"? | ||
phenny | masak: "All Clips" (de to en, translate.google.com) | ||
masak | ok, this is more confusing than print/say ;) | 10:18 | |
moritz | ostzone = estern germany | ||
masak | right. | ||
moritz | and suppenwuerfel = a cube (wuerfel) of spice you put into a soup (suppe) | ||
masak | oH! | ||
10:18
envi_ joined
|
|||
masak | like a buillon cube? | 10:18 | |
moritz | that's the proper word, yes | 10:19 | |
masak | er, bouillon* | ||
moritz | not sure how that relates to "one one one" though | ||
masak | well, maybe it's the recipe for the world famous Dreiostzonensuppenwürfelsuppe :) | 10:20 | |
phenny: en de "two two two"? | 10:28 | ||
phenny | masak: "zwei zwei zwei" (en to de, translate.google.com) | ||
moritz | seems to be an easter egg; most google hits for "ostzonensuppenwürfel" seem to be about the google translate thing :-) | 10:29 | |
10:30
[Coke] joined
|
|||
masak | how did you learn about it? | 10:30 | |
seems to be related to a band somehow: de.wikipedia.org/wiki/Ostzonensuppe...achenkrebs | 10:32 | ||
static_perl | are you guys hungry or something | 10:33 | |
tadzik | yep, and just making me a breakfast | 10:34 | |
masak | static_perl: :D | ||
static_perl | conversation ends up with wuerfen machen :p | ||
masak | phenny: en de "fudge"? | 10:35 | |
phenny | masak: "Fondant" (en to de, translate.google.com) | ||
masak | phenny: en fr "fudge"? | ||
phenny | masak: "truquer" (en to fr, translate.google.com) | ||
static_perl | phenny: en it "masak"? | 10:36 | |
phenny | static_perl: "masak" (en to it, translate.google.com) | ||
masak | phenny: ms en "masak"? | 10:38 | |
phenny | masak: "cooked" (ms to en, translate.google.com) | ||
static_perl | haha | ||
masak | speaking of food... | 10:39 | |
static_perl | exactly | ||
masak | phenny: et en "mee saak"? | ||
phenny | masak: "honey harvest" (et to en, translate.google.com) | ||
tadzik | what's 'ms'? | ||
masak | Malay. | ||
tadzik | you hope they're not into cannibalism, Mr Carl Cooked ;) | 10:40 | |
static_perl | well being a chef is not a bad profession too i think | 10:41 | |
10:42
arthur left
|
|||
static_perl | they must have some sort of regular expression on spices | 10:43 | |
masak | tadzik: if I hadn't just been on the verge of making fun of East German cuisine, I would berate you for intolerance ;) | ||
tadzik | ;) | 10:47 | |
static_perl | can't wait for recipe being patented | 10:48 | |
colomon | snarkyboojum: the spectests say unlink returns True if it works. | 10:53 | |
11:02
arthur-_ joined
11:04
replore_ left
|
|||
colomon | is it TEST_JOBS=4 | 11:24 | |
? | |||
yes, yes it is. | 11:25 | ||
11:26
arthur-_ left
|
|||
dalek | ecza: 8d23b25 | (Solomon Foster)++ | lib/CORE.setting: Simple sub close. |
11:27 | |
11:39
arthur-_ joined,
Patterner left
11:42
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
moritz | jimmycuadra.com/posts/ecmascript-5-array-methods "every" instead of all(), "some" instead of any() | 12:08 | |
12:11
itz joined
|
|||
moritz | filter vs. grep | 12:19 | |
12:21
Alias joined
|
|||
masak | lots of languages seem to choose 'filter'. | 12:28 | |
moritz | didn't 'grep' mean 'get regular expression' or some such? | 12:30 | |
thinking more about it, it would make sense to switch .comb and .grep | 12:31 | ||
masak | moritz: Wikipedia says g/re/p (global / regular expression / print) | 12:32 | |
moritz | still specific to regexes | 12:33 | |
12:33
zag joined
|
|||
moritz | whereas you don't need regexes to comb for certain values | 12:34 | |
masak dives into macros some more | 12:36 | ||
frettled | masak++ nice blog post about AST and macros, BTW :) | ||
frettled got delayed in reading that one. | |||
masak | more to come ;) | 12:37 | |
frettled | goodie | ||
masak | frettled: a foretaste: what will this do? 'quasi { class C {} }' | ||
moritz | conflict on the second application? | 12:38 | |
masak | correct. | ||
but that's not the interesting bit. there's a bunch of "events" that trigger as we parse a class declaration. these can't go to the ordinary, global World, since we don't want to register C at parse-time. | 12:39 | ||
they have to go to a sandboxed world particular to that quasi, and be stored up awaiting actual macro application. | |||
moritz | $ ./perl6 -e 'quasi {class C {} }; say C' | 12:40 | |
C() | |||
moritz submits masakbug | |||
frettled | heh | ||
masak | yes, I know I so deserve each one of those ;) | ||
moritz | masak: I guess you'll have to add a new $*ST when starting to parse the quasi | 12:41 | |
masak | correct. | ||
good thing it's a contextual! :D | |||
moritz | the question is if that's enough | ||
probably not | 12:42 | ||
masak | well, it's definitely trickier than just that. | ||
frettled | masak: but in answer to your question: "confuse me" ;) | ||
masak | you got it. | ||
whoa, src/Perl6/SymbolTable.pm is 1.7 kLOC... | 12:44 | ||
masak attempts to take it all in in one sitting | |||
moritz | std: quasi :COMPILING { } | 12:45 | |
p6eval | std 580b69a: OUTPUT«ok 00:01 124m» | ||
moritz looks at S06-macros/opaque-ast.t | 12:47 | ||
can you actually use $COMPILING::x inside a macro but outside a quasi? | |||
hm, should be OK | |||
moritz thinks that the macro branch can pass at least the first test in that file :-) | 12:48 | ||
masak | Block.body ? | 12:50 | |
seems it expects it to return an AST... | |||
moritz | aye | ||
masak | moritz: COMPILING is defined as "Lexical symbols in the scope being compiled", so outside of a quasi should be fine. | 12:52 | |
moritz | masak: afaict macros should be routines, they aren't in your branch | ||
try macro a { return quasi {} } | |||
masak | not sure I had seen that particular use case before. | ||
(with COMPILING in the macro) | 12:53 | ||
moritz: Attempt to return outside of any Routine | |||
moritz: that needs fixing. thanks. | |||
masak puts it on his TODO list | |||
dalek | ast: 8cfef27 | moritz++ | S06-macros/opaque-ast.t: heavily fudge opaque-ast.t |
12:54 | |
moritz | masak: your branch passes two subtests in that file. Congratulations! | 12:55 | |
masak | by the way, those tests in that file all appear fine, but I expect I will have lots more as I get going with tests. | ||
which should be soon. | |||
moritz | those tests have all the usual characteristics of 1) being written before they were implemented and 2) being written by just reading the specs, and trying to deal with the most obvious issues | 12:56 | |
masak lols at the method name .steal_WHO | 12:57 | ||
moritz: exactly. I consider what I'm doing right now a very realistic prototyping of things. after which I'll be in a good position to write some sufficiently probing tests. will probably tear things down and build them up again based on the tests, but might take shortcuts here and there. | 12:59 | ||
benabik | steal_WHO? | ||
masak | benabik: covers the case when 'class A::B {}' was parsed before 'class A {}', so A already has a .WHO | 13:01 | |
benabik | masak: Ah. Clever. | 13:02 | |
masak | mostly I just like colorful verbs in code ;) | ||
13:02
mtk left
|
|||
masak wonders if .curry_role shouldn't be .prime_role | 13:09 | ||
eiro | 13:10 | ||
dalek | kudo/nom: 16a3b95 | moritz++ | src/core/terms.pm: prevent startup error if %*ENV<HOME> is empty |
13:11 | |
kudo/nom: 4e43906 | moritz++ | src/core/ (3 files): much improved Mu:D.perl |
|||
13:11
GlitchMr joined
|
|||
masak | ok, I see now why SymbolTable.pm is as big as it is. it handles *all* the declaration-y bits in Rakudo. | 13:12 | |
and it's written entirely by two very prolific guys: | 13:13 | ||
someone called Jonathan Worthington, and someone called jnthn. | |||
;) | |||
dalek | ast: 44e9737 | moritz++ | S02-types/num.t: unfudge Num.perl tests that now pass |
||
masak | (with a patch in the middle by tadzik) | ||
tadzik | this "Jonathan Worthington" is the one stealing all the karma from jnthn | ||
13:14
mtk joined
|
|||
moritz | masak: I've also touched that files once or twice | 13:14 | |
masak | ok. | 13:15 | |
my branch has a slightly old base... | |||
looking now at HLL::Compiler::SerializationContextBuilder | 13:16 | ||
13:16
tokuhiro_ joined,
wk left
13:17
pmurias joined
|
|||
moritz | I wonder if sub addr should be replaced by nqp::where in there | 13:21 | |
13:21
lateau__ joined
|
|||
masak | aha! so "fixing up" is for when we go straight for runtime after compiling, and "deserializing" is when we've persisted stuff and taken a break between compiling and running. | 13:21 | |
13:22
zag left
|
|||
masak | actually, something called "installation" seems to figure in the latter case, too. | 13:24 | |
moritz | and it might be that you only need to delay/intercept the installation | ||
13:25
jerome_ left
|
|||
masak | errands & | 13:25 | |
colomon | t/spec/integration/advent2009-day23.t hanging on niecza? | 13:30 | |
13:32
localhost left
|
|||
moritz | colomon: the last test says ok 4 # SKIP hangs | 13:32 | |
13:33
benabik left
|
|||
moritz | colomon: so either your copy of roast is out of date, or you're invoking the test in a way that doesn't involve fudge, but should | 13:33 | |
13:33
localhost joined,
benabik joined
|
|||
colomon | t/fudgeandrun t/spec/integration/advent2009-day23.t is what I just did | 13:33 | |
and it sure looks like it's hung again on test 4 | |||
moritz | colomon: so what's your git sha1 of the t/spec/ repo? | 13:34 | |
[Coke]++ fudged that file yesterday | |||
13:35
benabik left
|
|||
[Coke] | colomon;if there's an updated version of t/spectest.data, you must update roast also. | 13:38 | |
tadzik | (%ENV<HOME> // %ENV<HOMEDRIVE> ~ %ENV<HOMEPATH>) | ||
colomon | Pretty sure I tried pulling t/spec this morning | ||
tadzik | that should be File::HomeDir or so | ||
colomon | oh, I see what happened | 13:39 | |
[Coke] | colomon;I usually start out in niecza with "make spectest" to rebuild anything in niecza that needs it. | ||
colomon: wozzat? | |||
bbkr_ | What is infix:<but> for? I cannot find any sample usage for it. | ||
colomon | that only works if your t/spec isn't changed locally | 13:40 | |
works fine now | |||
tadzik | bbkr_: 0 but True for example | 13:41 | |
it's like does, but for objects, or something like this | |||
or not | |||
The property can then be mixed in or, alternatively, applied using the but operator. but is like does, but creates a copy and mixes into that instead, leaving the original unmodified | 13:42 | ||
bbkr_: perlcabal.org/syn/S14.html search for "The property can" | 13:43 | ||
13:43
PacoLinux joined
|
|||
bbkr_ | tadzik: thanks, nicely explained in S14 (i was looking for it in S03) | 13:45 | |
13:49
arthur-_ left
13:50
thou joined
13:52
GlitchMr left
|
|||
colomon | niecza's still failing t/spec/S06-signature/passing-arrays.t after the update | 13:52 | |
[Coke] checks. | 13:53 | ||
13:53
GlitchMr joined
|
|||
dalek | ecza: 2f61b1e | (Solomon Foster)++ | t/spectest.data: Turn on unlink.t. |
13:55 | |
[Coke] | colomon: I just did a git rb/make spectest (to get a rebuild), then a git rb (pull --rebase, sorry), in t/spec ... and the tests passes except for a TODO. | ||
so prove is happy with it. | 13:56 | ||
this is on OS X 10.6.8 | |||
colomon | you sure? I get two fails in a row, one of which is fudged and one isn't. | ||
[Coke] | Mono JIT compiler version 2.6.7 | ||
colomon | [Coke]: test is "an Int is not a Hash" | 13:57 | |
[Coke] | ok 7 - an Int is not a Hash | 13:59 | |
colomon | weird | 14:00 | |
wonder if a full rebuild of niecza will help. | 14:01 | ||
[Coke] | Maybe "make spectest" isn't reubilding things for me? Iunno. | ||
It looked like it | |||
reboot, brb. | 14:02 | ||
14:07
tokuhiro_ left
|
|||
[Coke] | back. | 14:09 | |
any lucK? | |||
14:10
GlitchMr left
14:21
agentzh left
14:24
molaf joined
14:25
alastyr left
|
|||
ingy | TimToady: I am getting failures sending email from ingy.net to wall.org. (ingy.net is hosted by gmail...) | 14:27 | |
colomon | [Coke]: got myself distracted paying bills. testing now | ||
[Coke]: nope, still fails | |||
[Coke]: seems a very odd error to be platform-dependent... | 14:28 | ||
[Coke] | my roast is at: | 14:29 | |
44e9737 | |||
and niecza: 8d23b25 | |||
colomon | my niecza is 2f61b1e, but the only difference is turning unlink.t on | 14:33 | |
and my roast is 44e9737 | |||
14:34
wtw left
14:39
eiro left
|
|||
dalek | ecs: 05414aa | moritz++ | S24-testing.pod: [S24] expand on &todo, &skip |
14:40 | |
colomon | [Coke]: my mono is Mono JIT compiler version 2.10.2 | 14:53 | |
14:54
arthur-_ joined
|
|||
moritz | colomon: fwiw that test also fails here | 14:54 | |
not ok 7 - an Int is not a Hash | |||
# /home/moritz/p6/niecza/t/spec/S06-signature/passing-arrays.niecza line 37 | |||
colomon | \o/ # it's not just me | ||
moritz | (and the one before also fails, but that is TODO'ed | ||
[Coke] | colomon: I can do a mono upgrade, but ISTR there was an upper limit on supported monos when I tried this last time. | 14:55 | |
moritz: what version of mono? | |||
moritz | [Coke]: 2.10.1 | ||
niecza: sub f(%h) { }; f(1); say 'alive' | |||
[Coke] | hokay. I'll see what macports gives me. hang on. | ||
p6eval | niecza v10-54-g2f61b1e: OUTPUT«Potential difficulties: %h is declared but not used at /tmp/9QJTwkEIL6 line 1:------> sub f(⏏%h) { }; f(1); say 'alive'alive» | 14:56 | |
moritz | p6eval suffers from the same error | ||
14:56
imarcusthis left
|
|||
[Coke] | 2.10.6 is macport latest. give me a few hours to up, rebuild, spectest, in between $DAYJOB | 14:56 | |
moritz | niecza: role A { }; sub f(A $) { }; f(3); say 'alive' | 14:57 | |
p6eval | niecza v10-54-g2f61b1e: OUTPUT«Unhandled Exception: Nominal type check failed in binding A $ in MAIN f; got Int, needed A at /tmp/WZI_X0YTHX line 0 (MAIN f @ 0)  at /tmp/WZI_X0YTHX line 1 (MAIN mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 2176 (CORE C1040_ANON @ 2)… | ||
[Coke] | colomon: did you see my note about fudging atan2.t? | ||
colomon | [Coke]: no | 14:58 | |
[Coke] | phenny, you suck. | ||
colomon | niecza: say atan2(2, 3) | ||
p6eval | niecza v10-54-g2f61b1e: OUTPUT«0.588002603547568» | ||
colomon | [Coke]: might have been me being oblivious rather than phenny. :) | ||
[Coke] | colomon: that file is generated, so fudging it was non-obvious. If you can figure it out, niecza is passing a lot of those tests. | 14:59 | |
14:59
bluescreen10 joined
|
|||
colomon | [Coke]: ah, sure, I'll stick it on my to-do list | 14:59 | |
[Coke] | colomon: danke. | ||
meetings. see you in a day. :P | |||
colomon | ugh. I hate meetings. | ||
dalek | p: f748de0 | moritz++ | src/HLL/SerializationContextBuilder.pm: use nqp::where in SerializationContextBuilder |
15:00 | |
15:00
imarcusthis joined
15:05
pmurias left,
jerome_ joined
15:06
araujo left
15:09
kaleem left
15:11
GlitchMr joined,
araujo joined
15:15
amkrankruleuen joined
15:27
bluescreen10 left
15:28
bluescreen10 joined
|
|||
[Coke] | mono is not light on the deps. | 15:32 | |
bah. cannot complete upgrade, libgdiplus failed. | 15:33 | ||
flussence_ | distro? | ||
15:34
flussence_ is now known as flussence
|
|||
flussence | (gentoo claims libgdiplus is optional, at least) | 15:34 | |
15:35
bluescreen10 left
15:36
bluescreen10 joined
15:43
bluescreen10 left
15:44
bluescreen10 joined
15:45
MayDaniel joined
15:47
Holy_Cow joined,
bluescreen10 left
15:48
bluescreen10 joined
15:49
bluescreen10 left,
bluescreen10 joined
|
|||
[Coke] | is there something I can do locally to make it MOAR OPTIMIZED? | 15:50 | |
er, *rakudo, not it. | 15:51 | ||
(say I'm willing to live on the edge with optimize=3) | |||
moritz | --optimize=3 | ||
alias perl6='perl6 --optimize' | |||
[Coke] | so it's a runtime thing. thank you. | ||
Is there a way yet to change the default optimize at config time? | 15:52 | ||
moritz | no | ||
but something like an env var shouldn't be too hard to implement | |||
flussence | isn't the default supposed to be 2? or does that just mean "default when the flag is passed"? | ||
moritz | the code for the decision is in src/Perl6/Compiler.nqp lines 21-25 | 15:53 | |
[Coke] | masak++ blog post on macros. | ||
also, jnthn++ # blog post on optimizaiton | 15:55 | ||
flussence | oh, seems like it is 2 unless it's explicitly disabled | ||
15:56
donri joined
|
|||
[Coke] | ugh; undeclared dependency in macports for a package mono declares on. (google "macport <lib> failure" if it happens to you.) | 16:01 | |
16:04
MayDaniel left
|
|||
TimToady | masak: your class C in a macro is probably very much like the GLOBALish unification that happens on a compunit level | 16:10 | |
in a sense, a macro is a compilation unit, and instantiation requiries a "linkage" of potentially conflicting viewpoints | 16:12 | ||
more generally, whenever you have generic code, instantiation may require contextualization | 16:13 | ||
16:15
bluescreen10 left
|
|||
TimToady | though a platonist or an aristotelean might give you very different views of what a successful contextualization looks like :) | 16:16 | |
16:16
bluescreen10 joined,
plobsing_ joined
16:17
dakkar left
|
|||
TimToady | one could view the whole nominal/structural/duck/monkey typing issue in this light of the Philosophy of Genericity/Specificity | 16:17 | |
16:18
kaleem joined
|
|||
TimToady | macros, formal parameters, roles, methods, variables are all just ways of talking generically | 16:18 | |
16:19
dual left
|
|||
TimToady | it's the distinction between a common noun and a proper nouns too | 16:19 | |
16:20
plobsing left,
mj41 left
|
|||
TimToady is spouting tagmemic notions again... | 16:20 | ||
with macros it's just a bit more obvious that you're speaking in multiple contexts at the same time | 16:21 | ||
16:21
bluescreen10 left
16:22
bluescreen10 joined
|
|||
TimToady had better go try to get his email back up... | 16:23 | ||
sorear | good * #perl6 | 16:25 | |
[Coke] | ho, sorear. | 16:28 | |
[Coke] yawns waiting for mono-latest-package to build. | 16:29 | ||
16:30
bluescreen10 left
16:31
bluescreen10 joined
16:32
GlitchMr left
16:34
kaleem left
16:41
bluescreen10 left,
bluescreen10 joined
|
|||
masak | moritz++ # todo, skip | 16:48 | |
16:50
mkramer left
|
|||
masak | TimToady: I was thinking of comp unit unification too when I wrote that. | 16:52 | |
16:53
kaleem joined
|
|||
ingy | o/ | 16:56 | |
17:06
kaleem left,
kaleem joined
17:12
bluescreen10 left,
bluescreen10 joined
17:18
daniel-s left
|
|||
masak | \o | 17:21 | |
17:24
bluescreen10 left
|
|||
[Coke] | colomon: downloaded, rebuilding niecza... | 17:25 | |
17:26
bluescreen10 joined
17:30
Chillance joined
|
|||
TimToady is desolate to have insulted masak++'s intelligence | 17:30 | ||
17:32
im2ee joined
17:35
risou is now known as risou_awy,
bluescreen10 left,
bluescreen10 joined
17:41
zby_home joined,
daxim left
|
|||
masak | TimToady: not at all; however, I'm horrified how much of the spouting you wrote above makes sense to me at this point :P | 17:43 | |
17:46
uasi joined
|
|||
masak | but perhaps that's how a BDFL effectively rules the land. by planting his memes and mental models in people in the community. | 17:47 | |
also it's both hubristic and humbling at the same time to think really hard about something, only to realize that TimToady already has quite a detailed map of that terrain. :) | 17:52 | ||
17:55
GlitchMr joined
18:02
uasi left
|
|||
ingy makes a note to impregnate masak soon | 18:04 | ||
18:04
MayDaniel joined
|
|||
diakopter | hmm | 18:05 | |
18:10
bluescreen10 left
|
|||
araujo | masak, making sense out of TimToady .... yah, you should be horrified | 18:11 | |
araujo hides | |||
masak | ;) | ||
18:11
japhb_ joined,
bluescreen10 joined
|
|||
moritz | I've reached that state occasionally too | 18:11 | |
colomon | TimToady: was catching up on the infix:<xx> change from earlier this month. Is it too late to make a pitch for leaving the operator as it was, except with a new rule that if the left-hand side is a closure, that closure is called repeatedly? | 18:13 | |
18:13
benabik joined
|
|||
TimToady | probably :) | 18:13 | |
masak | that feels less elegant. | 18:14 | |
colomon | masak: less elegant than requiring infix:<xx> to be special? | 18:15 | |
masak | we're all special. | ||
infix:<&&> is special. | |||
colomon | I'm not | ||
masak | if you're not special but everyone else is, that's quite exceptional... | 18:16 | |
colomon | The existence of special operators is no reason to frown open the creation of more special operators. | ||
masak | you make a valid point. | ||
however, I'm thinking back to the times when I've wanted [ 0 xx ^$size ] xx ^$size to DWIM | 18:17 | ||
and I like the new proposal. | |||
TimToady | I choose to believe in the optimizer figuring out staticness here | ||
masak | er, [ 0 xx $size ] xx $size | ||
and if the optimizer doesn't figure out staticness, that's probably not a big deal either. | 18:18 | ||
infix:<xx> doesn't feel like a hot-path, tight-loop thing. | 18:19 | ||
colomon | I'm not worried about speed (in this case, anyway) | 18:20 | |
moritz | what are you worried about? | 18:21 | |
colomon | consistency | ||
moritz | with what? | ||
colomon | all the other x-y operators | ||
ie rand-letter x 10 is one letter repeated ten times | |||
moritz | note that other places that could lead to accidentally shared references already thunk | 18:22 | |
(default values in function, default values for attributes) | |||
colomon | rand-letter xx 10 is ten letters, possibly different | ||
masak | you have a point there. | 18:23 | |
japhb_ | TimToady: I'm a bit confused about S06:3374-3383 . It appears to me that this is ambiguous given for example two MAINs defined as: 'multi MAIN(Int $bar, Bool :$foo = False)' and 'multi MAIN(Int :$foo)' . Am I correct in this belief? | 18:24 | |
TimToady | colomon: if you want that kind of consistency, we should make x thunky too | 18:26 | |
moritz | japhb_: I'm pretty sure that's a fossile | 18:27 | |
*fossil | |||
grrrr | |||
masak hugs moritz | 18:28 | ||
moritz | japhb_: arguments are passed with --name=value. --name now always assumes Bool | ||
and doesn't inspect the next argument | |||
japhb_ | moritz, Ah, OK. Is there anything in that paragraph that needs to be saved? Otherwise, I'll nuke the whole thing. | ||
moritz | japhb_: don't think so | 18:29 | |
also the line | |||
--name "spacey value" :name«'spacey value'» | |||
japhb_ | Right, I'll nuke that as well | ||
moritz | is fossiled too | ||
colomon | TimToady: or my proposal could be extended to infix:<x> and infix:<X> too. ;) | 18:30 | |
japhb_ | thanks! | ||
moritz++ | |||
moritz | (some of the tests might still test for the old behavior too) | ||
TimToady | what is the approved way to pass a list of shell-globbed files as the argument to a --name=value | 18:31 | |
the other way lets you say --foo *.ext | 18:32 | ||
moritz | but we don't even know if the other way is computable | ||
TimToady | nevertheless, that's a common idiom | 18:33 | |
moritz | TimToady: I don't use it often at all... | ||
18:33
shinobicl joined
|
|||
moritz | TimToady: and with the old spec that's only possible of the shell glob expands to a single value | 18:33 | |
18:34
soh_cah_toa joined
|
|||
TimToady | no, it says all args up to the next --bar | 18:34 | |
moritz | it does? | ||
well, then we can just autopromote an empty list to True | |||
and say that --foo --bar is the same :foo :bar, and --foo *.ext --bar is :foo(glob('*.ext')), :bar | 18:35 | ||
18:35
wk joined
|
|||
moritz | but then we can't allow options right before positional parameters | 18:35 | |
ie we make mixing options and arguments *really+ painful | 18:36 | ||
... which, IME, is the much more common idiom | |||
japhb_ | Another line in the same section (I forget which), says that the first non-option *terminates option processing*. Can't have both behaviors. | ||
moritz | agreed | 18:37 | |
TimToady | the args are part of the option, so your logic is ill there... | 18:38 | |
moritz | I'm officially in favor of disabling that magic, and requiring things like --foo="$(echo *.ext)" for what TimToady wants to do | ||
japhb_ | Personally, I'm happy with "The default parser requires = , and if you want something different, do your own parse." | ||
TimToady | O | 18:39 | |
japhb_ | Which is an escape hatch that is already in the spec | ||
moritz | TimToady: sorry, I don't understand that | ||
TimToady | typo | ||
moritz | TimToady: if --foo a1 a2 --bar treats a1 and a2 as arguments to foo, how can we pass positional arguments to MAIN after named params? | ||
s/params/arguments/ | 18:40 | ||
TimToady | that's what -- is for | ||
18:40
mkramer joined
|
|||
moritz | -1 | 18:40 | |
japhb_ | OK, but this still doesn't address the ambiguity I brought up at the start of the conversation. | ||
Or rather, moritz's solution did, but I don't see how TimToady's does. | 18:41 | ||
moritz | TimToady: that makes the much more common case harder | ||
TimToady | that's just sig ambiguity | ||
japhb_ | But the signatures aren't ambiguous per se. They're only ambiguous when = is optional for non-Bool options | ||
18:41
mberends joined
18:42
mj41 joined
|
|||
moritz | how about we allow --foo= *.txt | 18:43 | |
and withoute the =, --foo is Bool | |||
japhb_ | Ah, just a trailing = indicating "I want to capture the args up to the next option"? | 18:44 | |
moritz | yes | ||
TimToady | distinguish from --foo='' | ||
moritz | can't be | 18:45 | |
you can't have it both ways *and* eat your cake | |||
or you could invent --*foo for slurpy foo | |||
TimToady hasta go work on his email more, but still doesn't like imposing one switch culture; don't care if it's a trait, or a canned pre-MAIN processor, but we need to support multiculuralism here | |||
18:46
envi_ left
|
|||
TimToady | not tell people how they have to do it | 18:46 | |
afk & | |||
benabik | Generally these kinds of decisions are done via type information given to the option parser. | ||
japhb_ | There's another issue. in '--foo= *.txt', *.txt could expand to things that have leading '--', so effectively if we try this, it has to be the last option anyway (there can be only one of these, and it must end option parsing, except that it gobbles the rest of the line. | ||
So then I don't see the value of bothering, since that's what a slurpy array is for. | 18:47 | ||
benabik, the signature of MAIN is that type information. However, MAIN can be a multi -- with disagreeing type information. | |||
benabik | japhb_: I'd argue it's perfectly valid for the option parser to throw up its hands at that point. | 18:48 | |
japhb_: Or decide to prefer Bool over non-bool or similar. | 18:49 | ||
18:49
Holy_Cow left
|
|||
masak is happy to see S19 being discussed | 18:51 | ||
18:52
dual joined
|
|||
japhb_ | benabik, If we allow no '=' but prefer Bool, we're effectively creating action at a distance. Whether an '=' is required on an option that does have an argument changes depending on whether an argumentless option can be found in any other MULTI. It's not a dealbreaker, but it smells fishy to me. | 18:52 | |
18:52
kaare_ left
|
|||
japhb_ | Plus then we suspiciously complicate the interaction between the command line parser and the dispatcher. | 18:53 | |
Unlike the existing behavior which is: "Here is the canonical parse of the command line. Are there any matching dispatch candidates?" we would be changing to | |||
benabik | If you're going to try to parse command line options without any type information then trying to do complex things like "optional =" is probably just going to have lots of painful corners. | 18:54 | |
japhb_ | "OK, looking at the first argument, there are a couple interpretations. How many candidates match either interpretation *so far*? If matches exist with both interpretations, we need to continue building a tree of interpretations, trying to find a non-conflicting, non-ambiguous parse. Otherwise we finally throw our hands up." | 18:55 | |
Too much magic for my taste. | |||
benabik | It's a perfectly reasonable level of magic in some ways. | ||
It is a lot to do though. | |||
japhb_ | benabik, the parsing is *generating* a set of type information that it is trying to match against the type information from the dispatch candidates. | ||
benabik | japhb_: The problem is creating a non-ambiguous parse without type information ahead of time. | 18:56 | |
japhb_ | That's part of why arguments are passed through val(), which is trying to figure out what types are there, so it can inform the dispatcher. | ||
benabik, right. | |||
benabik | japhb_: Option parsers that do things like optional =s and automatic --no- options tend to receive type information to inform the parse. | 18:57 | |
japhb_ | And we either to make the parser and the dispatcher get to know each other approximately as well as Cursor and Match, or we can't DWIM like that. | ||
masak | all that ever comes in from the command line is strings. we pass them through val() to "enrich" their types. this is what makes MAIN dispatch different from regular MMD. | ||
japhb_ | right ... | ||
masak | in a way, it's similar to the problems we had with trying to unite calling context and MMD. | ||
benabik | The only way to unambiguously know if --foo bar is :(:foo<bar>) or :(:foo, 'bar') is to inform it ahead of time. Which, in this scheme requires inspection on the MULTI canidates. | 18:58 | |
masak | (in that you have two things each needing the outcome of the other) | ||
benabik | Or a set of pragmas, or similar. | ||
japhb_ | benabik, right, but what if both dispatch candidates exist? | ||
benabik | japhb_: Disambigation rule or explode, implementer's choice. :-D | 18:59 | |
japhb_: What happens if multi candidates are ambiguous? | |||
18:59
MayDaniel left
|
|||
benabik | Probably what needs to get done is to have a 90% parser that requires = and have the system be modular enough to have a pragma or inspection base system get `use`d | 18:59 | |
japhb_ | I see three options: 1. Don't DWIM, just error in that case. 2. Warn to the user that a guess is being made. 3. Require = | ||
masak, exactly | |||
19:00
kaleem left
|
|||
japhb_ | benabik, sure. And my argument is that that escape hatch already exists in the spec, where it says that if you need non-default option parsing, use your own grammar. | 19:00 | |
19:00
kaleem joined
|
|||
moritz | 2. seems very wrong. You ship a program to the user, and he calls it in an unexpected way, and Perl 6 warns (not the program) | 19:01 | |
japhb_ | Agreed. | ||
And also I think '--foo *.txt' magic is also much less valuable for Perl 6 programs, because A) it must be the last and only case of that usage on the command line, meaning you can't do it more than once in a single line, and B) we have slurpy arrays for that use case. | 19:02 | ||
benabik | I'm arguing 3 for the basics and then requesting someone write something more complicated. :-D | 19:03 | |
japhb_ | benabik, I'm currently writing "the basics". ;-) | ||
But it sounds like we're in some agreement. | 19:04 | ||
masak | I really like MMD, so I wouldn't mind if MAIN dispatch got a bit weaker if it became more like regular MMD, if possible. | ||
benabik | If you have non-multi MAIN, introspection is much easier. | ||
19:04
mkramer left
|
|||
moritz | benabik: introspection makes it much harder for the user to reason about the program | 19:04 | |
japhb_ | moritz++ | ||
moritz | things might feel a bit more intuitive in the beginning, but when you try to /understand/ what's going on, it hurts you. | 19:05 | |
benabik | moritz: sub MAIN( Int :$foo, Bool :$bar, *@files) allowing prog --foo 3 --bar * is difficult? | ||
japhb_ | And I'm not sure we want people to require different mental models depending on whether *internally* a program implements its MAIN variants with an only MAIN and internal logic, or using MMD and multi MAINs | ||
benabik, Essentially that dual behavior would require *users* to know how the *program* works in order to sanely feed it arguments. | 19:06 | ||
moritz | benabik: reading just the command line, I#d think that the result of * is an argument to --bar | ||
benabik: or that 3 terminates the command line processing | 19:07 | ||
benabik | More normal might be sub MAIN( Int :f(:$foo), Bool :$bar, *@baz) allowing prog -f 3 --bar * | 19:08 | |
19:08
mkramer joined
|
|||
geekosaur | so, you do realize that * is expanded by the shell, on unix? | 19:08 | |
benabik doe | |||
japhb_ | benabik, and in fact that case would be handled correctly. :-) | ||
(in the current '='-requiring code, I mean) | |||
benabik | japhb_: If it assumes all short options take arguments, that might be a problem. I like my `tar -xzf foo.tar.gz` | 19:09 | |
japhb_ | benabik, I don't think anyone's suggesting clustering right now. | 19:10 | |
benabik | Simpler case: echo -n foo bar baz. I really expect $n to be True, not 'foo'. Complex option parsing without foreknowledge of types is extremely difficult. | 19:11 | |
moritz | and foreknowledge of types requires solving the Halting problem in the case of multi dispatch | 19:12 | |
benabik | Non-clustering and requiring = on long options is probably the path of least surprise. | ||
moritz: determining option type by multi introspection is also extremely difficult. Non-multi MAIN() and/or pragmas are probably going to be more likely. I still like the idea of a OptParse::Magic module that does it by progressively narrowing multi candidates. But, yes, as a default that's probably a bit much. | 19:15 | ||
19:26
mkramer left
19:28
molaf left
|
|||
japhb_ | bak from interruption ... | 19:32 | |
GlitchMr | perl6: for 1..10000 {say "$_ is dividable by 10000" if 10000 %% $_} | 19:33 | |
phenny | GlitchMr: 14 Oct 03:29Z <sorear> tell GlitchMr github.com/sorear/niecza/issues/67 | ||
GlitchMr | Unoptimized code | ||
p6eval | niecza v10-54-g2f61b1e: OUTPUT«1 is dividable by 100002 is dividable by 100004 is dividable by 100005 is dividable by 100008 is dividable by 1000010 is dividable by 1000016 is dividable by 1000020 is dividable by 1000025 is dividable by 1000040 is dividable by 1000050 is divid… | ||
..pugs c943eeb: OUTPUT«***  Unexpected "%% $_" expecting operator or "}" at /tmp/SdMN91zp1T line 1, column 55» | |||
..rakudo 4e4390: OUTPUT«1 is dividable by 100002 is dividable by 100004 is dividable by 100005 is dividable by 100008 is dividable by 1000010 is dividable by 1000016 is dividable by 1000020 is dividable by 1000025 is dividable by 1000040 is dividable by 1000050 is dividable by 1… | |||
japhb_ | OK, TimToady, given the above, do you agree to dropping 'no =' support in the base spec, and pushing that to module territory? | 19:34 | |
GlitchMr | %% is operator... pugs... | ||
divisable lol | |||
divisible* | 19:35 | ||
Very complex word | |||
japhb_ | GlitchMr, pugs is behind the times still. Also, in English that statement is swapped: '10000 is divisible by $_' | ||
moritz | pugs: say $_ !% 3 for 5, 6 | ||
p6eval | pugs c943eeb: OUTPUT«***  Unexpected "!%" expecting operator, ":" or "," at /tmp/gJTBZFjsBj line 1, column 8» | ||
GlitchMr | oh right | 19:36 | |
moritz | GlitchMr: also it's good style not to produce too much output with p6eval here, unless there is a very good reason for doing so | ||
(hint, hint) | 19:37 | ||
19:39
kaleem left
19:42
kaleem joined
|
|||
GlitchMr | perl6: for 'a'..'z' {say $_ %% $_} | 19:43 | |
p6eval | niecza v10-54-g2f61b1e: OUTPUT«Unhandled Exception: System.FormatException: Unknown char: a at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0  at System.Double.Parse (System.String s, IFormatProvider provider) [… | ||
..rakudo 4e4390: OUTPUT«Bool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueBool::TrueB… | |||
..pugs c943eeb: OUTPUT«***  Unexpected "%% $_" expecting operator, ":", "," or "}" at /tmp/IqKFuAxaKp line 1, column 22» | |||
GlitchMr | (it doesn't make sense, I know) | ||
TRUE TRUE TRUE TRUE... what? | |||
benabik | Probably 0 %% 0 == True? | 19:44 | |
nom: say +'a' | |||
p6eval | nom 4e4390: OUTPUT«0» | ||
colomon | benabik has it, of course. | 19:45 | |
perl6: say "a" == 0 | |||
p6eval | rakudo 4e4390: OUTPUT«Bool::True» | ||
..niecza v10-54-g2f61b1e: OUTPUT«Unhandled Exception: System.FormatException: Unknown char: a at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0  at System.Double.Parse (System.String s, IFormatProvider provider) [… | |||
..pugs c943eeb: OUTPUT«1» | |||
GlitchMr | perl6: say 0 %% 0 | 19:46 | |
benabik | niecza appears to not like Int.String(y?) | ||
p6eval | rakudo 4e4390: OUTPUT«Bool::True» | ||
..niecza v10-54-g2f61b1e: OUTPUT«Unhandled Exception: System.DivideByZeroException: Division by zero at Builtins.mod (Niecza.Variable a1, Niecza.Variable a2) [0x00000] in <filename unknown>:0  at CORE.C881_infix_3A_3C_25_25_3E (Niecza.Frame ) [0x00000] in <filename unknown>:0  at N… | |||
..pugs c943eeb: OUTPUT«***  Unexpected "%% 0" expecting operator, ":" or "," at /tmp/a1FWmTXWLU line 1, column 7» | |||
GlitchMr | ... not only that | ||
benabik | Or %% 0 | ||
GlitchMr | 0%0 is obviously invalid | ||
You cannot divide by zero | |||
So why 0%%0 isn't... | 19:47 | ||
benabik | nom: 2 %% 0 | ||
p6eval | nom 4e4390: ( no output ) | ||
GlitchMr | "Performs a % and then tests the result for 0, returning Bool::True if the $x is evenly divisible by $y, and Bool::False otherwise." | ||
benabik | nom: say 2 %% 0 | ||
p6eval | nom 4e4390: OUTPUT«Bool::False» | ||
GlitchMr | perl6: say 0%0 | ||
p6eval | pugs c943eeb: OUTPUT«*** Illegal modulus zero at /tmp/mHlU1Jq_0K line 1, column 5 - line 2, column 1» | 19:48 | |
..niecza v10-54-g2f61b1e: OUTPUT«Unhandled Exception: System.DivideByZeroException: Division by zero at Builtins.mod (Niecza.Variable a1, Niecza.Variable a2) [0x00000] in <filename unknown>:0  at MAIN.C0_mainline (Niecza.Frame ) [0x00000] in <filename unknown>:0  at Niecza.Kernel.R… | |||
..rakudo 4e4390: OUTPUT«0» | |||
GlitchMr | rakudo doesn't seem to have problem with 0%0 it seems... | ||
But it's actually $x - floor($x / $y) * $y | |||
... | |||
0 - floor(0 / 0) * 0 | 19:49 | ||
... | |||
There is "0" involved in it, so 0/0 doesn't matter... | |||
So yeah, it kind of makes sense | |||
But it's weird | |||
19:52
mkramer joined
|
|||
masak | GlitchMr: I agree. | 19:54 | |
rakudo: say 0 / 0; say (0 / 0) * 0 | |||
p6eval | rakudo 4e4390: OUTPUT«Divide by zero in sub infix:<div> at src/gen/CORE.setting:2312 in method new at src/gen/CORE.setting:5697 in sub infix:</> at src/gen/CORE.setting:5791 in block <anon> at /tmp/WyBPKxDZfI:1 in <anon> at /tmp/WyBPKxDZfI:1» | ||
masak | rakudo: say 0 % 0 | ||
p6eval | rakudo 4e4390: OUTPUT«0» | 19:55 | |
masak | this seems like somewhat of a double standard. | ||
GlitchMr | It's actually in standard | ||
<%> should make this calculation | |||
The result of floor() doesn't matter if $y is 0, because $something*0 is always 0... | 19:56 | ||
masak | rakudo: say Inf * 0 | 19:58 | |
p6eval | rakudo 4e4390: OUTPUT«NaN» | ||
masak | not everything. | ||
GlitchMr | <GlitchMr> !yib math 1%0.2 | 20:06 | |
<YIBot> 0.2 | |||
20:06
carlin joined
|
|||
GlitchMr | This is why I think that floats are fun | 20:06 | |
Good thing I haven't yet found such issues in Perl 6 :). | |||
masak | GlitchMr: that's because 0.2 isn't a float in Perl 6. | 20:07 | |
GlitchMr | What it is then | ||
PerlJam | a Rat | 20:08 | |
20:09
kaleem left
|
|||
GlitchMr | perl6: say <2/4>*3 | 20:10 | |
p6eval | pugs c943eeb: OUTPUT«6» | ||
..niecza v10-54-g2f61b1e: OUTPUT«Unhandled Exception: System.FormatException: Unknown char: / at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0  at System.Double.Parse (System.String s, IFormatProvider provider) [… | |||
..rakudo 4e4390: OUTPUT«1.5» | |||
GlitchMr | ...? | ||
20:12
GlitchMr left
|
|||
TimToady | rakudo is correct; pugs predatest the <2/4> notation, and niecza doesn't implement it yet | 20:12 | |
at least, not for rats | |||
it thinks <2/4> is just a qw | 20:13 | ||
japhb_ | TimToady, along with my previous question (are you amenable to saying that allowing option arguments without = requires a module or manual parsing?) Here's another: should val() attempt to detect constant and enum names seen in the command line args? | 20:15 | |
masak | ...in which lexical scope...? | 20:17 | |
TimToady | presumably at the end of UNIT, where MAIN is called | 20:18 | |
benabik | That would probably be handy, actually. Although getting the scoping right might be interesting. | ||
TimToady | I lean slightly towards a 'yes' | ||
benabik is enjoying being the peanut gallery today. | |||
masak | as long as there's a lexical scope where the arguments are conceptually located, I guess that's fine. | ||
PerlJam | How does one override the command line parser? | 20:19 | |
TimToady | the args are coming from $*ARGS | ||
it suffices to define your own $*ARGS in UNIT | |||
PerlJam | Hmm. | ||
20:20
shinobicl left
20:21
arthur-_ left
|
|||
TimToady | I guess I'm okay with other preprocessors to the args coming via modules, as long as we don't mess up the semantics so thoroughly as to make certain things impossible | 20:21 | |
we already mandate a val() preprocess, after all | |||
20:23
arthur-_ joined
|
|||
TimToady | on constant names, as long as we reliably fall back to stringy types when there's no binding for the constant's type, it should not be a major issue | 20:23 | |
still thinking about a way to make string bindings epsilon looser than other types | 20:24 | ||
japhb_ | Ah, so you mean two passes: One trying with constants and enum strings turned into real types, and failing dispatch there, failing them all back to Str? Or do I need to try all combinations until one of them matches (and if that, then what order ...?) | ||
Oh, hum | 20:25 | ||
TimToady | no, I mean one pass, but Str binding loser | ||
*looser | |||
just as constraints are epsilon tighter than nominal types | |||
20:25
MayDaniel joined
|
|||
japhb_ | Yeah, that was the 'Oh, hum', when I looked up from my typing and saw your previous statement. :-) | 20:25 | |
TimToady | we had a long discussion about it a couple weeks ago | ||
japhb_ | 'we' meaning #perl6, I assume | 20:26 | |
TimToady | nodnod | ||
TimToady has to go off and hack on p5camel for the rest of the week, now that email is fixed (crosses fingers) | 20:27 | ||
japhb_ | What is 'p5camel'? | ||
TimToady | so I'll be somewhat scarce | ||
PerlJam | TimToady: When does the camel hit the stores? | ||
japhb_ | Oh, the book! | ||
Can't wait for that. | |||
TimToady | they'd want to get it out this year, but we'll see... | ||
PerlJam | I can't believe it's been > 10 years since the last one | 20:28 | |
japhb_ | Has the release date for the next Rakudo been picked? | ||
Yeah, amazing that | |||
TimToady | won't have as much time to polish this camel, so it should be more correct, but rougher | ||
PerlJam | japhb_: the compiler or the Star release? | ||
TimToady | .o("You can't polish a camel.") | 20:29 | |
japhb_ | PerlJam, compiler. I'm trying to figure out what more I have time to fit into my MAIN work before the release | ||
TimToady | later & | ||
japhb_ | o/ | ||
PerlJam | TimToady: do you guys talk about "Modern Perl" ? | ||
dalek | rixel: 7a7623e | diakopter++ | src/interp.c: optimization |
||
20:30
MayDaniel left
|
|||
PerlJam | japhb_: the compiler is scheduled for the 20th. | 20:30 | |
japhb_ | PerlJam, Besides, last I recall, R* was held up until the nebulous "the ecosystem is working again" | ||
PerlJam, ah, OK | |||
japhb_ probably shouldn't add much more to nom now, but rather save it for the next cycle. | 20:31 | ||
PerlJam | that reminds me ... anyone got any favorites for the name? | ||
20:31
mantovani joined
|
|||
tadzik | PerlJam: Warsaw? :) | 20:31 | |
mantovani | hi rakdCopyright 2010 Aware (www.aware.com.br) | ||
ops | |||
sorry bad ctrl+c | |||
hi | |||
rakudo is already for production ? | |||
PerlJam | mantovani: depending on what "production" means. | 20:32 | |
mantovani | means, developt the main software of my company | ||
japhb_ | lunch & | ||
mantovani | PerlJam: serving a lot of people | 20:33 | |
PerlJam | mantovani: at a guess, I'd say "no" | ||
mantovani | can you say why please ? | ||
sjohnson | mantovani: it's not fully ready yet, would be my guess. | 20:34 | |
tadzik | it's slow and somewhat resource-heavy | ||
PerlJam | mantovani: Check out perl6.org/compilers/features.html though | ||
mantovani | thank you very much it is enough | ||
^^ | |||
mantovani reading | 20:35 | ||
masak | mantovani: rakudo can do a *lot* of things. however, Perl 5 is more stable, has more modules, is faster, and has a bigger user base. | ||
dalek | p: bb30b90 | pmichaud++ | src/Q (2 files): Add NQPCursor "restart match" capabilities. |
||
tadzik | woo, qregex hacking | 20:36 | |
20:36
mberends left
|
|||
PerlJam | hopefully the first in a long series of improvements :) | 20:36 | |
masak | pmichaud++ | ||
20:44
wamba left
20:50
mberends joined
|
|||
diakopter | mberends: hi | 20:50 | |
20:51
dorlamm joined
|
|||
colomon | mberends: o/ | 20:51 | |
masak | mberends! \o/ | 20:52 | |
20:52
zby_home left
20:54
zby_home joined
20:57
zby_home left
20:59
im2ee left
|
|||
[Coke] | colomon: hey, guess what. spectest now fails that ONE TEST. nothing else. | 20:59 | |
colomon | [Coke]: right, that's what I get too. | ||
[Coke]: btw, remember all those test files that didn't work because of unlink? unlink works now. ;) | 21:01 | ||
[Coke] | colomon: I will refudge at some point soon. Thanks! | 21:02 | |
weird that the version of mono bumped that from a pass to a fail. But at least it's reproducable. | |||
21:03
eiro joined
|
|||
dalek | rixel: 4c22d2a | diakopter++ | src/ (6 files): progress toward compiling variable storage/access |
21:04 | |
rixel: b56c0c4 | diakopter++ | src/interp.c: Merge branch 'master' of github.com:diakopter/sprixel |
|||
rixel: a276704 | diakopter++ | src/ (6 files): rename node to ASTNode |
|||
soh_cah_toa | what's the opposite of split() again? i forget... | 21:09 | |
diakopter | join? | ||
soh_cah_toa | no. instead of splitting on what you don't want, it splits on what you do want | ||
tadzik | comb? | ||
colomon | comb, yeah | ||
soh_cah_toa | ah, yes. thanks | ||
dalek | ecza: a5c253d | (Solomon Foster)++ | t/spectest.data: Turn on io_in_for_loops.t. |
21:10 | |
21:12
smash_ joined
21:14
smash_ is now known as smash
21:15
y3llow_ joined,
pothos_ joined
21:17
pothos left
21:18
pothos_ is now known as pothos,
y3llow left,
y3llow_ is now known as y3llow
|
|||
smash | hello everyone | 21:18 | |
soh_cah_toa | smash: howdy | ||
colomon | \o | 21:19 | |
masak | smash! \o/ | 21:21 | |
tadzik | hello smash | ||
niecza: async { say 1 }; say 2 | 21:22 | ||
p6eval | niecza v10-54-g2f61b1e: OUTPUT«===SORRY!===Action method statement_prefix:async not yet implemented at /tmp/0gWyv73hqC line 1:------> async { say 1 }⏏; say 2Unhandled Exception: Unable to resolve method statement_level in class Str at /home/p… | ||
21:24
bluescreen10 left
21:45
skangas left
21:49
mj41 left
21:50
carlin left
21:58
mkramer left
|
|||
masak | 'najt, #perl6 | 22:01 | |
sorear | phenny: "najt"? | 22:05 | |
phenny | sorear: "find" (sl to en, translate.google.com) | ||
sorear | phenny: en de "night"? | ||
phenny | sorear: "Nacht" (en to de, translate.google.com) | ||
sorear | phenny: en sv "night"? | ||
phenny | sorear: "natt" (en to sv, translate.google.com) | ||
sorear | phenny: en nl "night"? | ||
phenny | sorear: "nacht" (en to nl, translate.google.com) | ||
sorear | good * #perl6 | 22:06 | |
wk | phenny: en pl "night" | 22:09 | |
sorear | phenny: en pl "night"? | 22:11 | |
phenny | sorear: "noc" (en to pl, translate.google.com) | ||
sorear guessed that one | |||
see also | |||
phenny: en ru "night"? | |||
phenny | sorear: The en to ru translation failed, sorry! | ||
flussence | phenny: en eo "night"? | ||
phenny | flussence: The en to eo translation failed, sorry! | ||
flussence | was worth a shot... | ||
wk | phenny: et en "ööd" | ||
sorear | it's noch in Russian too | 22:12 | |
benabik | wk: I think it needs the ? at the end. | ||
wk | phenny: et en "ööd"? | ||
phenny | wk: "nights" (et to en, translate.google.com) | ||
wk | benabik: of course :) | ||
22:16
whiteknight joined
|
|||
wk | instead of phenny: en{night} -> ru{ноч} | 22:18 | |
[Coke] | did TPF work with GCI in previous years? | ||
wk | like this: leto.net/mt/mt-search.cgi?tag=gci&blog_id=9 ? | 22:23 | |
22:30
wk left
|
|||
sorear | phenny: "ноч"? | 22:32 | |
phenny | sorear: "night" (ru to en, translate.google.com) | ||
22:45
Chillance left
22:52
dorlamm left
22:55
benabik left
|
|||
dalek | ecza/serialize: 232da04 | sorear++ | src/ (4 files): Mergeback |
23:00 | |
ecza/serialize: 3edbade | sorear++ | / (8 files): Merge branch 'master' of github.com:sorear/niecza into serialize |
23:01 | ||
sorear | git++ # successfully executed a merge where a file was modified on one side and renamed on the other | 23:02 | |
23:13
donri left
23:15
cognominal left,
cognominal joined
23:23
pernatiy left
|
|||
dalek | rixel: 94ef74f | diakopter++ | src/ (3 files): rename instpool to InstPool |
23:27 | |
rixel: f5e963e | diakopter++ | src/ (3 files): TitleCase a bunch more types |
|||
rixel: b69099e | diakopter++ | src/ (8 files): lots more renaming, also extend mberends' hashtable.c fetch operation to set a pointer to the hash entry in addition to setteing the values. |
|||
diakopter | sorear: there, I made it operate on pointers to avoid the double hash lookup. | 23:28 | |
colomon | o/ | 23:30 | |
diakopter | hi | ||
23:34
tokuhiro_ joined
|
|||
dalek | ast: 06d8f11 | (Solomon Foster)++ | S32-trig/generate-tests.pl: New version of generate-tests.pl which properly fudges atan2 for niecza. |
23:37 | |
ast: b652e36 | (Solomon Foster)++ | S32-trig/atan2.t: Fudged version of atan2.t. |
23:38 | ||
ecza: 008602e | (Solomon Foster)++ | t/spectest.data: Turn on atan2.t. |
23:40 |