Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2017-02-10

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:40 ggoebel joined #perl6-dev
00:54 geekosaur joined #perl6-dev
00:59 Geth ¦ roast: 6cb3d01d2a | (Samantha McVey)++ | S32-num/base.t
00:59 Geth ¦ roast: Make failure types for .base more specific and test base(1) has right X::
00:59 Geth ¦ roast:
00:59 Geth ¦ roast: Make sure .base(1) throws X::OutOfRange
00:59 Geth ¦ roast: RT 130753 Gives divide by zero error when trying to .base a fractional num of base 1
00:59 Geth ¦ roast: review: https://github.com/perl6/roast/commit/6cb3d01d2a
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
01:00 pyrimidine joined #perl6-dev
01:04 timotimo did you hear timtoady would like base(1) to be thrown out of core and put into a module instead?
01:09 samcv yes
01:09 timotimo OK
01:09 samcv i have fixed it in roast, now reverting in rakudo. then gonna do both commits at the same time
01:10 timotimo understood
01:10 timotimo we fought bravely
01:10 timotimo but in the end it was not meant to be
01:21 samcv ;)
01:22 samcv can i lobby to add negative bases now? :P
01:22 samcv for maximum evil
01:23 timotimo or real bases
01:23 geekosaur there's also nonlinear bases, e.g. fibonacci sequence
01:23 samcv m: say (-2)**($++) for ^3;
01:23 camelia rakudo-moar 1615c8: OUTPUT«1␤-2␤4␤»
01:23 samcv m: say (-2)**($++) for ^5;
01:23 camelia rakudo-moar 1615c8: OUTPUT«1␤-2␤4␤-8␤16␤»
01:23 timotimo something something continued fractions something
01:23 samcv negative bases are one way to do binary without any sign place
01:24 samcv since you can do positive and negative
01:24 samcv without one
01:25 samcv and you can have arbitrary width of variables easily as well
01:26 samcv actually pretty neat
01:29 samcv timotimo, what should i name a module that can convert weird bases
01:30 samcv well all bases. because all bases are equally important!
01:33 timotimo Accusations::Baseless
01:33 samcv lol
01:34 geekosaur AllYourBase
01:35 geekosaur Count::Basie
01:40 Geth ¦ rakudo/nom: f569c47390 | (Samantha McVey)++ | 3 files
01:40 Geth ¦ rakudo/nom: Revert base 1 support in .parse-base and .base
01:40 Geth ¦ rakudo/nom:
01:40 Geth ¦ rakudo/nom: Revert "Add base 1 functionality to  .base and .parse-base" 295b0bff8
01:40 Geth ¦ rakudo/nom: Revert "Fix .base to allow string arguments for base 1" a21d2f9e1
01:40 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f569c47390
01:43 Geth ¦ roast: 5c1e69d6fc | (Samantha McVey)++ | 2 files
01:43 Geth ¦ roast: Revert base-1 tests
01:43 Geth ¦ roast:
01:43 Geth ¦ roast: base-1 experiment has been removed in Rakudo. The test improvements I made
01:43 Geth ¦ roast: have still been retained, but the base-1 tests removed (aside from the exception tests).
01:43 Geth ¦ roast: review: https://github.com/perl6/roast/commit/5c1e69d6fc
01:44 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 :\
01:44 timotimo and now it's already time to go to bed again
01:44 samcv heh
01:44 timotimo but at least i wrote a readme for SDL2::Raw
01:44 timotimo that's something, isn't it ...
01:44 timotimo maybe tomorrow i'll write some tests
01:44 samcv oh timotimo one thing is that when it makes the hash table, it has to malloc the strings
01:45 samcv 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 samcv but at least lower mem usage before they get cp by name
01:45 timotimo oh, that's A Thing
01:45 samcv so i think overall good
01:46 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?
01:46 samcv every string processed does it stay in memory?
01:46 samcv i mean the gains are good enough i think we should still use this approach
01:46 timotimo hm, i think the hash entry still has to contain the exact key, not just the hash
01:47 timotimo and our string is the key, right?
01:47 samcv it speaks more for the hash table being inefficient possibly than the data storage
01:47 samcv yeah
01:47 timotimo in theory we can build a trie over the whole namespace
01:47 samcv well we store a struct in the hash
01:47 samcv and that struct has the name in it
01:47 timotimo that can also be built statically into the .c file
01:47 timotimo if we want
01:48 samcv the hash?
01:48 timotimo we're talking about a name-to-cp hash, right?
01:48 samcv yes
01:48 timotimo right
01:48 timotimo not the hash, a trie instead
01:48 samcv but there's also like <control-0000>
01:48 timotimo have you seen a trie yet?
01:48 samcv that get added to it as well
01:48 pyrimidine joined #perl6-dev
01:48 samcv it's a search tree right
01:48 timotimo yeah
01:49 timotimo the magic trick is that each node-to-child connection has a whole string of chars instead of just a single character
01:50 samcv i mean can't we just convert it to the base-40 name
01:50 samcv idk. that may be pointless if we have a string hash
01:51 samcv 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
01:51 timotimo it's a thought, we can still use a hash
01:51 timotimo 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
01:51 timotimo though i'm sure setting up the hash only takes a tiny fraction of startup anyway
01:52 timotimo so it's a question whether we want to invest time into doing it differently
01:54 samcv yeah
01:54 samcv we can figure that out later i guess
01:55 samcv once we get the ability to pull a specific name out
01:55 timotimo that's my fault :S
01:56 timotimo i mean, i should have made that work already ... days ago ...
01:57 IOninja samcv++ # finding base bugs
01:58 samcv all my stupid base 1 code is now here https://github.com/samcv/perl6-number-base
01:58 samcv maybe when i'm bored i'll add negative bases
01:58 samcv could we add negative bases in rakudo or is that too fringe :P
01:58 samcv if they allow decimals
01:58 samcv base 2-36
01:58 * samcv curious about base -1
01:59 timotimo http://cmph.sourceforge.net/ - might want to have a quick look at this, or at this: https://www.gnu.org/software/gperf/
01:59 samcv m: say (-1)**$_ for ^5
01:59 camelia rakudo-moar f569c4: OUTPUT«1␤-1␤1␤-1␤1␤»
01:59 samcv that would be interesting :P
01:59 samcv bookmarked cmph
01:59 samcv have not used gperf tooo much but once or twice i think
02:00 timotimo probably easier to use one of those two rather than building a trie implementaiton ourselves :)
02:00 timotimo 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."
02:00 timotimo this "can be used without decompressing it" thing might be interesting as well
02:00 timotimo i haven't looked at what this G array is, though
02:01 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
02:01 IOninja m: say 5.log(1)
02:01 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␤␤»
02:01 samcv though we can check if the 1st character is a '<' and then not look up in the table
02:01 IOninja Oh, not bug
02:01 IOninja log(1) == 0
02:02 IOninja just LTA error
02:02 timotimo why not? there's not terribly much of these, right?
02:02 timotimo 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
02:04 timotimo BBIAB
02:04 samcv IOninja, you can take the log 1 of something. it's just usually infinity
02:04 samcv unless IEEE says differently
02:05 IOninja You mean log_1(x)?
02:05 samcv yes
02:05 samcv sorry
02:05 samcv m: say log(1)
02:05 camelia rakudo-moar f569c4: OUTPUT«0␤»
02:06 samcv m: say log(0)
02:06 camelia rakudo-moar f569c4: OUTPUT«-Inf␤»
02:06 samcv m: say log_1(0)
02:06 camelia rakudo-moar f569c4: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤    log_1 used at line 1. Did you mean 'log10'?␤␤»
02:06 samcv m: say log(1, 1)
02:06 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␤␤»
02:06 samcv it should return Inf
02:07 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␤␤»
02:08 samcv also i think log1(1) = 1
02:08 samcv since 1^1 = 1
02:09 samcv 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 samcv though 1**0 is also 0 so is log1(1) 0 or 1 :P
02:10 samcv the number one makes everything more complicated :\
02:10 samcv that identity property
02:11 samcv also log-1 has infinite answers for -1 and 1
02:11 samcv since it alternates
02:13 IOninja m: say .log for NaN, Inf, -Inf, 0
02:13 camelia rakudo-moar f569c4: OUTPUT«NaN␤Inf␤NaN␤-Inf␤»
02:15 IOninja m: say NaN/log(10)
02:15 camelia rakudo-moar f569c4: OUTPUT«NaN␤»
02:15 IOninja ah right
02:15 IOninja Well, the Inf case is wrong
02:16 IOninja weird 'cause I thought I done all the Numeric
02:17 IOninja 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:18 samcv yeah log_1 has two answers so it's really weird
02:18 IOninja log_1 has infinite answers?
02:18 samcv uhm
02:19 samcv no log-1 does
02:19 samcv infinite answers for -1 and 1
02:19 samcv -1**0 == 1, -1**1 == -1, -1**2 == 1 …
02:20 IOninja m: say WHAT log(e)
02:20 camelia rakudo-moar f569c4: OUTPUT«(Num)␤»
02:20 IOninja And the bug will actually auto-resolve in 6.d when Num division follows IEEE \o/
02:20 timotimo neat.
02:21 samcv so log1 of any number except 1, the limit approached infinity as logx goes to 1
02:21 samcv m: say log(2, 1.0000001)
02:21 camelia rakudo-moar f569c4: OUTPUT«6931472.14812598␤»
02:21 samcv m: say log(2, 1.000000000000001)
02:21 camelia rakudo-moar f569c4: OUTPUT«624331476816536␤»
02:21 samcv m: say log(-1, 1.000000000000001)
02:21 camelia rakudo-moar f569c4: OUTPUT«NaN␤»
02:25 samcv well i've added to-base for base -1 in my Base module :P
02:25 samcv worst base ever!
02:25 samcv can only represent 0 and 1
02:27 timotimo what about -1?
02:30 samcv nope
02:30 samcv -1**0 = 1
02:30 samcv then -1**1 == -1
02:30 samcv 1 - 1 = 0, and then it just flips between 0 and 1. so implemented parsing of base -1 now :P
02:39 Geth ¦ rakudo/nom: 301bcf9398 | (Zoffix Znet)++ | src/core/Rational.pm
02:39 Geth ¦ rakudo/nom: Fix LTA error in Rat.base(1)
02:39 Geth ¦ rakudo/nom:
02:39 Geth ¦ rakudo/nom: Move check for base earlier, so we don't explode when we try to take .log(1)
02:39 Geth ¦ rakudo/nom: of it. When (if) Num/x will follow IEEE rules, we can toss this check, since
02:39 Geth ¦ rakudo/nom: there won't be any splosions with the log.
02:39 Geth ¦ rakudo/nom:
02:39 Geth ¦ rakudo/nom: Fixes RT#130753: https://rt.perl.org/Ticket/Display.html?id=130753
02:39 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130753
02:39 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/301bcf9398
02:46 Geth ¦ roast: e2039dbb64 | (Zoffix Znet)++ | S32-num/base.t
02:46 Geth ¦ roast: Unfudge Rat.base out of range base test
02:46 Geth ¦ roast:
02:46 Geth ¦ roast: RT#130753: https://rt.perl.org/Ticket/Display.html?id=130753
02:46 Geth ¦ roast: Rakudo fix: https://github.com/rakudo/rakudo/commit/301bcf9398
02:46 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130753
02:46 Geth ¦ roast: review: https://github.com/perl6/roast/commit/e2039dbb64
02:48 ilbot3 joined #perl6-dev
02:48 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
02:53 pyrimidine joined #perl6-dev
02:55 * 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 IOninja One is just an error and was throwing already; the other affects whether throwage happens or not?
02:55 IOninja Good enough for me.
02:55 IOninja :)
02:55 * IOninja goes to bed
02:57 Geth ¦ nqp/braids: 19 commits pushed by (Pawel Murias)++, (Zoffix Znet)++, TimToady++, (Samantha McVey)++, MasterDuke17++, timo++, (Jonathan Worthington)++
02:57 Geth ¦ nqp/braids: review: https://github.com/perl6/nqp/compare/e40c5baa97...11046d8d34
03:01 TimToady otherwise known as heuristic branch merge :)
03:02 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)++
03:02 Geth ¦ rakudo/braids: review: https://github.com/rakudo/rakudo/compare/f526c7d72d...6573a23b26
04:07 Geth ¦ roast: 1aa886a8ac | TimToady++ | S28-named-variables/slangs.t
04:07 Geth ¦ roast: the Quasi and Trans slangs do not, in fact, exist
04:07 Geth ¦ roast:
04:07 Geth ¦ roast: These tests were passing by accident.
04:07 Geth ¦ roast: review: https://github.com/perl6/roast/commit/1aa886a8ac
04:49 pyrimidine joined #perl6-dev
04:54 pyrimidi_ joined #perl6-dev
04:56 AlexDaniel joined #perl6-dev
05:06 dogbert11 joined #perl6-dev
05:47 Geth ¦ roast: 608848d851 | TimToady++ | S32-num/base.t
05:47 Geth ¦ roast: fix test count in S32-num/base.t
05:47 Geth ¦ roast: review: https://github.com/perl6/roast/commit/608848d851
05:50 pyrimidine joined #perl6-dev
05:51 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': https://github.com/rakudo/rakudo/commit/85d8b14278f860071e70ec6e53ba699af607897c. 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.
06:22 agentzh joined #perl6-dev
06:25 samcv so where does URI::Encode come from? I need to do some fixes to this module/changes
06:25 samcv so it can support utf8-c8
06:25 samcv i guess it's this? https://github.com/dnmfarrell/URI-Encode
06:26 samcv idk there's a couple of them
06:26 samcv err sorry meant to look for Escape
06:27 samcv i guess this is it https://github.com/moritz/perl6-all-modules/blob/master/perl6-community-modules/uri/lib/URI/Escape.pm
06:29 samcv there's no module on modules.perl6.org
06:31 samcv ok this is now my new best guess :P https://github.com/perl6-community-modules/uri
06:33 agentzh joined #perl6-dev
06:48 pyrimidine joined #perl6-dev
06:51 RabidGravy joined #perl6-dev
06:54 pyrimidine joined #perl6-dev
06:55 pyrimidi_ joined #perl6-dev
07:04 samcv ok cool, I got it all fixed for utf8-c8 :) so we can URI-decode strings that are not in NFC form
07:04 brrt joined #perl6-dev
07:04 samcv https://github.com/perl6-community-modules/uri/pull/32
07:08 brrt good * samcv
07:08 samcv o/
07:08 samcv wasn't sure i'd be able to solve that guys problem
07:09 samcv how are you
07:09 brrt i'm not sure what problem you're talking about
07:09 brrt sleepy still :-)
07:09 brrt just awake
07:09 brrt what about yourself
07:09 samcv oh, problem this guy had converting a URI % encoded to a string
07:10 samcv to access the file on the filesystem. but perl 6 converts everything to NFC so it totally broke it
07:10 samcv 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
07:10 samcv and leave your URI's unmangled
07:11 brrt i see…
07:11 brrt so let me get this straight
07:11 brrt a): you get a filename (or URI) in UTF-8
07:12 brrt 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
07:13 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 brrt d): the file system recognizes that set of bytes as different and can't find the file
07:13 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."
07:14 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
07:14 samcv then convert to string and then oh no!
07:14 brrt hmm, i see
07:14 samcv so i made a PR which uses Buf's for the whole URI decode
07:14 brrt because they don't get it as a bag of bytes
07:15 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.....
07:15 brrt eh
07:15 brrt doesn't sit right and raises a flag
07:15 brrt but if it works, then it works
07:15 samcv well more complicated buf way, the way it did before, it would use Buf.new to decode utf-8 in the URI
07:15 samcv but then append it to the rest of the URI
07:16 samcv and then it gets normalized :)
07:16 samcv even if you decode with utf8-c8
07:16 samcv was making me somewhat annoyed for a bit
07:16 nebuchadnezzar joined #perl6-dev
07:17 brrt i see
07:17 brrt yeah, that sucks
07:18 samcv brrt, https://github.com/powturbo/TurboPFor/blob/master/README.md
07:18 brrt what is that
07:18 samcv this sounds really cool and has a bunch of different libraries but i'm not sure how to actually use it
07:19 samcv integer compression like of huge arrays
07:19 brrt aha
07:19 brrt that seems pretty interesting
07:19 samcv could be really awesome for unicode database
07:19 samcv but. idk how to use it :\
07:19 samcv oh wait nvm i fixed it heh
07:19 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')
07:19 samcv had to do a recursive checkout of the repo
07:20 samcv nice
07:20 brrt or maybe they do know but act as if they don't
07:20 samcv Scalar "Variable Byte" faster than ANY other (incl. SIMD) implementation
07:20 samcv it sounds really awesome
07:20 samcv i want to compress all of my integers! and i have a lot of them!
07:20 samcv mostly just the field of indexes per cp
07:21 brrt anyway, have to take the next train, bbiab
07:21 samcv bye
07:44 Geth ¦ nqp/braids: ce7d220fca | TimToady++ | src/QRegex/Cursor.nqp
07:44 Geth ¦ nqp/braids: cleanup of braid to make %*LANG redundant
07:44 Geth ¦ nqp/braids:
07:44 Geth ¦ nqp/braids: We can now warn if we detect that %*LANG has been changed when we
07:44 Geth ¦ nqp/braids: didn't expect it, and compensate for the time being.
07:44 Geth ¦ nqp/braids: review: https://github.com/perl6/nqp/commit/ce7d220fca
07:56 pyrimidine joined #perl6-dev
07:57 Geth ¦ rakudo/braids: 9f8aaf581b | TimToady++ | 2 files
07:57 Geth ¦ rakudo/braids: finish making %*LANG epiphenomenal
07:57 Geth ¦ rakudo/braids:
07:57 Geth ¦ rakudo/braids: %*LANG is now used only as a redundant check on the current language
07:57 Geth ¦ rakudo/braids: braid of the cursor.  For 6.d it will be removed entirely.
07:57 Geth ¦ rakudo/braids: review: https://github.com/rakudo/rakudo/commit/9f8aaf581b
08:01 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␤␤»
08:02 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␤␤»
08:02 TimToady m: BEGIN say %*LANG.keys
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:␤  5===SORRY!5=== Error while compiling ␤  Cannot find method 'keys': no method cache and no .^find_method␤  at :␤»
08:02 TimToady m: use MONKEY; BEGIN say nqp::keys(%*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:␤  5===SORRY!5=== Error while compiling ␤  No registered operation handler for 'keys'␤  at :␤»
08:03 TimToady well, it's there, anyway
08:03 brrt joined #perl6-dev
08:04 RabidGravy doesn't it half to be in an IMPORT?
08:04 RabidGravy EXPORT rather
08:05 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:06 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␤␤»
08:06 samcv m: my %*LANG = {}
08:06 camelia rakudo-moar 301bcf: ( no output )
08:06 samcv m: my @array = Empty;
08:06 camelia rakudo-moar 301bcf: ( no output )
08:06 samcv what's Empty but for a Hash?
08:06 RabidGravy Empty
08:06 TimToady eventually all language mutation will be via the current cursor's braid object
08:07 TimToady m: use MONKEY; BEGIN say nqp::existskey(%*LANG,'MAIN')
08:07 camelia rakudo-moar 301bcf: OUTPUT«1␤»
08:07 samcv Rapunzel, Rapunzel, let down your braids
08:08 samcv 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␤␤»
08:08 samcv m: use MONKEY; BEGIN say nqp::atkey(%*LANG, 'MAIN').keys
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 'keys' for invocant of type 'Perl6::Grammar'␤    in code  at <tmp> line 1␤␤»
08:08 samcv m: use MONKEY; BEGIN say nqp::atkey(%*LANG, 'MAIN').^methods
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 'NQPRoutine'␤    in code  at <tmp> line 1␤␤»
08:08 samcv m: my %hash = Empty;
08:08 camelia rakudo-moar 301bcf: ( no output )
08:09 samcv m: say Empty.WHAT
08:09 camelia rakudo-moar 301bcf: OUTPUT«(Slip)␤»
08:09 samcv m: say ?Empty
08:09 camelia rakudo-moar 301bcf: OUTPUT«False␤»
08:09 TimToady m: say Empty.defined
08:09 camelia rakudo-moar 301bcf: OUTPUT«False␤»
08:09 TimToady say slip().defined
08:09 samcv m: my @array = 'test'; @array.pop; say @array eqv Empty
08:09 TimToady m: say slip().defined
08:09 camelia rakudo-moar 301bcf: OUTPUT«False␤»
08:09 camelia rakudo-moar 301bcf: OUTPUT«False␤»
08:10 TimToady hmm, pretty sure slip() used to be defined, but whatever
08:10 TimToady m: say slip().WHAT
08:10 camelia rakudo-moar 301bcf: OUTPUT«(Slip)␤»
08:10 TimToady m: say slip(1,2,3).defined
08:10 camelia rakudo-moar 301bcf: OUTPUT«True␤»
08:10 TimToady m: say slip(Empty).defined
08:10 camelia rakudo-moar 301bcf: OUTPUT«False␤»
08:10 TimToady huh
08:58 pyrimidine joined #perl6-dev
09:16 pyrimidine joined #perl6-dev
09:50 Ven joined #perl6-dev
10:09 pyrimidine joined #perl6-dev
11:01 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
11:01 bisectable6 IOninja, Output on both points: False
11:02 patrickz joined #perl6-dev
11:07 IOninja s: slip(), 'defined', \()
11:08 SourceBaby IOninja, Sauce is at https://github.com/rakudo/rakudo/blob/301bcf9/src/core/Slip.pm#L5
11:08 IOninja TimToady: hehe :) you made it use .so on Aug 29, 2015: https://github.com/rakudo/rakudo/commit/741d14aa8e97470c4d40cf65e45e2d62793bace0
11:11 pyrimidine joined #perl6-dev
11:36 llfourn joined #perl6-dev
11:52 pyrimidine joined #perl6-dev
11:56 pyrimidine joined #perl6-dev
12:16 Ven joined #perl6-dev
12:57 pyrimidine joined #perl6-dev
12:58 AlexDaniel joined #perl6-dev
13:12 Geth joined #perl6-dev
13:32 Geth ¦ nqp: f42983239f | (Zoffix Znet)++ | docs/continuations.pod
13:32 Geth ¦ nqp: Remove no-longer-correct note...
13:32 Geth ¦ nqp:
13:32 Geth ¦ nqp: ...about continuations being experimental JVM-only feature
13:32 Geth ¦ nqp: https://irclog.perlgeek.de/perl6/2017-02-10#i_14079194
13:32 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/f42983239f
13:38 timotimo maybe that note was from when jvm was the only non-parrot backend we had?
13:39 jnthn Perhaps so
13:39 timotimo but ... parrot really didn't have continuations?
13:39 timotimo i suppose it's difficult to implement, what with inferior runloops and such
13:43 dogbert17 o/
13:43 pyrimidine joined #perl6-dev
13:55 dogbert17 jnthn: did I get the is_full_collection changes right? https://gist.github.com/dogbert17/8e0061b91ab7dcca60339fd6f663a5ed
13:57 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
13:58 timotimo 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 pyrimidine joined #perl6-dev
13:59 timotimo 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
13:59 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
13:59 timotimo but with a fakestack region it'd be sort of fine but only a little bit
13:59 timotimo and also very nasty and difficult
14:00 dogbert17 jnthn: will PR then and yes it passes spectest :)
14:11 jnthn Nice
14:19 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:20 jnthn No
14:20 timotimo int is 32bit on both
14:20 timotimo and size_t is int, iiuc
14:20 jnthn timotimo: yes, but this is about size_t :)
14:20 timotimo well, uint
14:20 jnthn No, size_t will be 64 bits on a 64-bit platform
14:20 timotimo oh!
14:20 dogbert17 thx
14:20 jnthn Thus why we got away wiht it
14:20 jnthn *with
14:20 pyrimidine joined #perl6-dev
14:23 Ven joined #perl6-dev
14:33 dogbert17 https://github.com/MoarVM/MoarVM/pull/531
14:44 Geth ¦ rakudo/nom: bcd902a43e | (Zoffix Znet)++ | src/core/Rakudo/Iterator.pm
14:44 Geth ¦ rakudo/nom: Fix R::I::Batch calling .pull-one one-too-many times
14:44 Geth ¦ rakudo/nom:
14:44 Geth ¦ rakudo/nom: Fixes RT#130725: https://rt.perl.org/Ticket/Display.html?id=130725
14:44 Geth ¦ rakudo/nom:
14:44 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130725
14:44 Geth ¦ rakudo/nom: .rotor crash in the ticket is due to it using RI::Batch that ends up
14:44 Geth ¦ rakudo/nom: calling .pull-one one-too-many times and calling .pull-one after we
14:44 Geth ¦ rakudo/nom: got IterationEnd is undefined behaviour[^1].
14:44 Geth ¦ rakudo/nom: <…commit message has 12 more lines…>
14:44 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bcd902a43e
14:45 Geth ¦ roast: 52668af6c5 | (Zoffix Znet)++ | S32-list/rotor.t
14:45 Geth ¦ roast: Test we can partial rotor a gather/take Seq
14:45 Geth ¦ roast:
14:45 Geth ¦ roast: RT#130725: https://rt.perl.org/Ticket/Display.html?id=130725
14:45 Geth ¦ roast: Rakudo fix: https://github.com/rakudo/rakudo/commit/bcd902a43e
14:45 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130725
14:45 Geth ¦ roast: review: https://github.com/perl6/roast/commit/52668af6c5
14:49 Geth ¦ rakudo/nom: ee3173a0c9 | (Zoffix Znet)++ | src/core/Rakudo/Iterator.pm
14:49 Geth ¦ rakudo/nom: Add comment clarifying assignment in conditional
14:49 Geth ¦ rakudo/nom:
14:49 Geth ¦ rakudo/nom: So no one thinks it's meant to be `==`
14:49 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ee3173a0c9
15:11 jnthn IOninja++ # thanks for fixing!
15:12 timotimo what workloads was this destroying?
15:14 patrickz joined #perl6-dev
15:15 jnthn Managed to bust my $dayjob code
15:16 jnthn 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
15:16 jnthn Well, over-honors apparently :)
15:17 jnthn Or something that hid the problem. :)
15:17 timotimo i mean when consuming the iterator
15:17 jnthn Yeah
15:17 jnthn Oh, right
15:17 jnthn And then abusing List itself was harmless
15:19 timotimo yup
15:19 timotimo that was my thought
15:19 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.
15:19 timotimo it's a very good thing this was caught regardless of the workaround
15:20 jnthn Given it's some thousands of lines and then depends on presumably some more thousands in ecosystem modules :)
15:21 llfourn joined #perl6-dev
15:33 patrickz joined #perl6-dev
15:52 Ven joined #perl6-dev
16:19 patrickz joined #perl6-dev
16:22 Ven joined #perl6-dev
16:35 llfourn joined #perl6-dev
16:43 Geth ¦ rakudo/nom: 02815c9a06 | (Zoffix Znet)++ | src/core/IO/Handle.pm
16:43 Geth ¦ rakudo/nom: Undo pessimization of IO::Handle.lines
16:43 Geth ¦ rakudo/nom:
16:43 Geth ¦ rakudo/nom: The fix[^1] for .lines.rotor(:partial) assumed .pull-one must be
16:43 Geth ¦ rakudo/nom: callable even after IterationEnd was issued, but that behaviour is
16:43 Geth ¦ rakudo/nom: not defined[^2] The actual bug was in RI::Batch and is now fixed[^3],
16:43 Geth ¦ rakudo/nom: making the original fix that introduced ~5% peformance loss not needed.
16:43 Geth ¦ rakudo/nom:
16:43 Geth ¦ rakudo/nom: [1] https://github.com/rakudo/rakudo/commit/ede01c24766def69e0740b5e19
16:43 Geth ¦ rakudo/nom: [2] https://irclog.perlgeek.de/perl6/2017-02-10#i_14079314
16:43 Geth ¦ rakudo/nom: https://github.com/rakudo/rakudo/commit/bcd902a43e
16:44 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/02815c9a06
16:46 Geth ¦ roast: fd15c2e634 | (Zoffix Znet)++ | S16-io/lines.t
16:46 Geth ¦ roast: Remove wrong .pull-one tests
16:46 Geth ¦ roast:
16:46 Geth ¦ roast: Behaviour of .pull-one after IterationEnd is not defined[^1], so
16:46 Geth ¦ roast: don't test it. The real'cause of the original bug these tests test
16:46 Geth ¦ roast: has been fixed[^2] and this commit rewrites the previous test to
16:46 Geth ¦ roast: test that bug without involving .pull-one calls.
16:46 Geth ¦ roast:
16:46 Geth ¦ roast: [1] https://irclog.perlgeek.de/perl6/2017-02-10#i_14079314
16:46 Geth ¦ roast: [2] https://github.com/rakudo/rakudo/commit/bcd902a43e
16:46 Geth ¦ roast: review: https://github.com/perl6/roast/commit/fd15c2e634
16:48 pyrimidine joined #perl6-dev
16:50 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.
17:16 patrickz joined #perl6-dev
17:39 llfourn joined #perl6-dev
18:16 TimToady joined #perl6-dev
18:35 llfourn joined #perl6-dev
18:35 pyrimidine joined #perl6-dev
19:14 IOninja ❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓
19:14 IOninja I found a bad 6.c-errata test and wish to change it: https://github.com/perl6/roast/blob/6.c-errata/S02-types/list.t#L14
19:14 IOninja 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.
19:14 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=127222
19:14 IOninja Is it cool to change it to expect $( ) instead of $()?
19:16 IOninja [Coke] timotimo TimToady jnthn ping ^
19:19 TimToady that should work
19:20 IOninja Sorry, is it OK to change the test? Or do you mean $() should work like ().item.perl?
19:20 IOninja s/.perl//
19:20 TimToady m: say $( )
19:20 camelia rakudo-moar 02815c: OUTPUT«()␤»
19:20 TimToady m: say $()
19:20 camelia rakudo-moar 02815c: OUTPUT«Use of Nil in string context␤  in block <unit> at <tmp> line 1␤␤»
19:21 TimToady is fine to change the test, I think
19:21 IOninja m: 'foo' ~~ /o+/; say $()
19:21 camelia rakudo-moar 02815c: OUTPUT«oo␤»
19:21 TimToady of course, if I was confused, how would I know? :)
19:30 [Coke] I am also confused and defer to TimToady.
19:30 RabidGravy I'm permanently confused
19:34 japhb panfusion: Confusion spreading world wide
19:34 Geth ¦ rakudo/nom: a148c70190 | (Zoffix Znet)++ | src/core/List.pm
19:34 Geth ¦ rakudo/nom: Fix List.perl of containerized empty lists
19:34 Geth ¦ rakudo/nom:
19:34 Geth ¦ rakudo/nom: Currently, it ends up giving `$()` but that's sugar for
19:34 Geth ¦ rakudo/nom: the $/.made ?? $/.made !! $/.Str thing.
19:34 Geth ¦ rakudo/nom:
19:34 Geth ¦ rakudo/nom: Fix by making List.perl stick a space between the parentheses
19:34 Geth ¦ rakudo/nom: for containerized empty lists.
19:34 Geth ¦ rakudo/nom:
19:34 Geth ¦ rakudo/nom: Fixes RT#127222: https://rt.perl.org/Ticket/Display.html?id=127222
19:34 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=127222
19:34 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a148c70190
19:36 llfourn joined #perl6-dev
19:36 Geth ¦ roast/6.c-errata: ca0ce9a5d7 | (Zoffix Znet)++ | S02-types/list.t
19:36 Geth ¦ roast/6.c-errata: Fix incorrect ().item.perl test
19:36 Geth ¦ roast/6.c-errata:
19:36 Geth ¦ roast/6.c-errata: The test expects `$()`, but that's the sugar for $/.made ?? $/.made !! $/.Str
19:36 Geth ¦ roast/6.c-errata: Change to expect `$( )` instead.
19:36 Geth ¦ roast/6.c-errata:
19:36 Geth ¦ roast/6.c-errata: Approval: https://irclog.perlgeek.de/perl6-dev/2017-02-10#i_14080972
19:36 Geth ¦ roast/6.c-errata: review: https://github.com/perl6/roast/commit/ca0ce9a5d7
19:37 Geth ¦ roast: fc2f46ea02 | (Zoffix Znet)++ | S02-types/list.t
19:37 Geth ¦ roast: Fix incorrect ().item.perl test
19:37 Geth ¦ roast:
19:37 Geth ¦ roast: The test expects `$()`, but that's the sugar for $/.made ?? $/.made !! $/.Str
19:37 Geth ¦ roast: Change to expect `$( )` instead.
19:37 Geth ¦ roast:
19:37 Geth ¦ roast: Approval: https://irclog.perlgeek.de/pe​rl6-dev/2017-02-10#i_14080972
19:37 Geth ¦ roast: review: https://github.com/perl6/roast/commit/fc2f46ea02
19:40 Geth ¦ roast: dff2d90263 | (Zoffix Znet)++ | S02-types/list.t
19:40 Geth ¦ roast: Add couple more tests for ().item .perl.EVAL roundtripping
19:40 Geth ¦ roast:
19:40 Geth ¦ roast: RT#127222: https://rt.perl.org/Ticket/Display.html?id=127222
19:40 Geth ¦ roast: Rakudo fix: https://github.com/rakudo/rakudo/commit/a148c70190
19:40 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=127222
19:40 Geth ¦ roast: review: https://github.com/perl6/roast/commit/dff2d90263
20:28 pyrimidine joined #perl6-dev
20:34 Geth ¦ rakudo/nom: 6372417035 | (Zoffix Znet)++ | src/core/Rational.pm
20:34 Geth ¦ rakudo/nom: Interim fix for Rational.ceiling/.floor
20:34 Geth ¦ rakudo/nom:
20:34 Geth ¦ rakudo/nom: https://irclog.perlgeek.de/perl6/2017-02-10#i_14081234
20:34 Geth ¦ rakudo/nom:
20:34 Geth ¦ rakudo/nom: Somehow it's possible to end up with a Rat is is <4/2>, and when
20:34 Geth ¦ rakudo/nom: we call .ceiling/.floor, we end up with an incorrect value.
20:34 Geth ¦ rakudo/nom:
20:34 Geth ¦ rakudo/nom: Temporarily fix by stuffing self.REDUCE-ME into these methods.
20:34 Geth ¦ rakudo/nom: Will hunt down how to produce a <4/2> Rat and try to locate which
20:34 Geth ¦ rakudo/nom: other place is missing the reduction that would (possibly) let us
20:34 Geth ¦ rakudo/nom: avoid it in .ceiling/.floor
20:34 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6372417035
20:37 llfourn joined #perl6-dev
20:42 robertle joined #perl6-dev
20:49 pyrimidine joined #perl6-dev
21:19 Geth ¦ rakudo/precomp-singleprocess-resurrection: 4d9f538e6f | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationRepository.pm
21:19 Geth ¦ rakudo/precomp-singleprocess-resurrection: Fix precomp writing to wrong file ($io instead of $bc)
21:19 Geth ¦ rakudo/precomp-singleprocess-resurrection: review: https://github.com/rakudo/rakudo/commit/4d9f538e6f
21:19 Geth ¦ rakudo/precomp-singleprocess-resurrection: 30ea39fffe | (Stefan Seifert)++ | src/core/CompUnit/RepositoryRegistry.pm
21:19 Geth ¦ rakudo/precomp-singleprocess-resurrection: Fix RepositoryRegistry looking in %*ENV instead of @*PRECOMP-WITH
21:19 Geth ¦ rakudo/precomp-singleprocess-resurrection: review: https://github.com/rakudo/rakudo/commit/30ea39fffe
21:21 pyrimidine joined #perl6-dev
21:33 pyrimidine joined #perl6-dev
21:39 llfourn joined #perl6-dev
22:40 llfourn joined #perl6-dev
22:57 travis-ci joined #perl6-dev
22:57 travis-ci Rakudo build failed. Zoffix Znet 'Fix List.perl of containerized empty lists
22:57 travis-ci https://travis-ci.org/rakudo/rakudo/builds/200464813 https://github.com/rakudo/rakudo/compare/02815c9a0677...a148c70190b8
22:57 buggable [travis build above] ☠ Did not recognize some failures. Check results manually.
22:57 travis-ci left #perl6-dev
23:00 IOninja github failure
23:13 gfldex jnthn: you must have taken quite a few quants out of Rakudo. Threading failes a lot less now.
23:18 jnthn :-)
23:18 jnthn Yeah, it's pretty much what I've focused on for the last whlie :)
23:18 jnthn *while
23:22 gfldex jnthn: the errors look different too and provide proper stacktraces
23:26 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:27 jnthn Which hopefully makes things a good bit easier to figure out
23:35 pyrimidine joined #perl6-dev
23:42 llfourn joined #perl6-dev

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary