AlexDaniel | m: 0x1F63A.uniname.say | 00:19 | |
camelia | SMILING CAT FACE WITH OPEN MOUTH? | ||
AlexDaniel | .tell moritz FWIW, somehow I was under impression that only new unicody messages are broken, but everything seems to be affected: irclog.perlgeek.de/perl6/2016-09-05#i_13155366 . Maybe you know already, I just thought that I'll mention it just in case… | 00:21 | |
yoleaux | AlexDaniel: I'll pass your message to moritz. | ||
Zoffix | AlexDaniel: yeah, I started a file for that stuff: temp.perl6.party/inconsistencies.txt | 02:08 | |
huggable: in :is: temp.perl6.party/inconsistencies.txt | 02:12 | ||
huggable | Zoffix, Added in as temp.perl6.party/inconsistencies.txt | ||
MasterDuke | aren't those first couple addressable by adding aliases (is that what they're called?) to the different parameters? e.g., :ENV in the one gets an 'env' alias and :env in the other gets an 'ENV' alias | 02:23 | |
AlexDaniel | Zoffix: maybe it'd be better to have this page on rakudo wiki? | 02:24 | |
huggable: wiki | |||
huggable | AlexDaniel, nothing found | ||
AlexDaniel | huggable: wiki :is: github.com/rakudo/rakudo/wiki | ||
huggable | AlexDaniel, Added wiki as github.com/rakudo/rakudo/wiki | ||
AlexDaniel | MasterDuke: yeah, probably | 02:25 | |
Zoffix | AlexDaniel: it's my own list | 02:26 | |
MasterDuke: not fully. You'd just have multiple ways to do the same thing and there's no good reason to standardize that behaviour on language level. If you gonna fix it, fix it right, instead of patching it over. | 02:28 | ||
AlexDaniel | now that I think about it, we can even have these things filed as bugs :) | ||
Zoffix | There's enough stupid tickets. | ||
AlexDaniel | heh, that's a very interesting way to look at it | 02:29 | |
Zoffix | Keep it a list in a single place. Fix them all when it gets large enough. | 02:30 | |
What's the point of there being dozens of tickets for this. | |||
It's not a bug. It's a design failure. | |||
And one that isn't easy to fix. | |||
MasterDuke | i guess i don't fully understand what can be changed in 6.c+n, but i thought there wasn't complete freedom to remove things. i agree that aliasing isn't the "best" option, but at least it's likely backwards compatible | 02:33 | |
Zoffix | From what I recall, the aliases come with a performance penalty | 02:35 | |
MasterDuke | i don't have strong feelings about any particular solution, but agree that the inconsistency is bad and should be addressed somehow | ||
Zoffix | Methods can't be changed in language update. Our only option is going through deprecation period. I figure we collect all of these and then put them up for deprecation in 6.e for removal in 6.f. So it'd be a large "consitifying" event instead of patching them all 1-by-1, a lot of which will likely fly under the hood | 02:37 | |
The other two big things are Intifying numerics vs. Not accepting non-Ints and treating type objects as 0 vs crashing with MultiNoMatch | 02:38 | ||
AlexDaniel | fwiw :ENV is not doc-ed | ||
Zoffix | s/under the hood/under the radar/; | 02:40 | |
MasterDuke | m: sub foo(:color(:$colour)) { $colour + 1 }; my $s; for ^1000000 { $s += foo(:color($_)) }; say $s; say now - INIT now | 02:44 | |
camelia | Unexpected named argument 'color' passed? in sub foo at <tmp> line 1? in block <unit> at <tmp> line 1?? | ||
MasterDuke | bisectable6: sub foo(:color(:$colour)) { $colour + 1 }; my $s; for ^1000000 { $s += foo(:color($_)) }; say $s; | ||
bisectable6 | MasterDuke, Bisecting by exit code (old=2015.12 new=a91ad2d). Old exit code: 0 | ||
MasterDuke, bisect log: gist.github.com/651d00f77245537de7...9316f4513e | |||
MasterDuke, (2017-08-04) github.com/rakudo/rakudo/commit/8b...2f0ea5d8cd | |||
Zoffix | haw | 02:45 | |
MasterDuke | c: 2017.07 sub foo(:color(:$colour)) { $colour + 1 }; my $s; for ^1000000 { $s += foo(:color($_)) }; say $s; say now - INIT now | ||
committable6 | MasterDuke, ¦2017.07: «500000500000?1.4953885» | ||
MasterDuke | c: 2017.07 sub foo(:$color) { $color + 1 }; my $s; for ^1000000 { $s += foo(:color($_)) }; say $s; say now - INIT now | ||
committable6 | MasterDuke, ¦2017.07: «500000500000?1.403580» | 02:46 | |
MasterDuke | c: 2017.07 sub foo(:color(:$colour)) { $colour + 1 }; my $s; for ^1000000 { $s += foo(:colour($_)) }; say $s; say now - INIT now | ||
committable6 | MasterDuke, ¦2017.07: «500000500000?1.46995942» | ||
MasterDuke | fwiw, not a huge performance difference | ||
Zoffix | good | 02:47 | |
MasterDuke | rakudobugged | 02:48 | |
RT #131857 | 02:49 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131857 | ||
Zoffix | m: "aaaaaa | ||
camelia | 5===SORRY!5=== Error while compiling <tmp>?Unable to parse expression in double quotes; couldn't find final '"' ?at <tmp>:1?------> 3"aaaaaa7?5<EOL>? expecting any of:? double quotes? term? | ||
Zoffix | m: dd "aaaaaa".subt: :2nd, 'a', 'b' | ||
camelia | No such method 'subt' for invocant of type 'Str'. Did you mean any of these?? put? sort? sqrt? subst?? in block <unit> at <tmp> line 1?? | ||
Zoffix | m: dd "aaaaaa".susbt: :2nd, 'a', 'b' | 02:50 | |
camelia | No such method 'susbt' for invocant of type 'Str'. Did you mean 'subst'?? in block <unit> at <tmp> line 1?? | ||
Zoffix | m: dd "aaaaaa".subst: :2nd, 'a', 'b' | ||
camelia | "abaaaa"? | ||
Zoffix | m: dd "aaaaaa".subst: :ii, 'A', 'B' | ||
camelia | "aaaaaa"? | ||
Zoffix | m: dd "aaaaaa".subst: :ii, 'a', 'B' | 02:51 | |
camelia | "baaaaa"? | ||
Zoffix | m: dd "aaaaaa".subst: :samecase, 'a', 'B' | ||
camelia | "baaaaa"? | ||
Zoffix | Seems methods aren't affected | ||
AlexDaniel: MasterDuke is trisectable around? I need to bisect this code: gist.github.com/zoffixznet/0c2cbd7...ad2e2bc737 | 02:56 | ||
AlexDaniel | sure, one sec | ||
Zoffix: what about this? gist.github.com/Whateverable/b26f4...b50fdbabb4 | 02:58 | ||
Zoffix | Hmm | ||
AlexDaniel | Zoffix: ¦c63c57e9a823^: «"hello,"» ¦c63c57e: «"hello,\r\nworld!\r\n"» | ||
Zoffix | AlexDaniel: really weird :/ I guess travis was failing back for awhile now but the bot never came to IRC | 02:59 | |
I thought it broke only today | |||
AlexDaniel | but wasn't it reverted later? | 03:02 | |
github.com/rakudo/rakudo/commit/a801627 | |||
Zoffix | AlexDaniel: reverted back: github.com/rakudo/rakudo/commit/7f...60ba934f95 | 03:03 | |
AlexDaniel | although I remember some was re-reverted | ||
right | |||
Zoffix | class Z is IO::Handle { method get { dd [$.nl-in]; } }; Z.new.get; # gives me [["\n"],] | ||
Needs to give [["\x0A", "\r\n"],] | |||
or [["\n", "\r\n"],] | 03:04 | ||
m: class Foo { has $.nl-in is default(["\x0A", "\r\n"]); }; class Z is Foo { method get { dd [$.nl-in]; } }; Z.new.get; | |||
camelia | [["\n", "\r\n"],]? | ||
Zoffix | And ^ that gives right value... wtf? | ||
samcv: nevermind. That earlier doc failures? Seems to be due to `is default` thing | 03:06 | ||
Oh, IO::Handle has a proxy in nl-in | 03:07 | ||
.ask lizmat any idea why this gives only `"\n"` in the list instead of both `"\n"` and `"\r\n"`? Bisectbot points to the `is default` change in IO::Handle. I'm failing to golf it out of IO::Handle tho even after copying all the relevant bits. Code: class Z is IO::Handle { method x { dd $.nl-in } }.new.x; | 03:11 | ||
yoleaux | Zoffix: I'll pass your message to lizmat. | ||
lizmat | ok, so what *should* a List.join do if one of the elements is a Junction? | 08:19 | |
One could argue that it should return a Junction | |||
rather than a Str | |||
m: dd ("a"|"b","c").join # jnthn, should this return a Str or a Junction ? | 09:14 | ||
camelia | "any(\"a\", \"b\")c"? | ||
jnthn | No idea. | ||
lizmat | as in any("ac","bc") | ||
jnthn | What does Junction.Str do? | 09:15 | |
m: say any(1, 2).Str | |||
camelia | any(1, 2)? | ||
lizmat | so for it.s self.perl | ||
jnthn | m: say any(1, 2).Str.WHAT | ||
camelia | (Str)? | ||
lizmat | *far | ||
jnthn | OK, then I'd expect it to do what it's doing. | ||
Though worth running by TimToady :) | |||
I don't know that we can reasonably go auto-threading slurpy things | 09:16 | ||
It doesn't really make sense anyway | |||
lizmat | FWIW, this is about #131856 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131856 | ||
jnthn | Since auto-threaded is a binding failover | ||
But *@a has Mu-typed containers | |||
So there's nothing to fail | |||
lizmat | well, the issue is really wth List.join | 09:17 | |
which in turn makes it an issue of Junction.Str | |||
jnthn | I'm not sure I see the issue | 09:18 | |
List.join calls .Str on any of its inputs that ain't a Str and then joins the results | |||
I'm not sure Junction.Str can reasonably do much different tbh | 09:19 | ||
The ~ inconsistency is a tad unfortunate, though | 09:20 | ||
lizmat | well, I have a patch that returns a new Junction with its elements .Stringified | ||
jnthn | But Str is a coercion method | ||
It *must* return a Str | |||
Or fail | |||
lizmat | well, do we want to have a difference between ("a"|"b") ~ "c" and join("a"|"b","c") ? | 09:21 | |
jnthn | Did you intend an extra "" at the start of join, since the first arg is taken as the separator? | 09:22 | |
m: say ("a"|"b") ~ "c" | |||
camelia | any("a", "b")c? | ||
lizmat | fwiw, I think I can make it DWIM, but it breaks some expectations in roast | ||
jnthn | m: say join("", "a"|"b","c") | ||
camelia | any("a", "b")c? | ||
jnthn | Looks they they do the same today | 09:23 | |
I mean, on the one hand we could just say that list precedence things don't auto-thread | |||
lizmat | yeah, because ~ is expressed in terms of .join | ||
jnthn | ops, list associativity | 09:24 | |
lizmat | so I thought about fixing List.joi, so that we would at least be consistent | ||
jnthn | But on the other, many people perhaps won't expect ~ to be list assoc | ||
We already *are* consistent though, so far as ~ and join go | |||
lizmat | m: dd [~] "a","b","c" | ||
camelia | "abc"? | ||
lizmat | jnthn: true, but you said: "The ~ inconsistency is a tad unfortunate, though" | 09:25 | |
jnthn | It is, but "a tad unfortunate" doesn't mean "must be changed" | ||
lizmat | I took that as "maybe fix the ("a"|"b") ~ "c" case | ||
jnthn | I'm not yet seeing something that isn't worse, though | 09:26 | |
We could see how consistently the "if it's list associative it doesn't auto-thread" rule is | |||
lizmat | maybe the solution is to have Junction.Str warn ? | ||
meanwhile, I can see many uses for ("a"|"b") ~ "c" simply DWIM :-) | 09:27 | ||
jnthn | Maybe but otoh you'll probably see the output | ||
:) | |||
Anyway, I think it wants running by TimToady | 09:28 | ||
But I think the answer to "Is it possible to make slurpies junct, same as non-Mu scalar candidates?" is no. | |||
lizmat | m: my @a = <a b c>; dd any(@a) ~ ".html" | 09:29 | |
camelia | "any(\"a\", \"b\", \"c\").html"? | ||
jnthn | That...gives you a junction though | ||
Not the filenames | |||
lizmat | m: my @a = <a b c> >>~>> ".html"; dd any(@a) | 09:30 | |
camelia | any("a.html", "b.html", "c.html")? | ||
jnthn | Right, that's a much nicer way to write it :) | ||
Especially as a list is probably more useful as a result | |||
I think junctions are best used in situations that will collapse to a boolean | 09:31 | ||
lizmat | m: dd (1|2) + 3 | ||
camelia | any(4, 5)? | ||
lizmat | so, should that then not work either ? | ||
jnthn | It can work | ||
lizmat | m: dd (1|2|3) + 3 | ||
camelia | any(4, 5, 6)? | ||
jnthn | Just saying that I sometimes feel people reach for junctions to solve stuff that could be done more easily with boring old list operations :) | 09:32 | |
lizmat | yeah, true, but it's a bit of a WHAT, so maybe we should at least warn on Junction.Str | 09:33 | |
jnthn | Maybe so | ||
lizmat | because it doesn't do what people think ? | ||
jnthn | Not soemthing I can make a call on really though | ||
lizmat | yeah, ok | ||
I'll bug TimToady about it after his keynote | |||
jnthn | What I *can* make a call on is "can slurpys junct", and I think that has to be "no" | ||
It runs into laziness issues for one | 09:34 | ||
lizmat | yeah, in general, I agree | ||
jnthn | But for two, it'd further complicate slurpy handling. | ||
Slurpy and flattening are...really not good cases for performance at the moment. | |||
lizmat | agree :-) | ||
jnthn | Spesh largely throws its hands up when it sees flattening today | ||
I recently made slurpy hash stuff come out better but even then only when you have a non-flattening on the other side | 09:35 | ||
Which does help most calls to .new a bit i guess. | 09:36 | ||
Even putting performance aside I just can't see a good way to make slurpy stuff do magical beheavior on junctions, however. | |||
nine | Hm...at compile time I don't have the full signature yet while at compose time I don't have a $*W anymore... | ||
dogbert17 | lizmat++, another excellent Weekly | 09:46 | |
nine | Is there any way I can transplant a signature from one Code object to another? | 09:56 | |
jnthn | Not really, because signatures are compiled | 10:05 | |
In the common case | |||
So will already have been code-generated | |||
Well, unless you can somehow do it earlier than that | |||
nine | How can -> \arg1 is raw, \arg2 is raw { my $args := nqp::list(); nqp::push($args, arg1); nqp::push | 10:42 | |
|($args, arg2); nqp::nativecall($!rettype, self, $args); } | |||
How can -> \arg1 is raw, \arg2 is raw { my $args := nqp::list(); nqp::push($args, arg1); nqp::push($args, arg2); nqp::nativecall($!rettype, self, $args); } | |||
not be massively faster than -> |args { my Mu $args := nqp::getattr(nqp::decont(args), Capture, '@!list'); if nqp::elems($args) != $!arity { X::TypeCheck::Argument.new( :objname($.name), :arguments($args.map(*.^name)) :signature(try $r.signature.gist),).throw } nqp::nativecall($!rettype, self, $args); }; | |||
jnthn | nine: Well, |args is pretty cheap | 10:45 | |
On the accepting side | |||
nine | IOW the high level code won't get much better than this and I'll have to look at the lower levels for further improvements | 10:46 | |
jnthn | For native call? | ||
Yeah, what we really want is some kind of mechanism that will let us be able to JIT the calls in some cases | |||
nine | yes | ||
jnthn | But that's...not quite obvious how to design | ||
I suspect it may end up being related to the whole invocation spec mechanism though | 10:47 | ||
It's almost like we want something a tad like indy on JVM | |||
That is, we "link" it on first call | |||
nine | Sounds a bit daunting to someone who hasn't done anything with the JIT yet :) | 10:50 | |
jnthn | :-) | 10:52 | |
This one is very much on my list of "if it was esay I'd have done it already" :) | 10:53 | ||
nine | Maybe as a start, I could try to create an op for the common case of having 2 pointers as arguments and trying to JIT that. Just to gather some familiarity. | 10:55 | |
jnthn | Yeah | 10:57 | |
I'd take a look at how native calls are handled in QAST -> MAST also | |||
I think there's a freaky decont loop in the way of serious opts also that we could really do with being able to specialize out | |||
nine | Oh, I didn't notice that there was a layer in between | 10:58 | |
That decont loop looks awful. It even involves an nqp::can($obj, 'cstr') | 11:01 | ||
jnthn | eww | 11:04 | |
nine | There's definitely room for improvement there as we do know all the types involved at the time we choose the code to run. So if the arguments are just pointers, we could use an optimized version that doesn't do this check. | ||
jnthn | Yeah | 11:05 | |
nine | Also this check really means to just handle ExplicitlyManagedString correctly, not all objects that happen to have a cstr method. | 11:06 | |
And ExplicitlyManagedString can probably only appear if we have a Str argument, so we can actually special case that. | 11:09 | ||
jnthn | Part of me wonders if we want to code-gen (e.g. QAST tree and compile it) something per native call | ||
That would do the deconts and checks as needed | 11:10 | ||
And then have some kind of nativeinvoke ops | |||
That just use the normal args buffer | |||
That way spesh can rip out the deconts/checks and can provide the args without packaging them up | 11:11 | ||
And later JIT the call itself | 11:12 | ||
Geth | rakudo/nom: 67455170ca | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm Revert "Use "is default" for IO::Handle atttributes" This reverts commit c63c57e9a823303e74c06afdee10a99d6cb137ad. Hopefully fix the problems in IO::String. |
11:17 | |
jnthn | lunch & | 11:19 | |
nine | jnthn: yes, that was kinda the plan until I came acress the cheapness of |args. With the decont loop it makes more sense again. Though I guess for influencing code-gen like that we'd have to pull the "is native" trait into the grammar? | 11:26 | |
Not spectacular, but the numbers are moving into the right direction :) | 11:53 | ||
13.6 seconds for 100000 iterations. That is about half a second faster | 11:59 | ||
timotimo | the problem with generating some qast "per native call" is we have to have something different for the CALL-ME function we install on native subs i think? | 12:01 | |
nine | timotimo: what do you mean? | 12:02 | |
timotimo | well, there's a single function at the moment that serves every native call | 12:03 | |
nine | timotimo: github.com/rakudo/rakudo/commit/46...ea9779a104 | 12:04 | |
just so we are on thevsame page | 12:05 | ||
timotimo | ah, hm, but then that's just closure clones of the same static frame | ||
i.e. only variable contents differ, not the actual bytecode underneith | 12:06 | ||
underneath? | |||
nine | I'm experimenting with differentiating it for some common cases. Especially when there are no stringvarguments we don't have to check for cstr() | 12:07 | |
timotimo | right, that'd be good | ||
nine | Doesn't safe much but every bit helps | ||
timotimo | we can put multiple different nativecall candidates into the list of ops or we put a literal parameter in there that tells it what kind of nativecall code to generate | 12:08 | |
i.e. it'd want a QAST::IVal in that parameter and decide based upon that | |||
nine | I just have a couple of code blocks to choose from in !setup. And a lovely named nqp::nativecallwithstrargs op | 12:10 | |
jnthn | timotimo: That's kinda why I was pondering a indy-like link option for invocation spec | 12:11 | |
That is, on the first call it runs some code | |||
Which should return some code ref | 12:12 | ||
Which is then installed as the think to usually call | |||
*the thing | |||
Presumably by being able to specify a linked_result attribute | 12:13 | ||
nine | jnthn: how could I compile that when we are already at the first run? | ||
jnthn | nine: Compile the stub I talked about? | ||
The QAST compiler is just as available at runtime :) | |||
And we can inline across compilation units :) | |||
nine | Ok, will have a look. Should turn off now though as I'm already aboard the plane to Amsterdam :) | 12:14 | |
jnthn | Have a good flight :) | ||
nine | thanks :) | 12:15 | |
[TuxCM] | This is Rakudo version 2017.07-139-g67455170c built on MoarVM version 2017.07-320-g600c2e9c | 12:16 | |
csv-ip5xs 2.083 - 2.127 | |||
test 11.662 | |||
test-t 3.587 - 3.590 | |||
csv-parser 13.815 | |||
Zoffix | =o \o\ |o| /o/ o= | 12:17 | |
Yey for sub 4s times \o/ | |||
jnthn wonders if the stuff he's working on today might help some more also | |||
jnthn also hopes the lunch pizza won't cause a carb crash... | 12:18 | ||
[TuxCM] | BTW greetings from the TPCiA prep | 12:20 | |
Zoffix | \o/ | 12:24 | |
dogbert17 | I'm suddenly getting several test failures in t/spec/S32-io/IO-Socket-INET.t | 14:31 | |
seems to be tests relating to \n \n\r | 14:35 | ||
nine | Oh I'm just .25 seconds away from my comfortable 50 % advantage ;) | ||
timotimo | cool | ||
Zoffix | dogbert17: are you sure you got latest and greatest rakudo? | 14:38 | |
IO::String was failing with \n \r\n stuff recently and latest commit fixed that; dunno if the test is failing for same reason (on second thought, probably not) | |||
nine | On the plane I figured out how to compile QAST at runtime and get at the code | 14:39 | |
Off to the hotel now | 14:40 | ||
dogbert17 | Zoffix: I belive so This is Rakudo version 2017.07-139-g67455170c built on MoarVM version 2017.07-318-g604da4d06 | ||
Zoffix | yeah that's latest | 14:41 | |
ZofBot: say something | |||
ZofBot | Zoffix, nqp')' “The largest point release before was | ||
dogbert17 | not ok 12 - \r\n separator, not ok 13 - \r was not left behind on the string, not ok 14 - . as a separator | ||
nine | What I haven't found out so far is how my newly compiled block of code can get at the subroutine's arguments... | 15:27 | |
Free wifi on the bus to the hotel btw | 15:28 | ||
Zoffix is reminded of www.complex.com/life/2017/07/22-th...s-for-wifi | 15:32 | ||
Does the bus have a toilet? :) | 15:33 | ||
ugexe | why is precedence such that `my $x := 1,2` is (1,2) but `my $x = 1,2` is 1? My gut instinct would think := and = would be pretty close; close enough that a comma wouldn't interfere in this instance | 15:49 | |
nine is now on the hotel wifi | 16:08 | ||
llfourn is at dutch design hotel artemis | 16:09 | ||
geekosaur | because = deconstructs but := is raw binding, I think | ||
"destructuring assignment" | |||
nine | llfourn: perl/#yapc | 16:11 | |
llfourn | nine: irc.perl.org? | ||
nine | llfourn: yes | 16:12 | |
llfourn | nine: cheers :) | ||
Zoffix | geekosaur: wouldn't then a list in a variable be similarly destructured? | 16:19 | |
m: my $l := (1,2); my $x = $l; quietly my $y = 1, 2; dd [$x, $y] | 16:20 | ||
camelia | [(1, 2), 1]? | ||
geekosaur | wouldn't you need to flatten the list? | 16:21 | |
Zoffix | It's already flat :D | 16:23 | |
What do you mean? | |||
m: my $l := (1,2); my $x = | $l.flat; quietly my $y = 1, 2; dd [[$x], [$y]] | 16:24 | ||
camelia | [[slip(1, 2),], [1]]? | ||
jnthn | The precedence of = is based on the sigil | ||
my $a = 1, my $b = 2 # does the right thing | 16:25 | ||
Zoffix | Ah | ||
OK | |||
dogbert11 the failing tests in t/spec/S32-io/IO-Socket-INET.t seems to caused by 67455170 | 16:30 | ||
ugexe | maybe because IO::Socket still uses the is default? | 16:35 | |
dogbert11 | ugexe: you mean line like 'has $.nl-in is rw is default(["\n", "\r\n"]);' | 16:54 | |
*lines | |||
ugexe | right. but the commit you say is the cause was only on IO::Handle, so there has to be some intersetion somewhere | 16:58 | |
dogbert11 | indeed | 17:01 | |
ugexe | i dont see anything obvious | 17:11 | |
Zoffix | I'm guessing the `is default` bug that was affecting IO::Handle now affects `is default` on socket, 'cause it was removed from handle. | 17:14 | |
try disabling spesh and stuff | |||
Wonder how long it'll take people to notice the logotypes are missing from the modules.perl6.org :) | 17:17 | ||
I think I'm not gonna put 'em back on search page; only on the (upcoming) dist page. With a lot of dists, we can't just make a sprite of all the logotypes any more and using them one-by-one on a search page, triggering hundreds of requests per page is also LTA | 17:19 | ||
(also, they look like shit) | 17:20 | ||
timotimo | you got something against my art? :P | 18:04 | |
github.com/timo/ADT/blob/master/lo..._32x32.png | |||
it's falwelss | |||
AlexDaniel | huh… | 18:42 | |
nvm :) | 18:49 | ||
Zoffix | No, but lots of art all one page is bad. | 19:15 | |
pmurias | jnthn: do you have any suggestions how to make EVAL(q:to/END/) work with MONKEY-SEE-NO-EVAL cleanly? | 20:58 | |
jnthn | pmurias: In what way does it not work? | 21:04 | |
m: EVAL 'say 42' | 21:05 | ||
camelia | 42? | ||
jnthn | m: EVAL "EVAL q:to/END/\nsay 42\nEND\n" | ||
camelia | 5===SORRY!5=== Error while compiling /home/camelia/EVAL_0?EVAL is a very dangerous function!!! (use the MONKEY-SEE-NO-EVAL pragma to override this error,?but only if you're VERY sure your data contains no injection attacks)?at /home/camelia/EVA… | ||
jnthn | Ah, it shouldn't warn 'cus it's literal? | 21:06 | |
Hmmm | |||
pmurias: I'd dump the QAST at github.com/rakudo/rakudo/blob/nom/....nqp#L9205 and see what it's coming out as | 21:11 | ||
timotimo | yeah, it happens so early tha twe can't even get the --target=ast :D | ||
maybe it barfs because the WVal(Str) is inside a Stmts? | |||
jnthn | Right, maybe something like that | ||
Or because at that point all it has is a placeholder | 21:12 | ||
timotimo | we've had that kind of thing prevent the for optimization a bunch of times :) | ||
like when you put in superstitious parens | |||
it does show the error to be after the END | |||
jnthn | Well, that'll teach folks not to be superstitious :P | ||
timotimo | we'll just codegen a little sleep(0.01) at the end of every Stmts that only has one child node | 21:13 |