»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
buggable New CPAN upload: Chart-Gnuplot-0.0.11.tar.gz by TITSUKI modules.perl6.org/dist/Chart::Gnupl...an:TITSUKI 00:23
timotimo Xliff: you can slice it with explicit ranges 00:34
Xliff timotimo: Ah! 00:35
Xliff Still having segfaults, but I don't know if my addition is the cause. I am going to have to go back and see if I can golf the issue. I am wondering if something is wrong with CUnions or my implementation using CUnions. :/. 00:36
Xliff Needless to say, when you segfault trying to access the first element, something is wrong. 00:36
timotimo if the program doesn't take long to run, running valgrind can give you a bit more extra information about the pointer that's segfaulting, though of course it could just be a null pointer you're encountering in which case there isn't much extra to know 00:40
Xliff True dat. Worked around it and I'm happy with it. 01:03
Now for the next issue. If I want to be able to iterate using "for $o {...}" what are the requirements for $o? method iterator, yes? Or do I need something else?>
I have this use case: 01:04
m: class A { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; for A.new { .say }
camelia 1
2
3
Xliff But when I scale it up, the equivalent of A.iterator isn't being called.
m: class A { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; for A.new -> $a { $a.say } 01:05
camelia 1
2
3
Xliff m: class A { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; my $ao = A.new; for $ao -> $a { $a.say }
camelia A.new
Xliff HA! What's the difference between the last two invocations? 01:05
m: class A does Iterable { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; my $ao = A.new; for $ao -> $a { $a.say } 01:06
camelia A.new
Xliff m: class A does Iterable { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; my $ao = A.new; for $ao.iterator -> $a { $a.say } 01:07
camelia <anon|1>.new(index => 0)
buggable New CPAN upload: Uzu-0.2.8.tar.gz by SACOMO modules.perl6.org/dist/Uzu:cpan:SACOMO 01:53
Xliff m: class A does Iterable { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; my $ao = A.new; for $ao -> $a { $a.say } 02:08
camelia A.new
Xliff m: class A does Iterable { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; my $ao = A.new; for $ao.List -> $a { $a.say }
camelia A.new
Xliff m: class A does Iterable { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; my $ao = A.new but Iterable; for $ao -> $a { $a.say } 02:09
camelia A+{Iterable}.new
Xliff m: class A does Iterable { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; my $ao = A.new but Positional; for $ao -> $a { $a.say } 02:09
camelia A+{Positional}.new
Xliff m: class A does Iterable { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; my $ao := A.new but Positional; for $ao -> $a { $a.say } 02:11
camelia 1
2
3
Xliff \o/
But why binding?
m: class A does Iterable { has @!a = <1 2 3>; method iterator { my @a := @!a; class :: does Iterator { has $.index is rw = 0; method pull-one { @a.elems > $.index ?? @a[$.index++] !! IterationEnd; } }.new; }; }; my $ao = A.new but Positional; for $ao<> -> $a { $a.say } 02:12
camelia 1
2
3
Xliff Ah! Containers! 02:14
kktt007 does vim the best choice for perl6? 02:50
holyghost it syntax highlights perl6, yes 02:57
there's probably work on emacs for it too 02:58
timotimo please check out perl6.org/whatever/ as well as maybe github.com/perl6/user-experience/issues/19
Geth doc: 2c7b2c14b9 | (Richard Hainsworth)++ (committed using GitHub Web editor) | doc/Language/pod.pod6
Update pod.pod6

fix formating of P<> section
03:41
holyghost I've worked on my perl6 wave editor somewhat, I need to refactor the widgets somewhat, it's made in SDL2 05:49
I am now offline, cya all!
Geth Pod-To-HTML: finanalyst++ created pull request #54:
Modify tests
06:51
jmerelo Did you check out today's Advent Calendar? perl6advent.wordpress.com/2018/12/...nd-debian/ 07:01
Geth Pod-To-HTML: 600df61f59 | (Richard Hainsworth)++ (committed using GitHub Web editor) | 2 files
Merge pull request #2 from perl6/master

update
Pod-To-HTML: 7f76492143 | finanalyst++ | 2 files
tests: link in heading, stop outp in defn
Pod-To-HTML: 3d6c59599c | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | 2 files
Merge pull request #54 from finanalyst/master

Modify tests
jmerelo .seen masak 07:14
yoleaux I saw masak 12 Dec 2018 20:15Z in #perl6: <masak> still waiting for the editor that makes Git the inherent saving metaphor and abstracts away the disk itself
jmerelo .tell masak you're scheduled on the 16th, everything coming up good? 07:15
yoleaux jmerelo: I'll pass your message to masak.
jmerelo .seen RabidGravy
yoleaux I saw RabidGravy 17 Dec 2017 01:40Z in #perl6: <RabidGravy> that's perl6advent.wordpress.com/2017/12/...ier-title/ if you want to get in early
jmerelo m: say $*KERNEL 07:46
camelia linux (4.4.92.31.default)
jmerelo m: say $*KERNEL.perl
camelia Kernel.new(release => Str, name => Str, auth => "unknown", version => Version, signature => Blob, desc => Str)
jmerelo m: say $*DISTRO.perl 07:50
camelia Distro.new(release => "42.3", is-win => Bool::False, path-sep => ":", name => "opensuse", auth => "www.opensuse.org/", version => v42.3, signature => Blob, desc => "2018-12-13T08:50:59.213619+01:00")
Geth doc: b961fc7cba | (JJ Merelo)++ | doc/Language/variables.pod6
Reflow, some rewording
08:25
doc: 3f3792144a | (JJ Merelo)++ | doc/Language/variables.pod6
Improving and restructuring documentation for dynamic variables.

This closes #2510 and also refs #2483.
buggable New CPAN upload: IoC-0.0.2.tar.gz by UFOBAT cpan.metacpan.org/authors/id/U/UF/...0.2.tar.gz 08:33
jmerelo ufobat: cool :-) 08:35
ufobat jmerelo, :D 08:55
tyil jmerelo: you're an adamant Emacs user, no? 09:35
jmerelo tyil: right. That does not imply I'm good at it, though... 09:36
tyil I'm mostly a vim user, but perl 6 highlighting in vim is excruciatinly slow, so I'm trying out emacs (which is excruciatingly fast in this regard)
El_Che suspects jmerelo grew a sixth finger per hand by now
tyil however, as most vim users I have quite some modifications that I'd like to also have in emacs in some way or another 09:37
jmerelo tyil: emacs is mostly OK for perl6, but it does not work very well for pod6
tyil I was hoping you know your way aroun emacs to make it bahve like my vim setup :>
(I'm already running evil-mode, ofc)
jmerelo tyil: and yes, it's fast and good :-)
tyil startup is slightly slower, but I know that can be remedied by running emacs as server/client 09:38
jmerelo tyil: as I said, I'm not terribly good... I basicaly use syntax highlighting, indentation, and little else. Don't know about ctags or stuff like that, but I guess it can be done...
tyil ah
that's too bad, then :(
would you know any emacs wizards that can tweak this li'l thing to do anything I want in the way I want it? 09:39
jmerelo tyil: that is also in this group, I don't think so. The emacs mode is not updated very often, either...
ufobat tyil, Rolf Langsdorf act.perlconference.org/tpc-2018-gl.../user/5026 09:54
tyil, he is on perlmonks, for example 09:55
I am using emacs but not with ctags
tobs tyil: I was about to mention the vim-perl6 repo on github because the contained syntax file is much faster than the one that shipped with vim over here, but then I saw you contributed to it. Mentioning it just in case you forgot :) 09:57
tobs (you could still call the faster one slow, I agree) 09:57
ufobat i am not sure wether lanX does perl6 actually :(
+h
ufobat assuming you want to contribute a feature to perl6 how does this work, since you would contribute a feature to rakudo but the feature is not (yet?) in the specification? where are the specifications? or is the roast the specificiation? 10:03
jmerelo ufobat: assuming you want a new functionality, you should create a new issue and discuss in in #perl6-dev 10:04
ufobat: if it's simply disambiguation, it's probably better to start with a test in roast for that, as long as it does not deviate from the specification. The spec for 6.d is published, but mostly roast _is_ spec. 10:05
tyil tobs: that one's also very slow, sadly, which is why I'm looking for alternatives
I've even considered atom (which is now configured to work reasonably well, on my laptop)
jmerelo ufobat: if you want some fancy new thing that can't wait, you can just fork. It's free software, after all. You can also call your fork Raku2 or Cameeelia 10:06
ufobat ha! :D
where is the spec? foer 6.d published? 10:07
ufobat or is it just roast? 10:08
for example, i can't find %*RESOURCE on roast 10:09
s/on/in/
i know %*RESOURCES is mentioned in the design documents 10:10
(which are outdated?)
jmerelo ufobat: yep, 6.d is published, but it should be also in roast, with some stuff not implemente commented out. 11:16
ufobat: and yes, the design documents are outdated. If it's not in roast, it's not spec. Yet. So one thing is to add some tests to that... 11:17
mscha m: class Point { has Int $.x; has Int $.y }; sub infix:<cmp>(Point $a, Point $b) { $a.y cmp $b.y || $a.x cmp $b.x }; Point.new(:x(4), :y(3)) cmp Point.new(:x(5), :y(2)); 11:19
camelia Type check failed in binding to parameter '$a'; expected Point but got Int (3)
in sub infix:<cmp> at <tmp> line 1
in sub infix:<cmp> at <tmp> line 1
in block <unit> at <tmp> line 1
mscha What am I doing wrong here?
m: class Point { has Int $.x; has Int $.y }; multi sub infix:<cmp>(Point $a, Point $b) { $a.y cmp $b.y || $a.x cmp $b.x }; Point.new(:x(4), :y(3)) cmp Point.new(:x(5), :y(2)); 11:20
camelia WARNINGS for <tmp>:
Useless use of "cmp" in expression ".new(:x(4), :y(3)) cmp Point.new(:x(5), :y(2))" in sink context (line 1)
mscha m: class Point { has Int $.x; has Int $.y }; multi sub infix:<cmp>(Point $a, Point $b) { $a.y cmp $b.y || $a.x cmp $b.x }; say Point.new(:x(4), :y(3)) cmp Point.new(:x(5), :y(2));
camelia More
mscha Never mind, I figured it out. :-)
lizmat $a cmp $b right ?
mscha I forgot the multi 11:21
lizmat ah, duh :-)
ufobat what if its in the design documents but not in the roast? :D
lizmat ufobat: if it is implemented more or less according to design documents and not in roast, it needs tests? 11:22
jmerelo ufobat: there are several reasons why that could happen. But the procedure is pretty much the same, discuss in roast, IRC channel, Rakudo repo... 11:26
pmurias ufobat: if it's stuff for %*RESOURCES that you want to add, I would start by writing a test 12:19
ufobat: if it's something from the design document it's likely it's sane and you can add it to rakudo without much discussion etc. 12:24
ufobat pmurias, there is a PR that points into that same direction, not merged since 5 months. github.com/perl6/roast/pull/456 13:55
jmerelo ufobat: waiting for an answer from Niner. And now it's also stale... Maybe you could ping to see what's going on. 14:01
ufobat okay :)
jmerelo ufobat: there are quite a bit of PRs there... Hum. Maybe we should do a roast squashathon or something. 14:05
AlexDaniel tyil: yes, just use spacemacs 15:16
AlexDaniel tyil: you'll have to use spacemacs from `develop` branch, because somehow the last version of spacemacs is almost 1 year old and it didn't have perl6 support back then 15:19
but otherwise it will be rather straightforward, likely with almost zero things to relearn 15:20
tyil I dont like the amount of garbage spacemacs comes with 15:26
tobs` my moar process is using 3168% CPU, race ftw \o/ 15:27
El_Che tobs`: cores and threads many you have 15:28
tobs` htop shows 88, but it's a shared machine so I stick with 32 15:28
cores
(no wait, it's 88 of whatever htop lists) 15:30
oh sorry, I read that as a question not a remark ._. 15:31
El_Che and some yoda :)
timotimo if you reorder the dots in ... it goes from the yada yada yada operator to the yoda yoda yoda operator 15:35
tobs` I'm quite happy, the computation will be done by tomorrow coffee break and it was less painful than anything that starts with `from multiprocessing import`, as least for a noob like me 15:36
rje_ re blogs.perl.org/users/zoffix_znet/20...rl-6.html. 15:37
I've seen mumblings re 'Raku' but I see no obvious announcement.
AlexDaniel rje_: marketing.perl6.org/id/1541379592/pdf_digital 15:38
rje_ Yes, the only reference is in a PDF file.
Nothing on perl6.com, eh? 15:39
I mean beyond a link to a link...
AlexDaniel rje_: there was a lot of heat, we refrained from changing too much to let everything cool down a bit
rje_ Just wondering how anyone who didn't know would see it, plain as day, as opposed to having to know where the official slide decks are. It's almost buried. Or is it just me? 15:40
AlexDaniel rje_: no, it's not just you
rje_ OK, I understand. Slow and steady. Thank you Alex.
AlexDaniel rje_: D#2443 was closed with this commit github.com/perl6/doc/commit/0b6354...c2402f7ea1 15:41
which is a good start I guess… 15:42
dogbert2_ AlexDaniel: I think you can remove the blocker label from R#2523 15:45
AlexDaniel I NEED THE BOT
timotimo: can you help it again? :)
dogbert2_ where is it?
AlexDaniel dogbert2_: ah yeah, I saw that. 15:46
robertle: can you confirm that rakudo from ms
robertle: … master builds correctly on big endian systems?
timotimo it doesn't seem like hack is down 15:56
timotimo oh, you're missing synopsebot? 15:57
aha 15:59
DOM::Tiny was failing to compile because a v6.c or .d was too late 16:00
robertle AlexDaniel: moar+nqp+rakudo current masters? and is it enough for the rakudo test suite to pass? 16:02
timotimo synopsebot will be up once i've upgraded DOM::Tiny 16:11
timotimo R#2523 16:15
synopsebot R#2523 [open]: github.com/rakudo/rakudo/issues/2523 [Moar][⚠ blocker ⚠] "Bytecode stream version too low" during nqp build
buggable New CPAN upload: Bailador-0.0.16.tar.gz by UFOBAT modules.perl6.org/dist/Bailador:cpan:UFOBAT 16:33
timotimo it'd be kind of cool if we scanned the ecosystem for issue numbers and link to the dists from the bugtracker automatically 16:37
greppable6: R\#\d\d\d\d? 16:38
greppable6 timotimo, 3 lines, 3 modules: gist.github.com/6d9df725b6dc3ce36e...457ca6d886
timotimo greppable6: rakudo\/rakudo.\d\d\d\d?
greppable6 timotimo, Found nothing!
Kaiepi greppable6: https:\/\/github.com\/rakudo\/issues\/\d\d\d\d? 16:39
greppable6 Kaiepi, Found nothing!
Kaiepi greppable6: https:\/\/github.com\/rakudo\/rakudo\/issues\/\d\d\d\d?
greppable6 Kaiepi, 10 lines, 7 modules: gist.github.com/0ec511dd0358f163e7...e3c4576c25
timotimo good one 16:40
now automatically find the issues that have been closed and notify the authors :) :)
robertle AlexDaniel: just tried with fresh HEAD checkouts, works like a charm on s390x :) 16:46
matze_ Hello, can someone tell me how can a find an installed module so that I can change and debug it? 17:07
Kaiepi zef locate
matze_ yeah, it gave me: Cro::HTTP::Client => /usr/home/rakudobrew/moar-master/install/share/perl6/site/sources/BD9BD084131C6E7D2BF4FE09570E5EBE604DB8FA 17:08
but when i change the file there nothing happens
sena_kun matze_, you don't want to use that, I think. 17:09
matze_ ok, whats the best way to debug/change a module?
sena_kun matze_, you want to 1)have a repo locally; 2)use it with `perl6 -I../my-long-path-to-repo/lib foo.p6`.
matze_ mhm ill try it 17:10
sena_kun that is, I think. if you plan to push changes to upstream, all the more reasons for making a fork and cloning it.
matze_ but .. anyway..why has a change to the SHA1ed link no effect? 17:11
sena_kun well, zef uses some smart things internally, Perl 6 does precompilation and stuff you (very likely) don't want to mess with. I don't know exact reason, but I know it is adviced that zef manages, not a user. well, it's package manager approach, anyway. 17:13
*advised
*zef manages modules
jnthn matze_: Because when modules are installed, they are compiled, and the compilation form is always used. This avoids having to do time/content checks etc. 17:14
matze_: Also, because we considered installed modules immutable per version/auth
What sena_kun suggested is the correct way: check out the module source and -I... it. The -Ifoo will always win over anything installed, and the latest files on disk will always be treated as authoritative. 17:15
ufobat i've "fixed" perl5 modules live on production 17:15
i will probably end in hell for this
matze_ ahh..thx jnthn!
AlexDaniel .seen dwarring 17:16
yoleaux I saw dwarring 3 Aug 2018 19:34Z in #perl6: * dwarring HTML::Canvas really is bit-rotted
matze_ perl6 -I /usr/home/git/cro-http/lib/Cro/HTTP/ czds.pl .. like that? 17:25
sena_kun matze_, just cro-http/lib is sufficient 17:26
names like `Cro::HTTP::` will be resolved relatively against that. 17:27
matze_ because of the :: in the "use" clause right?
sena_kun `perl6 -I/usr/home/git/cro-http/lib czds.pl`
matze_, ^
lucasb ufobat, AlexDaniel: Seems like HTTP::Server::Ogre stills fails with "Cannot have a 'whenever' block outside the scope of a 'supply' or 'react' block" even with "use v6.c" 17:29
Woodi hi :) 17:30
nice reading about Waterfall methodology :) beza1e1.tuxen.de/waterfall.html
AlexDaniel lucasb: uhhh
lucasb: was there a ticket? 17:31
Woodi and orginal paper described: www-scf.usc.edu/~csci201/lectures/L...ce1970.pdf
it was always strange to me that perl used tests in 90's :) 17:32
ufobat lucasb, meh :-( 17:33
lucasb AlexDaniel: github.com/ufobat/HTTP-Server-Ogre/issues/3
AlexDaniel lucasb: are you sure that you have the latest version of the module? 17:35
it passes for me
ufobat: if you bump the version the issue will go away for users who already have it installed
lucasb what! it passed now :) 17:37
lucasb it failed an hour ago. sorry then. and thanks :) 17:37
ufobat i am on version bumping mission right now, will do it for ogre :)
in a few hours,
AlexDaniel Juerd: was it you who reported this? github.com/rakudo/rakudo/issues/2537
Juerd: asking because it is now resolved :) 17:39
Juerd AlexDaniel: Yes. That was fast :) 18:38
b2gills masak: I would classify a WhateverCode as a closure: `my &c = do {my $a = 1; * - $a++}; say c 1; say c 2` ← both calls use the current value in `$a` 18:39
Juerd AlexDaniel: Updating to see if the fix is also visible in my test script :) 18:40
tobs` Could someone have a look at this? It prints 2 but I expected 20. hastebin.com/inepadidot.rb
Juerd AlexDaniel: Unfortunately not really :| 18:42
b2gills tobs`: It looks in the class first because it is more specific than the role
tobs` but the class doesn't have a candidate with :tenfold, why C.f electable? 18:43
b2gills Yes it does have a candidate for :tenfold
methods accept any named arguments by default
tobs` mmm, I think I've heard about that before. Do you have any idea then how to realize those kinds of flags from a role? 18:45
masak b2gills: ok, I see what you mean. the WhateverCode is the `* - $a++` expression at the end; it's a closure. 18:46
leont Whomever wrote today's advent article: using «dpkg -i $file» is usually a bad idea, as it doesn't install dependencies (and I would be surprised if rakudo didn't have any)
The better way to do that is «apt install ./$file»
masak b2gills: I guess my counterargument isn't that that's _wrong_, it's that it's nothing new -- a WhateverCode is just sugar for writing it out as a normal parameterized block 18:47
b2gills tobs`: you could make sure that `C.f` doesn't get a `:tenfold` argument: `multi method f (Int $x, *% where {.<tenfold>:!exists}) { $x / 5 }` 18:51
As a generalization, if you don't want any unused named arguments in a method `multi method foo ( *% () ){}` 18:53
buggable New CPAN upload: Bailador-0.0.17.tar.gz by UFOBAT modules.perl6.org/dist/Bailador:cpan:UFOBAT
tobs` oho! thanks. Maybe I should instead just rename C.f to C!f or C._f. The role here is meant to provide all the interface sugar. 18:56
sena_kun m: Str.new(value => 'hehe'); Int.new(1); say Str.new('hehe'); 19:21
camelia Default constructor for 'Str' only takes named arguments
in block <unit> at <tmp> line 1
sena_kun m: Str.new(value => 'hehe'); Int.new(1);
camelia ( no output )
sena_kun is there a reason why Str is special? 19:22
Juerd AlexDaniel: Ignore my last remarks, apparently I'm not running the latest :) 19:25
Juerd AlexDaniel: Although *with* the commit it's still as slow. Maybe a bit slower even. I'll try to see if I can find a few hours to dig into this and bisect it 19:43
Xliff What's the best way to force use of native numbers in mathematical computations? 20:18
timotimo Xliff: you mean num or int? 20:43
Xliff Both
timotimo for one, you'll use "my int $foo" and "my num $foo" 20:44
it could still be that it boxes and unboxes in some places
Xliff OK. Doing that, so this slowdown must me something else.
timotimo: Would you mind doing some tests for me?
timotimo yeah, i guess?
Xliff :)
clone the following: github.com/Xliff/cairo-p6.git and github.com/Xliff/p6-Pango.git 20:45
There is an example in the second project called t/02-twisted.t
It takes a LONG time to run.
Let me get the C counterpart and post it for you. 20:46
timotimo did you look at the profile yet?
Xliff gist.github.com/Xliff/9161d754ea51...2722fbf9a8 <- C equivalent.
Oh, how do I profile?
(plus, the example is buggered, so...)
timotimo --profile
Xliff OK. Will do now. 20:47
This is going to eat my RAM, isn't it?
:)
timotimo a little
in some cases a lot
b2gills sena_kun: Actually it is Int.new() that is special because it takes a positional argument. 20:48
Xliff 4M .html file! O_o 20:49
timotimo yeah, that's on the lower end
what's a good output filename? foo.svg or foo.png or what? 20:50
Xliff twisted.png
timotimo that is ... really rather fast 20:51
but there should be text?
Xliff Yes. That's the buggered part.
timotimo i gotta go make dinner now, though
Xliff OK. Play with it and let me know if you can find the bug! :) 20:52
Enjoy dinner!
timotimo i thought this was about performance :)
Xliff Oh, it is! 20:53
sena_kun b2gills, hmm, it may be. I mean, Buf, Array and so on take positional too. But those are not "primitive" one may argue, also Pair, Rational, Bool.new(0)(well, enum case)... It seem to me quite common, so from this perspective it's Str that is odd. :S
Xliff I'll be happy with insight on either one.
But feed yourself! :)
lucasb sena_kun: I agree. I would expect Str.new($str) to create a copy of $str. "$s2 = Str($s1)" already does that 20:55
can't see any reason why not :)
I may be mistaken. Assignment create copies "$s1 = $s2", but I'm not sure the return of Str($str) isn't $str itself 21:03
m: my $str = 'foo'; say $str =:= Str($str) # maybe this is a resonable test? :) 21:04
camelia False
timotimo Xliff: i don't actually have the opportunity to play with the program, but i can tell you that finding "Num" or "Int" in the Allocations tab in the profiler lets you find out what boxes native numbers into objects 22:52
Xliff: if you go and get the fancy moarperf tool (on my github) you'll be able to see more clearly where they come from, because then you'll not just see "the + operator boxed in int" but "the + operator called from these functions boxed an int:"
Xliff Int 10309763 22:54
So getting that number down will speed up things? 22:55
timotimo very possible indeed
Xliff Unfortunately 491742 come from an anon block with no line number.
timotimo what do i have to do so that it takes less than a thousandth of a second? :) 22:56
more than*
Xliff Num
7354373
I take it binding might help in some cases? 22:57
timotimo: At any rate, thanks for the help. Once I get this working I think the latest PR will be good for merging. 22:59
Xliff Please comment if you see something you don't like. 23:00
timotimo you're quite welcome 23:01
i'm really glad you're working on pango and the other GTK stuff as well, even though you're suffering from its dramatic slowness ATM :(
Xliff Another thing, can you assign native values to a hash, or are those boxed?
timotimo they are boxed
Xliff OK.
I will get things working before I try to optimize those out. 23:02
Actually, much of the GTK code works surprisingly well!
It's just coming up with the test cases that's an issue. That and transliterating C to P6 in a way that works.
timotimo yeah that's always fun 23:04
Xliff :)
If you could take a look at the PR and note your thoughts, that would be a big help. I know you are busy, tho. 23:05
Almost 100kloc in between Pango and GTKPlus... :) o_O %-) 23:06