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␤-2␤4␤»
samcv m: say (-2)**($++) for ^5;
camelia rakudo-moar 1615c8: OUTPUT«1␤-2␤4␤-8␤16␤»
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␤-1␤1␤-1␤1␤»
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 1␤␤Actually 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 1␤␤Actually 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 1␤␤Actually 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«NaN␤Inf␤NaN␤-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 1␤␤Actually 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 BEGIN␤at <tmp>:1␤Exception 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 BEGIN␤at <tmp>:1␤Exception 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 BEGIN␤at <tmp>:1␤Exception 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 1␤␤Actually 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 BEGIN␤at <tmp>:1␤Exception 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 BEGIN␤at <tmp>:1␤Exception 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 BEGIN␤at <tmp>:1␤Exception 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/pe​rl6-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