japhb . 01:05
MasterDuke IOninja++ that was fast work with Range 01:54
Geth rakudo/nom: 295b0bff8b | (Samantha McVey)++ | 3 files
Add base 1 functionality to .base and .parse-base
08:22
samcv there we go. base 1 numbers for everybody! 08:23
timotimo who gets to be 1, and who gets to be 11?
samcv 1 and 2
Geth roast: 2a3e1f9610 | (Samantha McVey)++ | 2 files
Test base and parse-base for base 1
moritz samcv: have you tested it with base "1"? 08:26
samcv yes?
isn't that implied
moritz with a string, not an Int, that is
samcv yes
oh uhm
'1'.base?
m: '1'.base(2)
camelia rakudo-moar f85978: OUTPUT«No such method 'base' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
moritz '1111'.parse-base('1')
samcv no that works
Add base 1 functionality to .base and .parse-base 08:27
^commit
moritz 'cause I see an Int:D candidate for for the base 1 case, but the base case is coercive
so I wonder how that works
samcv oh
m: say '11'.parse-base('1')
camelia rakudo-moar f85978: OUTPUT«Type check failed in binding to $radix; expected Int but got Str ("1")␤ in block <unit> at <tmp> line 1␤␤»
samcv dunno what you're talking about? 08:28
moritz m: say '11'.parse-base('4')
camelia rakudo-moar f85978: OUTPUT«Type check failed in binding to $radix; expected Int but got Str ("4")␤ in block <unit> at <tmp> line 1␤␤»
timotimo oh, did that break?
moritz sorry, must've been confused
m: say 42.base('5')
camelia rakudo-moar f85978: OUTPUT«132␤»
samcv bisectable6, say '11.parse-base('10')
bisectable6 samcv, On both starting points (old=2015.12 new=295b0bf) the exit code is 1 and the output is identical as well
samcv, gist.github.com/1aa0ac9fdcf4026917...e857edaaa6
samcv bisectable6, say '11'.parse-base('10')
bisectable6 samcv, Bisecting by output (old=2015.12 new=295b0bf) because on both starting points the exit code is 1
moritz m: say 42.base('1') 08:29
camelia rakudo-moar f85978: OUTPUT«base argument to base out of range. Is: 1, should be in 2..36␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
samcv doesn't seem to ever have worked? says bisectable
bisectable6 samcv, bisect log: gist.github.com/b7b13ca376bb5896c5...88f364f8d7
samcv, (2016-09-27) github.com/rakudo/rakudo/commit/22...0f14b9c05c
moritz that one
sorry, I confused base with parse-base
multi method base(Int:D: Int(Cool) $base, $digits?) {
samcv no base is not a multi
err wait. nope it is 08:30
i got them confused too
m: say 10'.base('10')
camelia rakudo-moar 295b0b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3say 107⏏5'.base('10')␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement modifier…»
samcv m: say '10'.base('10') 08:31
camelia rakudo-moar 295b0b: OUTPUT«No such method 'base' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
samcv m: say 10.base('10')
camelia rakudo-moar 295b0b: OUTPUT«10␤»
samcv k
will fix 08:36
m: say 10.base(1)
camelia rakudo-moar 295b0b: OUTPUT«1111111111␤»
samcv sweet
but uh moritz the second argument makes no sense for .base 08:37
m: say 2.base(2)
camelia rakudo-moar 295b0b: OUTPUT«10␤»
samcv m: say 2.base(2, 2) 08:38
camelia rakudo-moar 295b0b: OUTPUT«10.00␤»
samcv there is no 0 in base 1
i guess it's fine to ignore it
since it makes no sense anyway
moritz, you think it should be ignored, or to throw when somebody does 10.base(1, 1) 08:40
or maybe just do 1111111111.
idk either way it's dumb 08:41
star: 4.2.base(1).say 08:42
camelia star-m 2016.10: 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 star: 4.2.base(2).say
camelia star-m 2016.10: OUTPUT«100.001101␤»
samcv that should be fixed
i guess. idk
wtf would 4.2 in base 1 even be 08:43
m: say '1111'.parse-base(1)
camelia rakudo-moar 295b0b: OUTPUT«4␤»
samcv m: say '11011'.parse-base(1) 08:44
camelia rakudo-moar 295b0b: OUTPUT«Cannot convert string to number: malformed base-1 number in '0311⏏05011' (indicated by ⏏)␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
samcv m: say '111'.base('2') 09:10
camelia rakudo-moar 295b0b: OUTPUT«No such method 'base' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
samcv m: say '111'.base('2',0)
camelia rakudo-moar 295b0b: OUTPUT«No such method 'base' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
samcv m: say 10.base('2',0)
camelia rakudo-moar 295b0b: OUTPUT«1010␤»
samcv m: say 10.base('2')
camelia rakudo-moar 295b0b: OUTPUT«1010␤»
Geth roast: 4bcf18fd39 | (Samantha McVey)++ | 2 files
Test .base for Str argument as well
09:20
rakudo/nom: a21d2f9e1c | (Samantha McVey)++ | src/core/Int.pm
Fix .base to allow string arguments for base 1
09:21
samcv ok should all be fixed now
IOninja As I recall it, Str.base wasn't a thing on purpose 11:06
.base(1)? 11:08
IOninja gets a cup of coffee to de-grumble 11:10
DrForr String to unary number... oo, that could be fun. 11:13
IOninja OK 11:14
DrForr eval: '𠀋𠂢'.base(1)
evalable6 DrForr, rakudo-moar a21d2f9: OUTPUT«(exit code 1) No such method 'base' for invocant of type 'Str'␤ in block <unit> at /tmp/am2bQXimTj line 1␤»
IOninja The Str.base wasn't a thing on purpose, to avoid confusion of people mistakenly using it instead of Str.parse-base. 11:15
If Numeric.base(1) were ever a thing, it'd use '0' for its digits, not '1'. 11:16
But Numeric.base(1) isn't a thing, because we already have infix:<x> and chars() for that purpose and people can use whatever digit they want for their base.
DrForr *so* glad :) 11:17
IOninja So my opinion is to revert both the commit that adds Str.base and one that adds .base(1).
samcv there is no Str.base? 11:19
IOninja Ah ok, misread the commit title :)
samcv yeah 11:20
there's .parse-base('2') though
that is Cool
the commit just made .parse-base('1') work
so it could be like the other numbers
IOninja m: '000000'
camelia rakudo-moar a21d2f: OUTPUT«WARNINGS for <tmp>:␤Useless use of constant string "000000" in sink context (line 1)␤»
IOninja m: '000000'.parse-base('1').say 11:21
camelia rakudo-moar a21d2f: OUTPUT«Type check failed in binding to $radix; expected Int but got Str ("1")␤ in block <unit> at <tmp> line 1␤␤»
samcv in base 1, a 0 is basically the number not existing at that position. so it only needs ones
IOninja m: '000000'.parse-base(1).say
camelia rakudo-moar a21d2f: OUTPUT«Cannot convert string to number: malformed base-1 number in '030⏏0500000' (indicated by ⏏)␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: '1111'.parse-base(1).say
camelia rakudo-moar a21d2f: OUTPUT«4␤»
samcv it uses the same notation that all the other bases do
IOninja m: say chars '1111'
camelia rakudo-moar a21d2f: OUTPUT«4␤»
samcv 10 in binary, the 1 is in the 2's place and a 0 in the 1's place
11 in unary, there's a 1 in the 1's place and a 1 in the 1's place
so it's 2
since they're all 1's places 11:22
IOninja Ah, right
samcv i wasn't 100% sure but then i looked into it before adding base 1
IOninja OK. never mind then :) 11:23
(about reverting anything)
Geth nqp: 8371cb23c6 | (Jonathan Worthington)++ | tools/build/MOAR_REVISION
Bump MOAR_REVISION for closed async socket fixes.
11:29
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...5-g2b0739d
rakudo/nom: f16cf370c1 | (Jonathan Worthington)++ | tools/build/NQP_REVISION
Bump for latest MoarVM.

