Geth | roast: 6cb3d01d2a | (Samantha McVey)++ | S32-num/base.t Make failure types for .base more specific and test base(1) has right X:: Make sure .base(1) throws X::OutOfRange RT 130753 Gives divide by zero error when trying to .base a fractional num of base 1 |
00:59 | |
samcv | well at least my experimenting with base(1) found a problem in 1.1.base(1), so added a test for that | ||
timotimo | did you hear timtoady would like base(1) to be thrown out of core and put into a module instead? | 01:04 | |
samcv | yes | 01:09 | |
timotimo | OK | ||
samcv | i have fixed it in roast, now reverting in rakudo. then gonna do both commits at the same time | ||
timotimo | understood | 01:10 | |
we fought bravely | |||
but in the end it was not meant to be | |||
samcv | ;) | 01:21 | |
can i lobby to add negative bases now? :P | 01:22 | ||
for maximum evil | |||
timotimo | or real bases | 01:23 | |
geekosaur | there's also nonlinear bases, e.g. fibonacci sequence | ||
samcv | m: say (-2)**($++) for ^3; | ||
camelia | rakudo-moar 1615c8: OUTPUT«1-24» | ||
samcv | m: say (-2)**($++) for ^5; | ||
camelia | rakudo-moar 1615c8: OUTPUT«1-24-816» | ||
timotimo | something something continued fractions something | ||
samcv | negative bases are one way to do binary without any sign place | ||
since you can do positive and negative | 01:24 | ||
without one | |||
and you can have arbitrary width of variables easily as well | 01:25 | ||
actually pretty neat | 01:26 | ||
timotimo, what should i name a module that can convert weird bases | 01:29 | ||
well all bases. because all bases are equally important! | 01:30 | ||
timotimo | Accusations::Baseless | 01:33 | |
samcv | lol | ||
geekosaur | AllYourBase | 01:34 | |
Count::Basie | 01:35 | ||
Geth | rakudo/nom: f569c47390 | (Samantha McVey)++ | 3 files Revert base 1 support in .parse-base and .base Revert "Add base 1 functionality to .base and .parse-base" 295b0bff8 Revert "Fix .base to allow string arguments for base 1" a21d2f9e1 |
01:40 | |
roast: 5c1e69d6fc | (Samantha McVey)++ | 2 files Revert base-1 tests base-1 experiment has been removed in Rakudo. The test improvements I made have still been retained, but the base-1 tests removed (aside from the exception tests). |
01:43 | ||
samcv | there we go. no base 1 | 01:44 | |
timotimo | i've been procrastinating finally writing that code to do the codepoint-to-name C code :\ | ||
and now it's already time to go to bed again | |||
samcv | heh | ||
timotimo | but at least i wrote a readme for SDL2::Raw | ||
that's something, isn't it ... | |||
maybe tomorrow i'll write some tests | |||
samcv | oh timotimo one thing is that when it makes the hash table, it has to malloc the strings | ||
whereas before it creates a hash and just puts the pointer there. but i'm not sure what happens after the hash is created if it still points to the pointer of the string | 01:45 | ||
but at least lower mem usage before they get cp by name | |||
timotimo | oh, that's A Thing | ||
samcv | so i think overall good | ||
timotimo | it'll probably be fine to have the hash table entry "own" the buffer we malloced for the pointer | 01:46 | |
samcv | well do we keep the strings? | ||
every string processed does it stay in memory? | |||
i mean the gains are good enough i think we should still use this approach | |||
timotimo | hm, i think the hash entry still has to contain the exact key, not just the hash | ||
and our string is the key, right? | 01:47 | ||
samcv | it speaks more for the hash table being inefficient possibly than the data storage | ||
yeah | |||
timotimo | in theory we can build a trie over the whole namespace | ||
samcv | well we store a struct in the hash | ||
and that struct has the name in it | |||
timotimo | that can also be built statically into the .c file | ||
if we want | |||
samcv | the hash? | 01:48 | |
timotimo | we're talking about a name-to-cp hash, right? | ||
samcv | yes | ||
timotimo | right | ||
not the hash, a trie instead | |||
samcv | but there's also like <control-0000> | ||
timotimo | have you seen a trie yet? | ||
samcv | that get added to it as well | ||
it's a search tree right | |||
timotimo | yeah | ||
the magic trick is that each node-to-child connection has a whole string of chars instead of just a single character | 01:49 | ||
samcv | i mean can't we just convert it to the base-40 name | 01:50 | |
idk. that may be pointless if we have a string hash | |||
are you saying we ditch the hash and use a trie | 01:51 | ||
timotimo | if we have the base40 name, our trie can be compressed a little bit, for sure | ||
it's a thought, we can still use a hash | |||
the trie would have the benefit that we can just have it statically in the .c file and don't have to run any code during setup | |||
though i'm sure setting up the hash only takes a tiny fraction of startup anyway | |||
so it's a question whether we want to invest time into doing it differently | 01:52 | ||
samcv | yeah | 01:54 | |
we can figure that out later i guess | |||
once we get the ability to pull a specific name out | 01:55 | ||
timotimo | that's my fault :S | ||
i mean, i should have made that work already ... days ago ... | 01:56 | ||
IOninja | samcv++ # finding base bugs | 01:57 | |
samcv | all my stupid base 1 code is now here github.com/samcv/perl6-number-base | 01:58 | |
maybe when i'm bored i'll add negative bases | |||
could we add negative bases in rakudo or is that too fringe :P | |||
if they allow decimals | |||
base 2-36 | |||
samcv curious about base -1 | |||
timotimo | cmph.sourceforge.net/ - might want to have a quick look at this, or at this: www.gnu.org/software/gperf/ | 01:59 | |
samcv | m: say (-1)**$_ for ^5 | ||
camelia | rakudo-moar f569c4: OUTPUT«1-11-11» | ||
samcv | that would be interesting :P | ||
bookmarked cmph | |||
have not used gperf tooo much but once or twice i think | |||
timotimo | probably easier to use one of those two rather than building a trie implementaiton ourselves :) | 02:00 | |
the person who linked to that says in that article "In addition, it compresses the G array so that it can still be used without decompressing it." | |||
this "can be used without decompressing it" thing might be interesting as well | |||
i haven't looked at what this G array is, though | |||
samcv | well timotimo we don't want to compile in <control-0000> or whatever | 02:01 | |
IOninja | Actually, it seems a bug in .log even | ||
m: say 5.log(1) | |||
camelia | rakudo-moar f569c4: OUTPUT«Attempt to divide 1.6094379124341 by zero using / in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
samcv | though we can check if the 1st character is a '<' and then not look up in the table | ||
IOninja | Oh, not bug | ||
log(1) == 0 | |||
just LTA error | 02:02 | ||
timotimo | why not? there's not terribly much of these, right? | ||
and even then, we can just check for a CP in the range (there's only one or two ranges for these, right?) and let the hash table handle the rest | |||
BBIAB | 02:04 | ||
samcv | IOninja, you can take the log 1 of something. it's just usually infinity | ||
unless IEEE says differently | |||
IOninja | You mean log_1(x)? | 02:05 | |
samcv | yes | ||
sorry | |||
m: say log(1) | |||
camelia | rakudo-moar f569c4: OUTPUT«0» | ||
samcv | m: say log(0) | 02:06 | |
camelia | rakudo-moar f569c4: OUTPUT«-Inf» | ||
samcv | m: say log_1(0) | ||
camelia | rakudo-moar f569c4: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Undeclared routine: log_1 used at line 1. Did you mean 'log10'?» | ||
samcv | m: say log(1, 1) | ||
camelia | rakudo-moar f569c4: OUTPUT«Attempt to divide by zero using / in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
samcv | it should return Inf | ||
IOninja | m: say log (my num $ =1e0), (my num $ = 1e0) | 02:07 | |
camelia | rakudo-moar f569c4: OUTPUT«Attempt to divide by zero using / in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
samcv | also i think log1(1) = 1 | 02:08 | |
since 1^1 = 1 | |||
well wolfram says complicated infinity, but it can't really exist because you can't get anything more than 1 by doing 1**X | 02:09 | ||
though 1**0 is also 0 so is log1(1) 0 or 1 :P | |||
the number one makes everything more complicated :\ | 02:10 | ||
that identity property | |||
also log-1 has infinite answers for -1 and 1 | 02:11 | ||
since it alternates | |||
IOninja | m: say .log for NaN, Inf, -Inf, 0 | 02:13 | |
camelia | rakudo-moar f569c4: OUTPUT«NaNInfNaN-Inf» | ||
IOninja | m: say NaN/log(10) | 02:15 | |
camelia | rakudo-moar f569c4: OUTPUT«NaN» | ||
IOninja | ah right | ||
Well, the Inf case is wrong | |||
weird 'cause I thought I done all the Numeric | 02:16 | ||
don't see anything about log_1(n) in IEEE, but it falls out of log(n)/log(1) anyway, so that's prolly why | 02:17 | ||
samcv | yeah log_1 has two answers so it's really weird | 02:18 | |
IOninja | log_1 has infinite answers? | ||
samcv | uhm | ||
no log-1 does | 02:19 | ||
infinite answers for -1 and 1 | |||
-1**0 == 1, -1**1 == -1, -1**2 == 1 … | |||
IOninja | m: say WHAT log(e) | 02:20 | |
camelia | rakudo-moar f569c4: OUTPUT«(Num)» | ||
IOninja | And the bug will actually auto-resolve in 6.d when Num division follows IEEE \o/ | ||
timotimo | neat. | ||
samcv | so log1 of any number except 1, the limit approached infinity as logx goes to 1 | 02:21 | |
m: say log(2, 1.0000001) | |||
camelia | rakudo-moar f569c4: OUTPUT«6931472.14812598» | ||
samcv | m: say log(2, 1.000000000000001) | ||
camelia | rakudo-moar f569c4: OUTPUT«624331476816536» | ||
samcv | m: say log(-1, 1.000000000000001) | ||
camelia | rakudo-moar f569c4: OUTPUT«NaN» | ||
samcv | well i've added to-base for base -1 in my Base module :P | 02:25 | |
worst base ever! | |||
can only represent 0 and 1 | |||
timotimo | what about -1? | 02:27 | |
samcv | nope | 02:30 | |
-1**0 = 1 | |||
then -1**1 == -1 | |||
1 - 1 = 0, and then it just flips between 0 and 1. so implemented parsing of base -1 now :P | |||
Geth | rakudo/nom: 301bcf9398 | (Zoffix Znet)++ | src/core/Rational.pm Fix LTA error in Rat.base(1) Move check for base earlier, so we don't explode when we try to take .log(1) of it. When (if) Num/x will follow IEEE rules, we can toss this check, since there won't be any splosions with the log. Fixes RT#130753: rt.perl.org/Ticket/Display.html?id=130753 |
02:39 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130753 | ||
roast: e2039dbb64 | (Zoffix Znet)++ | S32-num/base.t Unfudge Rat.base out of range base test RT#130753: rt.perl.org/Ticket/Display.html?id=130753 Rakudo fix: github.com/rakudo/rakudo/commit/301bcf9398 |
02:46 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130753 | ||
IOninja realizes he has no reasoning behind choosing to fix Rat.base(1) error now but choosing to fix log(1) in 6.d :S | 02:55 | ||
One is just an error and was throwing already; the other affects whether throwage happens or not? | |||
Good enough for me. | |||
:) | |||
IOninja goes to bed | |||
Geth | nqp/braids: 19 commits pushed by (Pawel Murias)++, (Zoffix Znet)++, TimToady++, (Samantha McVey)++, MasterDuke17++, timo++, (Jonathan Worthington)++ review: github.com/perl6/nqp/compare/e40c5...11046d8d34 |
02:57 | |
TimToady | otherwise known as heuristic branch merge :) | 03:01 | |
Geth | rakudo/braids: 66 commits pushed by (Zoffix Znet)++, (Elizabeth Mattijsen)++, (Christian Walde)++, TimToady++, (Samantha McVey)++, (Daniel Green)++, (Aleks-Daniel Jakimenko-Aleksejev)++, (Jonathan Stowe)++, (Jonathan Worthington)++ review: github.com/rakudo/rakudo/compare/f...6573a23b26 |
03:02 | |
roast: 1aa886a8ac | TimToady++ | S28-named-variables/slangs.t the Quasi and Trans slangs do not, in fact, exist These tests were passing by accident. |
04:07 | ||
roast: 608848d851 | TimToady++ | S32-num/base.t fix test count in S32-num/base.t |
05:47 | ||
llfourn | .tell nine I'm not 100%. But I've been looking at some of your commits from around lexical use time. It looks like you had to work around something similar with 'use': github.com/rakudo/rakudo/commit/85...af607897c. That sounds to me like exactly what is happening with require atm, except in INDIRECT_NAME_LOOKUP in operators.pm rahter than .find_symbol in World. | 05:51 | |
yoleaux2 | llfourn: I'll pass your message to nine. | ||
samcv | so where does URI::Encode come from? I need to do some fixes to this module/changes | 06:25 | |
so it can support utf8-c8 | |||
i guess it's this? github.com/dnmfarrell/URI-Encode | |||
idk there's a couple of them | 06:26 | ||
err sorry meant to look for Escape | |||
i guess this is it github.com/moritz/perl6-all-module.../Escape.pm | 06:27 | ||
there's no module on modules.perl6.org | 06:29 | ||
ok this is now my new best guess :P github.com/perl6-community-modules/uri | 06:31 | ||
ok cool, I got it all fixed for utf8-c8 :) so we can URI-decode strings that are not in NFC form | 07:04 | ||
github.com/perl6-community-modules/uri/pull/32 | |||
brrt | good * samcv | 07:08 | |
samcv | o/ | ||
wasn't sure i'd be able to solve that guys problem | |||
how are you | 07:09 | ||
brrt | i'm not sure what problem you're talking about | ||
sleepy still :-) | |||
just awake | |||
what about yourself | |||
samcv | oh, problem this guy had converting a URI % encoded to a string | ||
to access the file on the filesystem. but perl 6 converts everything to NFC so it totally broke it | 07:10 | ||
after finally tracking the problem down to the URI module, i was able to code it to be able to do utf-c8 using buffers and such | |||
and leave your URI's unmangled | |||
brrt | i see… | 07:11 | |
so let me get this straight | |||
a): you get a filename (or URI) in UTF-8 | |||
b): perl6 is friendly and converts it to graphemes | 07:12 | ||
samcv | yep then it's changed and people be confused why it is broken on perl 6 :P | ||
brrt | c): when given to the file system, perl6 tries to be friendly and - i suppose - convert it back to some byte-representation (NFC or so) | 07:13 | |
d): the file system recognizes that set of bytes as different and can't find the file | |||
samcv | "My problem is I can't read the URIs from the database and transform them back to the file names on disk using perl6. I'm probably doing it wrong. The the data on the disk may not be in perl6's ideal format, but that's the data. Everything else including perl5 could handle it." | ||
brrt | right | 07:14 | |
samcv | so they even get a uri file:///space/pub/music/mp3/Musopen%20DVD/Brahms%20-%20Symphony%20No%201%20in%20C%20Major/Symphony%20No.%201%20in%20C%20Minor,%20Op.%2068%20-%20IV.%20Adagio%20-%20Piu%CC%80%20andante%20-%20Allegro%20non%20troppo,%20ma%20con%20brio.mp3 | ||
then convert to string and then oh no! | |||
brrt | hmm, i see | ||
samcv | so i made a PR which uses Buf's for the whole URI decode | ||
brrt | because they don't get it as a bag of bytes | ||
samcv | well if you do :enc it will do the Buf way | 07:15 | |
brrt | somehow, relying on the Str encoding name doesn't sit raises a flag..... | ||
eh | |||
doesn't sit right and raises a flag | |||
but if it works, then it works | |||
samcv | well more complicated buf way, the way it did before, it would use Buf.new to decode utf-8 in the URI | ||
but then append it to the rest of the URI | |||
and then it gets normalized :) | 07:16 | ||
even if you decode with utf8-c8 | |||
was making me somewhat annoyed for a bit | |||
brrt | i see | 07:17 | |
yeah, that sucks | |||
samcv | brrt, github.com/powturbo/TurboPFor/blob.../README.md | 07:18 | |
brrt | what is that | ||
samcv | this sounds really cool and has a bunch of different libraries but i'm not sure how to actually use it | ||
integer compression like of huge arrays | 07:19 | ||
brrt | aha | ||
that seems pretty interesting | |||
samcv | could be really awesome for unicode database | ||
but. idk how to use it :\ | |||
oh wait nvm i fixed it heh | |||
brrt | (did you know, many people in fact do not, that the 'turbo' does not refer to anything relating to 'speed' but to a 'turbine') | ||
samcv | had to do a recursive checkout of the repo | ||
nice | 07:20 | ||
brrt | or maybe they do know but act as if they don't | ||
samcv | Scalar "Variable Byte" faster than ANY other (incl. SIMD) implementation | ||
it sounds really awesome | |||
i want to compress all of my integers! and i have a lot of them! | |||
mostly just the field of indexes per cp | |||
brrt | anyway, have to take the next train, bbiab | 07:21 | |
samcv | bye | ||
Geth | nqp/braids: ce7d220fca | TimToady++ | src/QRegex/Cursor.nqp cleanup of braid to make %*LANG redundant We can now warn if we detect that %*LANG has been changed when we didn't expect it, and compensate for the time being. |
07:44 | |
rakudo/braids: 9f8aaf581b | TimToady++ | 2 files finish making %*LANG epiphenomenal %*LANG is now used only as a redundant check on the current language braid of the cursor. For 6.d it will be removed entirely. |
07:57 | ||
samcv | m: say %*LANG | 08:01 | |
camelia | rakudo-moar 301bcf: OUTPUT«Dynamic variable %*LANG not found in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
TimToady | m: BEGIN say %*LANG | 08:02 | |
camelia | rakudo-moar 301bcf: OUTPUT«5===SORRY!5=== Error while compiling <tmp>An exception occurred while evaluating a BEGINat <tmp>:1Exception details: No such method 'WHICH' for invocant of type 'Perl6::Grammar' in code at <tmp> line 1» | ||
TimToady | m: BEGIN say %*LANG.keys | ||
camelia | rakudo-moar 301bcf: OUTPUT«5===SORRY!5=== Error while compiling <tmp>An exception occurred while evaluating a BEGINat <tmp>:1Exception details: 5===SORRY!5=== Error while compiling  Cannot find method 'keys': no method cache and no .^find_method at :» | ||
TimToady | m: use MONKEY; BEGIN say nqp::keys(%*LANG) | ||
camelia | rakudo-moar 301bcf: OUTPUT«5===SORRY!5=== Error while compiling <tmp>An exception occurred while evaluating a BEGINat <tmp>:1Exception details: 5===SORRY!5=== Error while compiling  No registered operation handler for 'keys' at :» | ||
TimToady | well, it's there, anyway | 08:03 | |
RabidGravy | doesn't it half to be in an IMPORT? | 08:04 | |
EXPORT rather | |||
TimToady | that will be the only remaining spot where you can set %*LANG to change the current language, but you'll get a warning | 08:05 | |
samcv | m: %*LANG = {} | 08:06 | |
camelia | rakudo-moar 301bcf: OUTPUT«Dynamic variable %*LANG not found in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
samcv | m: my %*LANG = {} | ||
camelia | ( no output ) | ||
samcv | m: my @array = Empty; | ||
camelia | ( no output ) | ||
samcv | what's Empty but for a Hash? | ||
RabidGravy | Empty | ||
TimToady | eventually all language mutation will be via the current cursor's braid object | ||
m: use MONKEY; BEGIN say nqp::existskey(%*LANG,'MAIN') | 08:07 | ||
camelia | rakudo-moar 301bcf: OUTPUT«1» | ||
samcv | Rapunzel, Rapunzel, let down your braids | ||
m: use MONKEY; BEGIN say nqp::atkey(%*LANG, 'MAIN') | 08:08 | ||
camelia | rakudo-moar 301bcf: OUTPUT«5===SORRY!5=== Error while compiling <tmp>An exception occurred while evaluating a BEGINat <tmp>:1Exception details: No such method 'gist' for invocant of type 'Perl6::Grammar' in code at <tmp> line 1» | ||
samcv | m: use MONKEY; BEGIN say nqp::atkey(%*LANG, 'MAIN').keys | ||
camelia | rakudo-moar 301bcf: OUTPUT«5===SORRY!5=== Error while compiling <tmp>An exception occurred while evaluating a BEGINat <tmp>:1Exception details: No such method 'keys' for invocant of type 'Perl6::Grammar' in code at <tmp> line 1» | ||
samcv | m: use MONKEY; BEGIN say nqp::atkey(%*LANG, 'MAIN').^methods | ||
camelia | rakudo-moar 301bcf: OUTPUT«5===SORRY!5=== Error while compiling <tmp>An exception occurred while evaluating a BEGINat <tmp>:1Exception details: No such method 'gist' for invocant of type 'NQPRoutine' in code at <tmp> line 1» | ||
samcv | m: my %hash = Empty; | ||
camelia | ( no output ) | ||
samcv | m: say Empty.WHAT | 08:09 | |
camelia | rakudo-moar 301bcf: OUTPUT«(Slip)» | ||
samcv | m: say ?Empty | ||
camelia | rakudo-moar 301bcf: OUTPUT«False» | ||
TimToady | m: say Empty.defined | ||
camelia | rakudo-moar 301bcf: OUTPUT«False» | ||
TimToady | say slip().defined | ||
samcv | m: my @array = 'test'; @array.pop; say @array eqv Empty | ||
TimToady | m: say slip().defined | ||
camelia | rakudo-moar 301bcf: OUTPUT«False» | ||
TimToady | hmm, pretty sure slip() used to be defined, but whatever | 08:10 | |
m: say slip().WHAT | |||
camelia | rakudo-moar 301bcf: OUTPUT«(Slip)» | ||
TimToady | m: say slip(1,2,3).defined | ||
camelia | rakudo-moar 301bcf: OUTPUT«True» | ||
TimToady | m: say slip(Empty).defined | ||
camelia | rakudo-moar 301bcf: OUTPUT«False» | ||
TimToady | huh | ||
IOninja | bisect: m: say slip().defined | 11:01 | |
bisectable6 | IOninja, On both starting points (old=2015.12 new=301bcf9) the exit code is 0 and the output is identical as well | ||
IOninja, Output on both points: False | |||
IOninja | s: slip(), 'defined', \() | 11:07 | |
SourceBaby | IOninja, Sauce is at github.com/rakudo/rakudo/blob/301b...Slip.pm#L5 | 11:08 | |
IOninja | TimToady: hehe :) you made it use .so on Aug 29, 2015: github.com/rakudo/rakudo/commit/74...62793bace0 | ||
Geth | nqp: f42983239f | (Zoffix Znet)++ | docs/continuations.pod Remove no-longer-correct note... ...about continuations being experimental JVM-only feature irclog.perlgeek.de/perl6/2017-02-10#i_14079194 |
13:32 | |
timotimo | maybe that note was from when jvm was the only non-parrot backend we had? | 13:38 | |
jnthn | Perhaps so | 13:39 | |
timotimo | but ... parrot really didn't have continuations? | ||
i suppose it's difficult to implement, what with inferior runloops and such | |||
dogbert17 | o/ | 13:43 | |
jnthn: did I get the is_full_collection changes right? gist.github.com/dogbert17/8e0061b9...d6f663a5ed | 13:55 | ||
jnthn | timotimo: It had them, but yeah, ran into problems with the continuation barriers due to inferior runloops. That's one mistake we didn't repeat in MoarVM :) | 13:57 | |
timotimo | yeah, it's still making life difficult with NativeCall | ||
btw, we can do with the stack pointer whatever we want, so in *theory* we could just jump with the stack pointer into a mmapped fakestack region before calling into C code | 13:58 | ||
like, one big problem is that pointers inside the stack could be taken by the C code | 13:59 | ||
jnthn | dogbert17: Looks reasonable to me | ||
timotimo | and if we go back over the stack with a continuation, we'd have to do some contortions to make the addresses correct again | ||
but with a fakestack region it'd be sort of fine but only a little bit | |||
and also very nasty and difficult | |||
dogbert17 | jnthn: will PR then and yes it passes spectest :) | 14:00 | |
jnthn | Nice | 14:11 | |
dogbert17 | question wrt to my commit comment which is under construction. Did the overflow affect 64-bit systems as well or only 32 bit ones? | 14:19 | |
jnthn | No | 14:20 | |
timotimo | int is 32bit on both | ||
and size_t is int, iiuc | |||
jnthn | timotimo: yes, but this is about size_t :) | ||
timotimo | well, uint | ||
jnthn | No, size_t will be 64 bits on a 64-bit platform | ||
timotimo | oh! | ||
dogbert17 | thx | ||
jnthn | Thus why we got away wiht it | ||
*with | |||
dogbert17 | github.com/MoarVM/MoarVM/pull/531 | 14:33 | |
Geth | rakudo/nom: bcd902a43e | (Zoffix Znet)++ | src/core/Rakudo/Iterator.pm Fix R::I::Batch calling .pull-one one-too-many times Fixes RT#130725: rt.perl.org/Ticket/Display.html?id=130725 .rotor crash in the ticket is due to it using RI::Batch that ends up calling .pull-one one-too-many times and calling .pull-one after we got IterationEnd is undefined behaviour[^1]. ... (12 more lines) |
14:44 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130725 | ||
roast: 52668af6c5 | (Zoffix Znet)++ | S32-list/rotor.t Test we can partial rotor a gather/take Seq RT#130725: rt.perl.org/Ticket/Display.html?id=130725 Rakudo fix: github.com/rakudo/rakudo/commit/bcd902a43e |
14:45 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130725 | ||
rakudo/nom: ee3173a0c9 | (Zoffix Znet)++ | src/core/Rakudo/Iterator.pm Add comment clarifying assignment in conditional So no one thinks it's meant to be `==` |
14:49 | ||
jnthn | IOninja++ # thanks for fixing! | 15:11 | |
timotimo | what workloads was this destroying? | 15:12 | |
jnthn | Managed to bust my $dayjob code | 15:15 | |
Though once I bisected the patch that did it, adding .list was enough to make it work | 15:16 | ||
timotimo | ah, because .list honors the iterator protocol | ||
jnthn | Well, over-honors apparently :) | ||
Or something that hid the problem. :) | 15:17 | ||
timotimo | i mean when consuming the iterator | ||
jnthn | Yeah | ||
Oh, right | |||
And then abusing List itself was harmless | |||
timotimo | yup | 15:19 | |
that was my thought | |||
jnthn | Quite good going that this is the only regression I've been bitten by in that codebase in the space of the 3ish months I've had it though. | ||
timotimo | it's a very good thing this was caught regardless of the workaround | ||
jnthn | Given it's some thousands of lines and then depends on presumably some more thousands in ecosystem modules :) | 15:20 | |
Geth | rakudo/nom: 02815c9a06 | (Zoffix Znet)++ | src/core/IO/Handle.pm Undo pessimization of IO::Handle.lines The fix[^1] for .lines.rotor(:partial) assumed .pull-one must be callable even after IterationEnd was issued, but that behaviour is not defined[^2] The actual bug was in RI::Batch and is now fixed[^3], making the original fix that introduced ~5% peformance loss not needed. [1] github.com/rakudo/rakudo/commit/ed...e0740b5e19 [2] irclog.perlgeek.de/perl6/2017-02-10#i_14079314 github.com/rakudo/rakudo/commit/bcd902a43e |
16:43 | |
roast: fd15c2e634 | (Zoffix Znet)++ | S16-io/lines.t Remove wrong .pull-one tests Behaviour of .pull-one after IterationEnd is not defined[^1], so don't test it. The real'cause of the original bug these tests test has been fixed[^2] and this commit rewrites the previous test to test that bug without involving .pull-one calls. [1] irclog.perlgeek.de/perl6/2017-02-10#i_14079314 [2] github.com/rakudo/rakudo/commit/bcd902a43e |
16:46 | ||
IOninja | .ask lizmat maybe I'm missremembering, but I think I saw a commit by you go in, ensuring .pull-one can be called even after IterationEnd was returned. Turns out such behaviour is undefined and that commit can be removed, unless I'm imagining things (don't see anything relevant in gitlog). | 16:50 | |
yoleaux2 | IOninja: I'll pass your message to lizmat. | ||
IOninja | ❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓ | 19:14 | |
I found a bad 6.c-errata test and wish to change it: github.com/perl6/roast/blob/6.c-er...list.t#L14 | |||
It tests that ().item.perl ends up as $(), but $() is a special thing that has to do with $/ or something. I have a fix for RT#127222, but this test is blocking me. | |||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127222 | ||
IOninja | Is it cool to change it to expect $( ) instead of $()? | ||
[Coke] timotimo TimToady jnthn ping ^ | 19:16 | ||
TimToady | that should work | 19:19 | |
IOninja | Sorry, is it OK to change the test? Or do you mean $() should work like ().item.perl? | 19:20 | |
s/.perl// | |||
TimToady | m: say $( ) | ||
camelia | rakudo-moar 02815c: OUTPUT«()» | ||
TimToady | m: say $() | ||
camelia | rakudo-moar 02815c: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1» | ||
TimToady | is fine to change the test, I think | 19:21 | |
IOninja | m: 'foo' ~~ /o+/; say $() | ||
camelia | rakudo-moar 02815c: OUTPUT«oo» | ||
TimToady | of course, if I was confused, how would I know? :) | ||
[Coke] | I am also confused and defer to TimToady. | 19:30 | |
RabidGravy | I'm permanently confused | ||
japhb | panfusion: Confusion spreading world wide | 19:34 | |
Geth | rakudo/nom: a148c70190 | (Zoffix Znet)++ | src/core/List.pm Fix List.perl of containerized empty lists Currently, it ends up giving `$()` but that's sugar for the $/.made ?? $/.made !! $/.Str thing. Fix by making List.perl stick a space between the parentheses for containerized empty lists. Fixes RT#127222: rt.perl.org/Ticket/Display.html?id=127222 |
||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127222 | ||
roast/6.c-errata: ca0ce9a5d7 | (Zoffix Znet)++ | S02-types/list.t Fix incorrect ().item.perl test The test expects `$()`, but that's the sugar for $/.made ?? $/.made !! $/.Str Change to expect `$( )` instead. Approval: irclog.perlgeek.de/perl6-dev/2017-...i_14080972 |
19:36 | ||
roast: fc2f46ea02 | (Zoffix Znet)++ | S02-types/list.t Fix incorrect ().item.perl test The test expects `$()`, but that's the sugar for $/.made ?? $/.made !! $/.Str Change to expect `$( )` instead. Approval: irclog.perlgeek.de/perl6-dev/2017...i_14080972 |
19:37 | ||
roast: dff2d90263 | (Zoffix Znet)++ | S02-types/list.t Add couple more tests for ().item .perl.EVAL roundtripping RT#127222: rt.perl.org/Ticket/Display.html?id=127222 Rakudo fix: github.com/rakudo/rakudo/commit/a148c70190 |
19:40 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127222 | ||
rakudo/nom: 6372417035 | (Zoffix Znet)++ | src/core/Rational.pm Interim fix for Rational.ceiling/.floor irclog.perlgeek.de/perl6/2017-02-10#i_14081234 Somehow it's possible to end up with a Rat is is <4/2>, and when we call .ceiling/.floor, we end up with an incorrect value. Temporarily fix by stuffing self.REDUCE-ME into these methods. Will hunt down how to produce a <4/2> Rat and try to locate which other place is missing the reduction that would (possibly) let us avoid it in .ceiling/.floor |
20:34 | ||
rakudo/precomp-singleprocess-resurrection: 4d9f538e6f | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationRepository.pm Fix precomp writing to wrong file ($io instead of $bc) |
21:19 | ||
rakudo/precomp-singleprocess-resurrection: 30ea39fffe | (Stefan Seifert)++ | src/core/CompUnit/RepositoryRegistry.pm Fix RepositoryRegistry looking in %*ENV instead of @*PRECOMP-WITH |
|||
travis-ci | Rakudo build failed. Zoffix Znet 'Fix List.perl of containerized empty lists | 22:57 | |
travis-ci.org/rakudo/rakudo/builds/200464813 github.com/rakudo/rakudo/compare/0...48c70190b8 | |||
buggable | [travis build above] ☠ Did not recognize some failures. Check results manually. | ||
IOninja | github failure | 23:00 | |
gfldex | jnthn: you must have taken quite a few quants out of Rakudo. Threading failes a lot less now. | 23:13 | |
jnthn | :-) | 23:18 | |
Yeah, it's pretty much what I've focused on for the last whlie :) | |||
*while | |||
gfldex | jnthn: the errors look different too and provide proper stacktraces | 23:22 | |
jnthn | Yeah, for .result or await or react it should be giving the stack trace of both the place it broke and the place you tried to obtain the result | 23:26 | |
Which hopefully makes things a good bit easier to figure out | 23:27 |