Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_logs/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm Set by AlexDaniel on 12 June 2018. |
|||||||||||||||||||||||||||||||||||||||
00:04
MasterDuke left
00:07
j3nnn1 left
00:08
MasterDuke joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | nqp: 8d7738ec87 | (Daniel Green)++ | src/vm/js/nqp-runtime/.core.js.swn Remove another vim swap file |
00:11 | |||||||||||||||||||||||||||||||||||||
00:55
stmuk_ joined
00:57
stmuk left
01:49
stmuk joined
01:51
stmuk_ left
02:38
ufobat___ joined
02:41
ufobat_ left
|
|||||||||||||||||||||||||||||||||||||||
Geth | nqp/truffle: 4282d2f1e3 | (Daniel Green)++ | 3 files [truffle] Implement nqp::<ordbaseat replace> ops |
03:15 | |||||||||||||||||||||||||||||||||||||
03:20
MasterDuke left
03:42
benji__ left
04:05
BenGoldberg joined
05:08
BenGoldberg left
05:29
brrt joined
05:38
Ven` joined
05:42
Ven` left
05:51
robertle joined
|
|||||||||||||||||||||||||||||||||||||||
[Tux] |
|
06:10 | |||||||||||||||||||||||||||||||||||||
nine | Looks like csv-ip5xs lost a lot after the rescalar merge :/ | 06:41 | |||||||||||||||||||||||||||||||||||||
brrt | :-( | 07:15 | |||||||||||||||||||||||||||||||||||||
ohai nine. btw, did you see some of the angry jit-nativecall bugs | 07:16 | ||||||||||||||||||||||||||||||||||||||
I was thinking, maybe we can move the jit-nativecall bit to an expression tree | |||||||||||||||||||||||||||||||||||||||
07:42
lizmat joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | Files=1242, Tests=76399, 326 wallclock secs (15.98 usr 5.79 sys + 2272.25 cusr 228.95 csys = 2522.97 CPU) | 07:58 | |||||||||||||||||||||||||||||||||||||
08:23
[TuxCM] left
08:30
Ven` joined
|
|||||||||||||||||||||||||||||||||||||||
nine | brrt: yes, saw them but I currently don't seem to have time and energy to have a closer look. Vacation next week ought to fix that though :) | 08:46 | |||||||||||||||||||||||||||||||||||||
brrt | :-) | 08:51 | |||||||||||||||||||||||||||||||||||||
09:16
lizmat left
09:19
lizmat joined
09:22
robertle left
09:30
nativecallable6 joined
|
|||||||||||||||||||||||||||||||||||||||
Ulti | brrt: made it to the front page ;) news.ycombinator.com/item?id=17496789 | 09:35 | |||||||||||||||||||||||||||||||||||||
09:39
lizmat_ joined,
brrt left
09:40
lizmat left
09:47
[TuxCM] joined
09:49
lizmat_ is now known as lizmat
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | so I'm looking through toaster failures | 09:51 | |||||||||||||||||||||||||||||||||||||
yoleaux | 10 Jul 2018 14:39Z <tyil[m]> AlexDaniel: if the perl community were to get it's own Matrix homeserver, would it be interesting to link both perl.org and freenode's #perl6 channels to them? | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | it's interesting! | 09:52 | |||||||||||||||||||||||||||||||||||||
a lot of stuff depended on XML and there's a PR for that already | |||||||||||||||||||||||||||||||||||||||
but, for example, module ANTLR4::Grammar works fine with MVM_SPESH_DISABLE=1 and fails otherwise | 09:53 | ||||||||||||||||||||||||||||||||||||||
that's a lot of stuff to go through so I guess I'll be filing a bunch of tickets shortly | 09:54 | ||||||||||||||||||||||||||||||||||||||
just to make it manageable | |||||||||||||||||||||||||||||||||||||||
jnthn | AlexDaniel++ | 10:02 | |||||||||||||||||||||||||||||||||||||
There's a lot of spesh changes, a lot of new use of spesh plugins, and Scalar has been extensively re-worked. | 10:04 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | release process is going to be fun then :) | 10:05 | |||||||||||||||||||||||||||||||||||||
jnthn | There's also a spesh branch that will merge shortly that contains some fixes, and helps us sanity-check the spesh graph better. | ||||||||||||||||||||||||||||||||||||||
Yeah. I'm also now remembering why I do spesh works in chunks. Once I'm zoned in to that it's hard to do anything else. | |||||||||||||||||||||||||||||||||||||||
10:22
pmurias joined
10:37
brrt joined
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | samcv: so the gist of your changes is “now stuff is randomized not just per run, but all the freaking time”, is that right? :) | 10:39 | |||||||||||||||||||||||||||||||||||||
I see one module that's unhappy about that, yeah | 10:40 | ||||||||||||||||||||||||||||||||||||||
samcv | AlexDaniel: yes. if you add a key to the hash then the order will change completely | ||||||||||||||||||||||||||||||||||||||
also before: | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | c: 2018.06,HEAD say <a b c d ef gh>.Set.Str for ^30 | ||||||||||||||||||||||||||||||||||||||
committable6 | AlexDaniel, gist.github.com/461302fa671a4eeb55...a839a6e1a7 | ||||||||||||||||||||||||||||||||||||||
samcv | m: my %hash; for ^10 { %hash{$_} = 1}; say %hash.keys | ||||||||||||||||||||||||||||||||||||||
camelia | (1 5 3 4 0 2 7 6 8 9) | ||||||||||||||||||||||||||||||||||||||
samcv | my %hash; for ^10 { %hash{$_} = 1}; say %hash.keys; my %hash2; for ^10 { %hash2{$_} = 1}; say %hash2.keys | 10:41 | |||||||||||||||||||||||||||||||||||||
evalable6 | (9 6 3 5 7 4 1 2 0 8) (0 8 1 2 7 4 9 3 6 5) |
||||||||||||||||||||||||||||||||||||||
samcv | also before, this would have the same result, i mean it would be different each startup of moarvm, but two branch new hash's with elemnts added in the same order would have the same order | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | yeah, that | 10:42 | |||||||||||||||||||||||||||||||||||||
I see, thanks | |||||||||||||||||||||||||||||||||||||||
samcv | if you did all operations identical between the two hashes they wolud have the same order (assuming they have the same number of buckets) | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | yeah | ||||||||||||||||||||||||||||||||||||||
samcv | also at NL perl workshop some people told me that they think having in order hashes as a type is useful. so we could add ordered hashes later if people wanted them | 10:43 | |||||||||||||||||||||||||||||||||||||
10:46
brrt left
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | FWIW my goal is to send a bunch of PRs first, and then we'll think what should be done about all that | 10:49 | |||||||||||||||||||||||||||||||||||||
10:50
Ven` left
|
|||||||||||||||||||||||||||||||||||||||
Geth | nqp: f8f7d34b36 | (Jonathan Worthington)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp Map a new istype_nd ("no decont") op on MoarVM |
10:54 | |||||||||||||||||||||||||||||||||||||
lizmat | oooo wow | 10:56 | |||||||||||||||||||||||||||||||||||||
that would allow cleaning up a lot of HLL code (if the JVM backend would also have it) | |||||||||||||||||||||||||||||||||||||||
jnthn | Would it? | ||||||||||||||||||||||||||||||||||||||
jnthn is curious where | |||||||||||||||||||||||||||||||||||||||
There's now a few nqp::blah_nd ops though | 10:57 | ||||||||||||||||||||||||||||||||||||||
lizmat | there's a lot of candidates that have an explicit nqp::istype(nqp::decont) | ||||||||||||||||||||||||||||||||||||||
jnthn | They can save some nqp::p6var | ||||||||||||||||||||||||||||||||||||||
uh...what? | |||||||||||||||||||||||||||||||||||||||
lizmat | no? | ||||||||||||||||||||||||||||||||||||||
jnthn | You understood backwards, I think | ||||||||||||||||||||||||||||||||||||||
nqp::istype($a, $b) deconts *both* $a and $b | |||||||||||||||||||||||||||||||||||||||
The new op does neither | |||||||||||||||||||||||||||||||||||||||
lizmat | ah.... hmmm | ||||||||||||||||||||||||||||||||||||||
lemme double check | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 7dfc60235d | (Jonathan Worthington)++ | tools/build/NQP_REVISION Bump NQP for new istype_nd op on MoarVM |
10:58 | |||||||||||||||||||||||||||||||||||||
rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....1-gf8f7d34 1b3dd35e54 | (Jonathan Worthington)++ | src/Perl6/Actions.nqp Previously, a method like: multi method chars(Str:D: --> Int:D) { nqp::p6box_i(nqp::chars($!value)) } ... (13 more lines) |
|||||||||||||||||||||||||||||||||||||||
lizmat | jnthn: indeed, got it backward *and* was thinking of something else | 11:01 | |||||||||||||||||||||||||||||||||||||
so the _nd versions are for cases where you *know* things have been deconted already, right ? | |||||||||||||||||||||||||||||||||||||||
jnthn | Yes | 11:02 | |||||||||||||||||||||||||||||||||||||
But...be careful :) | |||||||||||||||||||||||||||||||||||||||
Remember that spesh strips out many pointless ones | |||||||||||||||||||||||||||||||||||||||
And it's an icky bug if we mis-use it | 11:03 | ||||||||||||||||||||||||||||||||||||||
The best place to use them is in places where you explicitly did a decont yourself | |||||||||||||||||||||||||||||||||||||||
lizmat | but would doing an explicit decont not be worse? | 11:07 | |||||||||||||||||||||||||||||||||||||
jnthn | Not if you need to do one :P | 11:08 | |||||||||||||||||||||||||||||||||||||
lizmat | I mean, the "standard" versions would do the decont internall, so one fewer op to process, no? | ||||||||||||||||||||||||||||||||||||||
jnthn | No, the standard versions compile into decont + the op | ||||||||||||||||||||||||||||||||||||||
You don't see it, but code-gen emits it :) | |||||||||||||||||||||||||||||||||||||||
lizmat | also on JVM ? | 11:09 | |||||||||||||||||||||||||||||||||||||
seem to recall it being an issue there sometimes, so an explicit decont was needed | |||||||||||||||||||||||||||||||||||||||
jnthn | No, there it's currently scattered across the op bodies | ||||||||||||||||||||||||||||||||||||||
lizmat | or have 2 versions of code: yuk | ||||||||||||||||||||||||||||||||||||||
jnthn | Though in theory they should match up :) | ||||||||||||||||||||||||||||||||||||||
lizmat | ok, well, for now I will refrain from mucking with that until after the 2016.07 release | 11:10 | |||||||||||||||||||||||||||||||||||||
11:11
brrt joined
11:35
robertle joined
11:43
Ven` joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | roast/Unicode-11.0: de629d08c5 | (Samantha McVey)++ | 3 files Update Emoji Tests to version Unicode version 11.0 |
11:44 | |||||||||||||||||||||||||||||||||||||
samcv | ugh. collation broke once i updated unicode. so will take longer to update than i had hoped. bbl | 11:45 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: 86846ac50c | (Zoffix Znet)++ | src/core/IO/Handle.pm6 Check if $!decoder is setup in IO::Handle.encoding… …before we assume no work is needed. This likely won't be needed when R#2039 github.com/rakudo/rakudo/issues/2039 is fixed to setup the decoder right when encoding is set on creation. |
12:28 | |||||||||||||||||||||||||||||||||||||
synopsebot | R#2039 [open]: github.com/rakudo/rakudo/issues/2039 [IO][LTA] LTA IO::Handle.encoding can have a value, but no valid decoder is setup | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo/handle-6.d: 62 commits pushed by (Jonas Kramer)++, (Jonathan Worthington)++, (Elizabeth Mattijsen)++, (Zoffix Znet)++ review: github.com/rakudo/rakudo/compare/0...ae3789f36a |
||||||||||||||||||||||||||||||||||||||
12:46
Zoffix joined
|
|||||||||||||||||||||||||||||||||||||||
Zoffix | What's :$replacement in IO::Handle.encoding? | 12:46 | |||||||||||||||||||||||||||||||||||||
timotimo | i think it's what you get when a character can't be encoded in the target encoding | 12:47 | |||||||||||||||||||||||||||||||||||||
jnthn | Replacement char if the string contains something not possible to encode | ||||||||||||||||||||||||||||||||||||||
Zoffix | Thanks. | ||||||||||||||||||||||||||||||||||||||
jnthn | (In the specified encoding) | ||||||||||||||||||||||||||||||||||||||
timotimo | maybe also what you get when there's garbage in the data to be decoded? | ||||||||||||||||||||||||||||||||||||||
Zoffix | And :$strict is part of spec now or what's happening? I recall there being something about this blocked from changing because we can't do caller's lang version yet? | 12:50 | |||||||||||||||||||||||||||||||||||||
12:50
j3nnn1 joined
|
|||||||||||||||||||||||||||||||||||||||
Zoffix | I know what our marketing alias should be: Mistery. | 12:55 | |||||||||||||||||||||||||||||||||||||
If you read the source you'll find all of these mystery options that aren't specced or documented and half the core devs don't even know what they are :P | |||||||||||||||||||||||||||||||||||||||
12:56
Zoffix left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | .oO( Worri ) |
12:58 | |||||||||||||||||||||||||||||||||||||
and people using Worri would be Worriors :-) | |||||||||||||||||||||||||||||||||||||||
although, "Misterians" also has a ring to it :-) | 12:59 | ||||||||||||||||||||||||||||||||||||||
stmuk | Mysterons | ||||||||||||||||||||||||||||||||||||||
13:01
lizmat left
13:04
lizmat joined
|
|||||||||||||||||||||||||||||||||||||||
jkramer | I like Rakudo as a name. And the mascot should be a raccoon. | 13:04 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | rakudo name is unfortunately taken by another software project :P | 13:07 | |||||||||||||||||||||||||||||||||||||
jkramer | Raccoodo? | 13:09 | |||||||||||||||||||||||||||||||||||||
jkramer just likes raccoons :) | |||||||||||||||||||||||||||||||||||||||
13:10
Zoffix joined
|
|||||||||||||||||||||||||||||||||||||||
Zoffix | AlexDaniel: rename Rakudo :) | 13:10 | |||||||||||||||||||||||||||||||||||||
To Rokudo | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | two renames for the price of one! | ||||||||||||||||||||||||||||||||||||||
lizmat | www.rakudodining.com # mjammie | 13:11 | |||||||||||||||||||||||||||||||||||||
Zoffix | "Ideally the language itself would be "Rakudo" ("Way of the Camel") and the current implementation would be "Rokudo" ("Way of Six")" | ||||||||||||||||||||||||||||||||||||||
jkramer | Or make rakudo really fast and name it Rockedo | ||||||||||||||||||||||||||||||||||||||
Zoffix | Tho Camel is already taken by another language :) | ||||||||||||||||||||||||||||||||||||||
Chonomichi | 13:12 | ||||||||||||||||||||||||||||||||||||||
"The way of the butterfly", according to google translate: translate.google.ca/#en/ja/the%20w...0butterfly | |||||||||||||||||||||||||||||||||||||||
brrt | 'no michi' appears to be 'way of' | 13:15 | |||||||||||||||||||||||||||||||||||||
if I'm guessing language correctly | |||||||||||||||||||||||||||||||||||||||
'butterflies' is 'cho' | 13:16 | ||||||||||||||||||||||||||||||||||||||
Zoffix | "Kinaru" = "marvelous" | ||||||||||||||||||||||||||||||||||||||
brrt | which is nicely close to 'cro', so... | ||||||||||||||||||||||||||||||||||||||
stmuk | jitenshaokiba-do | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: f830bf344e | (Elizabeth Mattijsen)++ | 5 files Make .sum a multi Needed for some future optimization |
13:33 | |||||||||||||||||||||||||||||||||||||
Zoffix | grr... fixing R#2039 makes IO::Handle.new(:path(self)).open(:bin) break, because decoder is setup in TWEAK -_- | 13:41 | |||||||||||||||||||||||||||||||||||||
synopsebot | R#2039 [open]: github.com/rakudo/rakudo/issues/2039 [IO][LTA] LTA IO::Handle.encoding can have a value, but no valid decoder is setup | ||||||||||||||||||||||||||||||||||||||
Zoffix | (that was from IO::Path.slurp and I'm guessing probably used in the wild too; and if it isn't then we're paying to setup a decoder in TWEAK that won't ever be needed -_-) | 13:42 | |||||||||||||||||||||||||||||||||||||
.new should have all the arguments about encodings and .open should only have open modes. | 13:43 | ||||||||||||||||||||||||||||||||||||||
*1 set of open modes | |||||||||||||||||||||||||||||||||||||||
lizmat | I think this all comes from the fact that IO::Handle.new doesn't open | 13:45 | |||||||||||||||||||||||||||||||||||||
what is the use of creating an IO::Handle object if you're not going to open a file with it ? | 13:46 | ||||||||||||||||||||||||||||||||||||||
Zoffix | yeah | 13:47 | |||||||||||||||||||||||||||||||||||||
lizmat | if this is about delaying opening a file, putting a more generic solution such as Object::Trampoline in core, would make much more sense | 13:49 | |||||||||||||||||||||||||||||||||||||
13:49
brrt left
|
|||||||||||||||||||||||||||||||||||||||
samcv | Zoffix: i believe strict is speced at least for some things | 13:51 | |||||||||||||||||||||||||||||||||||||
or maybe i thought wrong | |||||||||||||||||||||||||||||||||||||||
Zoffix | samcv: yeah, for .encode/.decode it is | 13:52 | |||||||||||||||||||||||||||||||||||||
oh wait, that was :replacement | |||||||||||||||||||||||||||||||||||||||
samcv | anyway i wanted strict to be in roast. it should be specced anyway | ||||||||||||||||||||||||||||||||||||||
Zoffix | Don't see any encoding-related matches for `strict` | 13:53 | |||||||||||||||||||||||||||||||||||||
samcv | and atm it only works for windows-1251 and windows-1252. and most other encodings do strict by default. though latin-1 may be unstrict by default | ||||||||||||||||||||||||||||||||||||||
essentially the reasoning is that our encode/decoder would let invalid but ascii codepoints through windows-1252 | |||||||||||||||||||||||||||||||||||||||
and if you tried to open them in most things it'd say the document was corrupted. so strict will enforce only valid codepoints into that encoding | 13:54 | ||||||||||||||||||||||||||||||||||||||
Zoffix | R#448 | 13:55 | |||||||||||||||||||||||||||||||||||||
synopsebot | R#448 [closed]: github.com/rakudo/rakudo/pull/448 Prevent calling .clone with new attributes affect the original | ||||||||||||||||||||||||||||||||||||||
samcv | m: for ^255 { .chr.encode('windows-1252', :strict) } | ||||||||||||||||||||||||||||||||||||||
camelia | Error encoding Windows-1252 string: could not encode codepoint 128 in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
Zoffix | I mean | ||||||||||||||||||||||||||||||||||||||
S#448 | |||||||||||||||||||||||||||||||||||||||
synopsebot | S#448 [open]: github.com/perl6/roast/issues/448 [need to write tests] :$strict option for encoding/decoding related operations isn't specced | ||||||||||||||||||||||||||||||||||||||
samcv | m: for ^255 { .chr.encode('latin1') } | 13:56 | |||||||||||||||||||||||||||||||||||||
camelia | ( no output ) | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: zoffixznet self-unassigned LTA IO::Handle.encoding can have a value, but no valid decoder is setup github.com/rakudo/rakudo/issues/2039 5a9168e788 | (Elizabeth Mattijsen)++ | 5 files This reverts commit f830bf344ecafb10f7c8d769d390e31b3fba2de9. This actually almost doubles the time for List.sum. Not sure what is going on here, but it looks like List.sum gets OSR'd in the "method" case, but doesn't even get JITted in the multi case. Weird! |
13:58 | |||||||||||||||||||||||||||||||||||||
samcv | Zoffix: well ok it seems latin1 on ruby will let you put in lower control characters but not 129.chr though lower controls aren't specced. which seems fine enough. lower controls aren't ambiguous at all | 14:01 | |||||||||||||||||||||||||||||||||||||
and we should probably do something like that for latin1 | 14:02 | ||||||||||||||||||||||||||||||||||||||
Geth | 6.d-prep: 133fcbb0fb | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/FEATURES.md Add TODO: Remove all proptests for IO::Handle.new's attribute-setting |
14:05 | |||||||||||||||||||||||||||||||||||||
14:32
brrt joined
14:41
Zoffix left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 88e913b62e | (Elizabeth Mattijsen)++ | src/core/native_array.pm6 Make native array.sum faster - 1.2x as fast by default by not using Any::sum anymore - 35x as fast with specifying the :wrap named variable The latter will do *all* calculations in native ints: should the sum of the native array exceed the size of the "int" type, then it will silently wrap. This may or may not be what you want, hence the optional named variable. |
14:51 | |||||||||||||||||||||||||||||||||||||
rakudo: bduggan++ created pull request #2051: Improve the error message for slicing a shaped array |
15:10 | ||||||||||||||||||||||||||||||||||||||
15:13
robertle left
|
|||||||||||||||||||||||||||||||||||||||
Geth | roast: c313c0a238 | (Elizabeth Mattijsen)++ | S09-typed-arrays/native-int.t Add tests for my int @a; @a.sum(:wrap) |
15:20 | |||||||||||||||||||||||||||||||||||||
nqp: 2b12cad8f5 | (Jonathan Worthington)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp Map hllboxtype_* on MoarVM backend |
15:28 | ||||||||||||||||||||||||||||||||||||||
15:31
lizmat left
15:33
lizmat joined
15:38
robertle joined
15:48
[TuxCM] left
|
|||||||||||||||||||||||||||||||||||||||
Geth | nqp: 668be5c2d8 | (Jonathan Worthington)++ | 2 files Provide hllboxtype_* ops on JVM backend |
15:54 | |||||||||||||||||||||||||||||||||||||
16:14
tyil[m] joined
16:23
Ven` left
17:15
[TuxCM] joined
17:44
j3nnn1 left
18:28
brrt left
18:49
pmurias left
18:53
Ven`` joined
19:03
stephane_ left
19:09
dogbert17 left
19:17
lizmat left
19:24
lizmat joined
19:30
cognominal joined
20:09
cognominal left
20:16
cognominal joined
20:40
MasterDuke joined
21:41
MasterDuke left
21:44
MasterDuke joined
21:48
Ven`` left
21:58
Ven`` joined
21:59
Ven`` left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 5682ee1f12 | (Elizabeth Mattijsen)++ | src/core/native_array.pm6 Make my int @a = ^5000 about 1.7x as fast By not binding values to specific indices, but just pushing values onto the native array. |
22:03 | |||||||||||||||||||||||||||||||||||||
lizmat | timotimo: ^^^ | ||||||||||||||||||||||||||||||||||||||
timotimo | oh, neat | 22:05 | |||||||||||||||||||||||||||||||||||||
lizmat | yeah, apparently push is a lot faster than bindpos_i() and keeping an index | 22:06 | |||||||||||||||||||||||||||||||||||||
timotimo | the only thing i could think of to make this even faster is unroll the loop a tiny bit | ||||||||||||||||||||||||||||||||||||||
like, do 5 pushes at a time before checking $val against $max again | 22:07 | ||||||||||||||||||||||||||||||||||||||
unlikely to have a good impact | |||||||||||||||||||||||||||||||||||||||
actually, it could be noticable | 22:08 | ||||||||||||||||||||||||||||||||||||||
lizmat | that would require extra logic that would grow the code in size | 22:09 | |||||||||||||||||||||||||||||||||||||
I just realized there are some other cases that could benefit from this change | 22:10 | ||||||||||||||||||||||||||||||||||||||
but am too tired to do that now | |||||||||||||||||||||||||||||||||||||||
so tomorrow& | |||||||||||||||||||||||||||||||||||||||
timotimo | the code grows, but more importantly, the section of code between gotos grows | 22:11 | |||||||||||||||||||||||||||||||||||||
it'd be cool if we could throw out the boundary check inside push because we already have our own check, but that's probably really tricky | 22:12 | ||||||||||||||||||||||||||||||||||||||
lizmat | timotimo: but that's the thing: the array starts from 0 elements: there is no max value known to the array | 22:15 | |||||||||||||||||||||||||||||||||||||
now, if we would have something like a push that and an internal index, that would allow you to push until the end of the array is reached | 22:16 | ||||||||||||||||||||||||||||||||||||||
that might work | |||||||||||||||||||||||||||||||||||||||
timotimo | yeah, $max is the max value, not the number of times we push | 22:17 | |||||||||||||||||||||||||||||||||||||
that's what makes it extra tricky | |||||||||||||||||||||||||||||||||||||||
lizmat | so, basically something like nqp::setelems(@a,10000); nqp::set_index(@a,0), nqp::while( nqp::push_i(@a,++$val), nqp::null) | 22:18 | |||||||||||||||||||||||||||||||||||||
anyways, bedtime :-) | |||||||||||||||||||||||||||||||||||||||
& | |||||||||||||||||||||||||||||||||||||||
timotimo | we don't even need to set_index, i don't think | 22:19 | |||||||||||||||||||||||||||||||||||||
just make the hypothetical push instruction return false when the internal storage capacity (which we set with setelemspos) is reached | |||||||||||||||||||||||||||||||||||||||
Geth | nqp/new-runner-enable-execname: 6997926ffc | 陈梓立++ (committed using GitHub Web editor) | 0 files Update install-moar-runner.pl |
22:21 | |||||||||||||||||||||||||||||||||||||
timotimo | oh what the heck, we have getattrs_o there even though the string is const_s right before it | 22:23 | |||||||||||||||||||||||||||||||||||||
i wonder what blew that opt | |||||||||||||||||||||||||||||||||||||||
OK, we don't know anything about the thing we're getting attributes from, so the opt just nopes right outta there without even doing the "const string known" opt | 22:25 | ||||||||||||||||||||||||||||||||||||||
doesn't matter for the hot loop portion anyway | |||||||||||||||||||||||||||||||||||||||
the code is rather tight. only thing that could be better is that it's using lexicals for $val and $max. not sure why that isn't lowered to be locals instead | 22:27 | ||||||||||||||||||||||||||||||||||||||
Geth | nqp: 2e053da6fb | 陈梓立++ (committed using GitHub Web editor) | 2 files Pass --execname to nqp thus nqp::execname() works (#479) Only for MoarVM backend, now `nqp::execname()` give out the execution path as defined. |
22:55 | |||||||||||||||||||||||||||||||||||||
23:04
Kaiepi left
23:05
travis-ci joined
|
|||||||||||||||||||||||||||||||||||||||
travis-ci | NQP build errored. 陈梓立 'Pass --execname to nqp thus nqp::execname() works (#479) | 23:05 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/perl6/nqp/builds/402890259 github.com/perl6/nqp/compare/668be...053da6fbf7 | |||||||||||||||||||||||||||||||||||||||
23:05
travis-ci left,
Kaiepi joined
|