Fixes semantics of close, write, and read of async sockets.
11:35
¦ rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....8-g8371cb2
roast: c7abae472e | (Jonathan Worthington)++ | S32-io/IO-Socket-Async.t
Test semantics of closed async socket.

All three of these operations did naughty things prior to recent fixes.
11:36
IOninja m: say 0.base: 1 11:37
camelia rakudo-moar a21d2f: OUTPUT«␤»
IOninja m: say 0.base(1).parse-base: 1
camelia rakudo-moar a21d2f: OUTPUT«0␤»
IOninja cool
m: say ''.parse-base: 2
camelia rakudo-moar a21d2f: OUTPUT«Cannot convert string to number: malformed base-2 number in '3⏏' (indicated by ⏏)␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
IOninja hehe
There's even a usecase for it: en.wikipedia.org/wiki/Golomb_coding 11:44
m: -2 .base(1).say
camelia rakudo-moar a21d2f: OUTPUT«repeat count (-2) cannot be negative␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: '-11'.parse-base(1).say 11:45
camelia rakudo-moar a21d2f: OUTPUT«Cannot convert string to number: malformed base-1 number in '3-11⏏' (indicated by ⏏)␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: 1.1 .base(1).say 11:50
camelia rakudo-moar a21d2f: OUTPUT«Attempt to divide 2.30258509299405 by zero using /␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
IOninja IMO base 1 should still be removed. It's already implemented as a special case adding maintenance burden for little gain; and negatives/decimals crash with LTA errors right now and zero... do those even exist in unary base? Would they need even more special casing? Seems not worth to have this in core. 11:52
IOninja &
samcv zeros don't exist 12:57
well
m: say 0.base(1) 12:58
camelia rakudo-moar f16cf3: OUTPUT«␤»
samcv that is zero
m: say "".parse-base(1) 12:59
camelia rakudo-moar f16cf3: OUTPUT«0␤»
IOninja Do negatives and decimals exist?
samcv sure negatives are fine. not decimals though
i will have to fix it for negative numbers 13:00
IOninja or... I guess in unary they are... urinals
samcv lol
i mean every place equals 1
so you can't really do decimals at all 13:01
IOninja Feels weird to have this base TBH.
m: 5.5.base($_).say for 2..36
camelia rakudo-moar f16cf3: OUTPUT«101.1␤12.111112␤11.2␤10.222223␤5.3␤5.333334␤5.4␤5.444445␤5.5␤5.555556␤5.6␤5.666667␤5.7␤5.777778␤5.8␤5.888889␤5.9␤5.99999A␤5.A␤5.AAAAAB␤5.B␤5.BBBBBC␤5.C␤5.CCCCCD␤5.D␤5.DDDDDE␤5.E␤5.EEEEEF␤5.F␤5.FFFFF…»
samcv though maybe we can have decimals 13:03
err wait.
it would not be for all numbers
i mean cause there's no zero
you just have to do integers can't do decimal numbers 13:04
that's the main part of how it differs from the other bases
but i will make a more awesome error for "1.1".parse-base(1) 13:05
you can't really parse a number that can't exist in that base can you?
it's basically assumed the person already knows what base the number is in
IOninja, that error when trying to do 1.5.base(2) already existed before 13:07
fyi
my changed did not create that error
*changes
moritz I'm not sure I'm happy with base 1
because it's fundametally different from the other representations 13:08
the others are polynomial, base 1 isn't
IOninja Yeah, the entire base is a special case basically: empty string is not a number for other bases, but it is for base-1; other bases have decimals, but not in base-1; the digits for all bases are (flat 0..9, A..Z)[^(base-1)], but in base-1 it's `1` and zero is not a valid digit. So basically we're declaring that all Perl 6 implementations must add a special-cased base-1; despite it not being commonly needed
and trivially replicated in user's code.
infix:<x>/chars basically handle all positives
m: 1.5 .base(2).say 13:09
camelia rakudo-moar f16cf3: OUTPUT«1.1␤»
IOninja samcv: which error?
samcv m: say 1.4.base(1)
camelia rakudo-moar f16cf3: 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␤␤»
IOninja huh
samcv that already was there
star: say 1.4.base(1)
camelia star-m 2016.10: 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␤␤»
IOninja huh² 13:10
m: say (1.4).base: 2
camelia rakudo-moar f16cf3: OUTPUT«1.011010␤»
IOninja m: say 1.4.base: 2
camelia rakudo-moar f16cf3: OUTPUT«1.011010␤»
IOninja oh ok
IOninja needs moar coffee
s: 1.4, 'base', \(1)
SourceBaby IOninja, Sauce is at github.com/rakudo/rakudo/blob/f16c...al.pm#L111
IOninja Looks like the check that base is valid is missing in the Rational.base 13:11
m: say 12.base: 400
camelia rakudo-moar f16cf3: OUTPUT«base argument to base out of range. Is: 400, should be in 1..36␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: say 1.2.base: 400
camelia rakudo-moar f16cf3: OUTPUT«base argument to base out of range. Is: 400, should be in 1..36␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
IOninja Or rather done too late 13:12
samcv idk we support roman numerals as numbers too 13:15
and those aren't likely to be commonly used
and are another representation of a unary numeral system
IOninja Are roman numerals special cased? 13:16
samcv well they sort of are since they are Nl or number letters. well
they break when i fix moarvm to think that <alpha> === Alphabetic property 13:17
but atm they aren't
IOninja My vote on base(1) is to not implement it in core on the grounds that it needs special casing in implementation, tests, and docs. Maybe jnthn++ or TimToady++ could offer a ruling. 13:21
samcv i mean if it were in MVM would that make things any better?
or is it more because base 1 just is different because 1^1 = 1 13:22
and so does not offer decimals
as an aside there seems to be programming language where you convert brainfuck code to binary numbers for each symbol, then convert that binary number to unary and that is the text of your program 13:31
haha
jnthn would prefer not to move more stuff into MoarVM, fwiw 13:32
samcv yeah i didn't really want to move it their either
samcv checkouts out IOninja's Inline::Brainfuck 13:34
IOninja m: say 'NaN' ~~ NaN 13:50
camelia rakudo-moar f16cf3: OUTPUT«No such method 'isNaN' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: say 'NaN'.Numeric ~~ NaN
camelia rakudo-moar f16cf3: OUTPUT«True␤»
Geth rakudo/nom: 1615c83c9a | (Zoffix Znet)++ | src/core/Numeric.pm
Fix Str ~~ Numeric

  - Don't throw if we can't coerce Str to Numeric, just return False[^1]
  - Don't crash with `isNaN method not found` when Numeric is a NaN
  [1] irclog.perlgeek.de/perl6-dev/2017-...i_14065906
14:00
roast: 70dc421407 | (Zoffix Znet)++ | S03-smartmatch/any-num.t
Test Str ~~ Num

  - Can handle Strs that aren't numeric without exploding
  - Can handle cases where Num is a NaN
Rakudo fix: github.com/rakudo/rakudo/commit/1615c83c9a
14:01
IOninja
.oO( with so much talk about explosions, this channel gotta be on some FBI watch list by now... )
14:02
m: say (-42e0) % 2e0 14:13
camelia rakudo-moar 1615c8: OUTPUT«0␤»
IOninja Another negative zero bugglet
m: say 42 % Inf 14:14
camelia rakudo-moar 1615c8: OUTPUT«NaN␤»
IOninja m: say 42 / Inf
camelia rakudo-moar 1615c8: OUTPUT«0␤»
IOninja The n % Inf should be 0, not NaN
(when n is not a NaN) 14:17
IOninja will fix these 14:18
Well, some time later... I guess I should get cracking on the IO stuff :P 14:19
samcv are you still a ninja if your work is in a publically accessible repository? 14:35
IOninja :) 14:36
[Coke] expects a status report from you, young man. 15:56
IOninja wow, the -42e0 % 2e0 sign is a lot more complex: en.wikipedia.org/wiki/Modulo_operation 16:08
All the langs seem to be doing whatever they want. 16:09
IEEE spec says "If r = 0, its sign shall be that of x. remainder(x, ∞) is x for finite x. 16:12
But I guess not everyone agrees whether they're doing "remainder" or "modulo" :/ 16:13
moritz if r = 0, its sign doesn't matter :-)
r's sign, that is 16:14
japhb Of course it does. 16:19
IOninja m: say atan2 -0e0, -1e0 16:20
camelia rakudo-moar 1615c8: OUTPUT«-3.14159265358979␤»
IOninja m: say atan2 0e0, -1e0
camelia rakudo-moar 1615c8: OUTPUT«3.14159265358979␤»
IOninja :)
moritz please don't let any mathematicians find out about this. 16:22
IOninja heh
japhb My math professor designed a fair portion of that.
IOninja :o
japhb en.wikipedia.org/wiki/William_Kahan 16:24
IOninja fancy pants 16:31
m: sub e ($x, $y ) {42}; say e -2, 2 16:36
camelia rakudo-moar 1615c8: OUTPUT«0.7182818284590462␤»
IOninja m: sub pi ($x, $y ) {42}; say pi -2, 2 16:37
camelia rakudo-moar 1615c8: OUTPUT«1.141592653589792␤»
IOninja m: constant meow = 70; sub meow ($x, $y ) {42}; say meow -2, 2
camelia rakudo-moar 1615c8: OUTPUT«682␤»
IOninja LTA IMO 16:38
jnthn Note that's no conflict here, since the sub's actual name in the symbol table is &meov 16:40
&meow even 16:41
IOninja yeah...
jnthn And listop syntax is unambiguously looking for a sub
camelia m: constant meow = 70; sub meow ($x, $y ) {42}; say meow, -2, 2 16:42
camelia jnthn: rakudo-moar 1615c8: OUTPUT«70-22␤»
IOninja m: constant meow = 70; sub meow ($x, $y ) {42}; say meow 2, 2 16:43
camelia rakudo-moar 1615c8: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3 = 70; sub meow ($x, $y ) {42}; say meow7⏏5 2, 2␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ …»
IOninja All the more reason to pushback adding all bunch of core constant that jjmerelo wanted to add a while back
took me awhile to notice the problem: gist.github.com/zoffixznet/292d563...6fd1b09e28 16:45
'cause the sub was supposed to produce a number, I was just getting the wrong one :P
k, -42e0 % 2e0 => 0e0 (and not -0e0) is not a bug 'cause we don't do IEEE's remainder in that operator. 16:50
'cause 5 % 2 would be -1 then... 16:51
Java has Math.IEEEremainder just for that heh
How does core.d stuff work? Is it just additive to core? I got this diff gist.github.com/zoffixznet/043124e...c904b9ea6a but it fails these three tests: github.com/perl6/roast/blob/e73bb6...v.t#L9-L11 I figured it's 6.d material... do I just stick those ops to core.d? 17:05
src/core.d/Num.pm?
and how will the non-src/core stuff be handled. Like lib/Test.pm6 will lose is_approx() in 6.d... 17:08
[Coke] test files will have to explicitly have 6.c or 6.d in them. 17:10
(and while master can have both, maybe 6.d branch and 6.c branch have only those that apply) 17:11
IOninja well, just stuffing gist.github.com/zoffixznet/b981f82...d5ca90d7cd into src/core.d/Num.pm didn't do anything. 17:13
Gonna leave this for now, I guess 17:14
[Coke] is there a framework to augment the default one with anything found in d? 17:17
TimToady would prefer to keep base 1 out of core; would be fine in a module though 19:00
IOninja +1 19:02
pyrimidine Anyone have an idea what might be going on w/ RT #130709 or RT #130535 19:11
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130709
Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130535
pyrimidine These are both linked to 'require' not working, seems to be related to bug fix for lexical module loading 19:12
(should say, 'not working as expected'). nine++ points out a fix may need some thought 19:13
timotimo is surprised base1 isn't getting much love 19:15
people use it for turing machines all the time! 19:16
IOninja it's not just base1 it's its wild difference from all the other bases
timotimo you think? 19:17
IOninja think what?
timotimo i disagree, the formula is the same
999 is 9 * 10^3 + 9 * 10^2 + 9 * 10^1
111 is 1 * 1^3 + 1 * 1^2 + 1 * 1^1
TimToady it is fundamentally different, insofar as it cannot support fractions
timotimo that's a point i'll concede 19:18
IOninja timotimo: what's your formula for zero? :)
timotimo "" is
IOninja lol
timotimo seriously.
10 is 1 * 1^2, 1 is 1 * 1^1, is 19:19
perlpilot Base 1 supports an infinite number of fractions! They're just also wholes too ;)
IOninja timotimo: so the result is ""?
timotimo: that means it'd be "" for all the other bases too :) 19:20
timotimo no, the result is evaluating the mathematical formula
IOninja that's special cased for base-1
timotimo hm.
TimToady actually, the special case is all the other bases requiring a leading 0 in-band 19:21
but I still don't think base1 belongs in core
timotimo you've got the final word if you want
just need to sit in your seat :)
the special one 19:22
TimToady plus we already have base-1 operators built in, they're just spelled funny
which is fine, since base-1 is funny 19:23
timotimo we have ~, but we don't have something corresponding to -, or any kind of "get the inverse element of a base1 number"
TimToady big loss...
timotimo well, you could "-" ~ $base-one-number
but ~ won't honour negative base one numbers
TimToady exploring all these delightful ramifications is a good use for a module 19:24
timotimo fair enough
IOninja m: say ~42 19:25
camelia rakudo-moar 1615c8: OUTPUT«42␤»
timotimo we'll also totally want a slang that'll interpret numbers that are made up of only 1 as base-1
IOninja m: sub baseit ($n, $b) { sum do for $n.comb.reverse.pairs { .value * ($b**.key) } }; say baseit "", 2 19:27
camelia rakudo-moar 1615c8: OUTPUT«0␤»
IOninja m: sub baseit ($n, $b) { sum do for $n.comb.reverse.pairs { .value * ($b**.key) } }; say baseit "22", 2
camelia rakudo-moar 1615c8: OUTPUT«6␤»
IOninja hehe :)
TimToady and on the roman numeral argument, we only support those to the extent they come for free with Unicode
IOninja m: say :1<111> 19:30
camelia rakudo-moar 1615c8: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Radix 1 out of range (allowed: 1..36)␤at <tmp>:1␤------> 3say :1<111>7⏏5<EOL>␤»
TimToady I'm afraid that, at least for me, this whole thing falls rather too far (for my comfort) into the "you think that's cute today" category.... 19:32
it would be okay as a degenerate case if it were, in fact, a degenerate case, but it's a discontinuity, really 19:33
it's only a degenerate case if you squint 19:34
perlpilot
.oO( makes me think "squinting at degenerates" is a useful phrase for something )
19:53
geekosaur only if you're usan x.x 19:55
TimToady how come there's no SQUINTING FACE? 19:58
how are supposed to convey suspicion with emoticons?
they need a DUBIOUS FACE or so... 19:59
IOninja u: 🤔 20:02
unicodable6 IOninja, U+1F914 THINKING FACE [So] (🤔)
IOninja u: 🤨
unicodable6 IOninja, U+1F928 <reserved> [Cn] (🤨)
IOninja Well, "Face With One Eyebrow Raised" is a proposed part of Unicode 10: emojipedia.org/unicode-10.0/ 20:04
.oO( didn't they *just* make a unicode release? )
there's even 11 already: emojipedia.org/unicode-11.0/ 20:05
That will bring the "Mooncake" emoji... can't wait
TimToady raising an eyebrow is not really quite the same as squinting 20:06
IOninja u: 😑 20:08
unicodable6 IOninja, U+1F611 EXPRESSIONLESS FACE [So] (😑)
IOninja That one looks squinting...
TimToady you can't use a neutral for a strong negative 20:09
IOninja Instead of adding all these faces they clearly should just make separate face parts that you join with ZWS :) 20:11
combine with skin tones and sex emojis for that perfect emoji face :P
TimToady then we'd have to deal with CLOWN NOSE and such..
IOninja u: CLOWN 20:12
unicodable6 IOninja, U+1F921 CLOWN FACE [So] (🤡)
IOninja Looks like you're person #11,213 to want this emoji :) www.emojirequest.com/r/SuspiciousEmoji 20:13
¬_¬ 20:14
TimToady that's a double negative you've got there... 20:15
IOninja heh 20:16
TimToady wonders how space aliens with eyes on stalks express suspicion... 20:18
nine llfourn: you seem to understand rt.perl.org/Public/Bug/Display.html?id=130535 20:20
That's intriguing: method run() { require ::('C::B') } fails with No such symbol C::B while method run() { require ::('C::B'); 1 } does not throw any error when called. 20:26
TimToady: the wantedness seems to make the difference, right?
Ok, looks like require really needs a closer look or three. But not today. Good night! 20:32
timotimo nite nine! 20:46
dogbert17 jnthn, timotimo: are you good C hackers :) 21:28
should I use a %d format specifier to fprintf a variable of type size_t? 21:30
jnthn No, that sounds wrong :) 21:32
dogbert17 what would you suggest
jnthn %d is for int
And only 32-bit you'll get away with it
dogbert17 which I have :) 21:33
I'm beginnig to suspect that we have a 32 bit problem here (with the GC)
jnthn %zd I think
dogbert17 look at this (printed with %d)
jnthn oh, maybe %zu for unsinged 21:34
dogbert17 is_full_collection: promoted = 29046306, rss = 299098112, percent_growth = 9.
looks reasonable
is_full_collection: promoted = 199464970, rss = 607739904, percent_growth = 4. hmmm
promoted is multiplied by 100 in the percentage_growth calculation, couldn't that lead to overflow on 32 bit? 21:36
%zu didn't work, is_full_collection: promoted = 21361621, rss = 97067008, percent_growth = 22. at program start 21:43
sry, that's ok
jnthn On overlow - hmm, what type did we do the calc in...
dogbert17 github.com/MoarVM/MoarVM/blob/mast...ate.c#L288 21:45
is_full_collection: promoted = 478401828, rss = 861716480, percent_growth = 0. # with %zu
using - fprintf(stderr, "is_full_collection: promoted = %zu, rss = %zu, percent_growth = %d.\n", promoted, rss, percent_growth); 21:46
jnthn m: say 478401828 / 861716480 21:47
camelia rakudo-moar 1615c8: OUTPUT«0.5551731214␤»
jnthn oops :) 21:48
size_t rss, promoted;
d'oh
percent_growth is 64-bit
But it won't upgrade the other two before doing the calc
Let's just declare them all as MVMuint64
Oh no, that'll bust something else :) 21:49
dogbert17 m: say (100 * 478401828) / 861716480
camelia rakudo-moar 1615c8: OUTPUT«55.517312144␤»
jnthn rss must be declared size_t
Because it's an out parameter
dogbert17 at least we know the real problem now :)
jnthn Yeah, really nice catch :)
So, let's make MVMuint64 promoted 21:51
And cast rss to MVMuint64
samcv TimToady, I will revert the base 1 stuff later today when I have time, have some appointments today
thank you for weighing in
dogbert17 I'll give it a shot
timotimo good catch dogbert 21:59
dogbert17 jnthn, timotimo: is this correct? gist.github.com/dogbert17/8e0061b9...d6f663a5ed 22:45
timotimo looks correct at first glance 22:49
dogbert17 thx timotimo, running spectest now 22:54