»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
00:00 zwut00 left
skids there's q「 00:00
00:08 cognominal left 00:09 cognominal joined 00:14 Psyche^ left 00:15 prevost joined 00:17 Psyche^ joined
flussence huh, I was looking for a list of set operators just a while ago too 00:19
yeah, there doesn't seem to be a good list anywhere. I had to look at the rakudo source to figure it out
TimToady if someone wants to document what we've got, that'd be much appreciated 00:23
timotimo hey TimToady, you're attentive? does "nodal" make sense if the hyper gets applied to an Associative? 00:24
rather than an Iterable, that is
TimToady if something is not iterable, hyper makes no sense on it; however, hashes are iterable, not just associative 00:28
now, race might make sense on non-iterables, as long as there's any kind of divide-and-conquer interface 00:29
timotimo hm. there's a candidate for hyper on Associative in rakudo at least 00:30
(it blew up because i was recurring into hyper passing along a nodal_p that's supposed to decide wether to treat one element as nodal or not)
dalek ast: 3593e2d | (David Warring)++ | S05-mass/charsets.t:
tidies
00:44
ecza: 51dda4b | coke++ | t/spectest.data:
Run tests that pass or are pre-fudged
00:53
00:58 pernatiy joined 01:32 kbaker left 01:38 prevost_ joined 01:39 benabik left 01:43 benabik joined 01:58 btyler left 01:59 EvanTeitelman left 02:05 prevost_ left 02:10 BitPuffin joined 02:11 berekuk joined 02:13 berekuk_ left 02:27 araujo left, araujo joined, araujo left, araujo joined, Bzek left 02:30 Bzek joined 02:41 ghena1986 joined, ghena1986 left 03:07 thou left 03:16 preflex_ joined, ChanServ sets mode: +v preflex_, preflex left, preflex_ is now known as preflex, abnorman left 03:19 ssutch left 03:21 pupoque joined
BenGoldberg rpn: say pi 03:27
camelia rakudo 5a8c53: OUTPUT«3.14159265358979␤»
..pugs: OUTPUT«3.141592653589793␤»
..niecza v24-95-ga6d4c5f: OUTPUT«3.1415926535897931␤»
BenGoldberg rpn: say pi.sin 03:28
camelia rakudo 5a8c53: OUTPUT«1.22460635382238e-16␤»
..pugs: OUTPUT«1.2246063538223773e-16␤»
..niecza v24-95-ga6d4c5f: OUTPUT«1.2246063538223773E-16␤»
BenGoldberg rpn: pi.tan.say 03:30
camelia niecza v24-95-ga6d4c5f: OUTPUT«-1.2246063538223773E-16␤»
..pugs: OUTPUT«-1.2246063538223773e-16␤»
..rakudo 5a8c53: OUTPUT«-1.22460635382238e-16␤»
BenGoldberg rpn say pi.sin-pi.tan 03:31
rpn: say pi.sin-pi.tan
camelia niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Unable to resolve method sin-pi in type Num␤ at /tmp/YhDHQ8U9Bz line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4584 (module-CORE @ 576) ␤ at /home…
..rakudo 5a8c53: OUTPUT«No such method 'sin-pi' for invocant of type 'Num'␤ in block at /tmp/U1wW0La7of:1␤␤»
..pugs: OUTPUT«*** No such method in class Rat: "&sin-pi"␤ at /tmp/sE4cmjHN6u line 1, column 5 - line 2, column 1␤»
BenGoldberg rpn: say (pi.sin)-(pi.tan)
camelia rakudo 5a8c53: OUTPUT«2.44921270764475e-16␤»
..pugs: OUTPUT«2.4492127076447545e-16␤»
..niecza v24-95-ga6d4c5f: OUTPUT«2.4492127076447545E-16␤»
BenGoldberg rpn: say (pi.sin)+(pi.tan) 03:32
camelia rakudo 5a8c53, niecza v24-95-ga6d4c5f, pugs: OUTPUT«0␤»
03:33 raiph left 03:36 raiph joined 03:37 btyler joined 03:39 prevost left 03:43 avuserow joined 03:46 btyler left 03:58 fridim_ left 04:10 xenoterracide left 04:21 xenoterracide joined 04:27 pupoque left
dalek ast: 9cd0478 | (David Warring)++ | S05-metachars/newline.t:
unfudged for rakudo.jvm
04:29
04:38 BenGoldberg left 05:02 xenoterracide left 05:41 SamuraiJack joined
cognominal I discovered elm a few days ago elm-lang.org/ I did not know Functional Reactive programming. I wish Perl 6 will support that style. elm-lang.org/edit/examples/Reactive/Position.elm 05:46
I don't mean elm syntax (haskell like) but the FRP style.
05:57 ssutch joined
cognominal thru coursera, I will take Odersky course on FRP. I will see how it compares to elm :) 05:58
06:02 domidumont joined 06:06 domidumont left 06:07 xinming_ left, domidumont joined 06:08 xinming joined 06:09 sorear left 06:11 FROGGS joined, DarthGandalf left, frdmn left 06:13 sorear joined
dalek kudo/nom: 1915fc5 | (Elizabeth Mattijsen)++ | src/core/Setty.pm:
Remove P5 thinko, spotted by BenGoldberg++

This reverts commit 437e799c0ff5db7084ce7032fda7663bf8323a84.
06:15
06:16 DarthGandalf joined
lizmat r: my @a=1..5; say "bar" if @a.grep( {say "foo"; $_} ) # BenGoldberg++ 06:17
camelia rakudo 5a8c53: OUTPUT«foo␤bar␤»
lizmat breakfast& 06:18
06:19 bbkr_ left
FROGGS o/ 06:20
06:20 bbkr_ joined 06:24 domidumont left 06:32 frdmn joined 06:43 denis_boyun joined 06:45 kaleem joined 06:47 aindilis left, aindilis joined
diakopter . 06:52
yoleaux 06:21Z <FROGGS> diakopter: Wut? irclog.perlgeek.de/moarvm/2013-09-09#i_7563809
06:53 domidumont joined 07:06 dmol joined 07:08 SamuraiJack_ joined 07:09 zakharyas joined 07:12 SamuraiJack left
mathw o/ 07:13
FROGGS hi mathw
mathw hi froggs 07:15
07:23 cognominal left 07:25 cognominal joined 07:34 donaldh joined 07:38 denis_boyun left 07:42 sidus joined
arnsholt Aw, crap. Work Java is too old to build NQP/JVM =( 07:52
mathw aaaw 07:53
07:54 raiph left 07:55 pupoque joined 08:13 dakkar joined
dalek kudo/nom: ddfaa61 | (Elizabeth Mattijsen)++ | src/core/Baggy.pm:
Re-implement (<+)
08:27
ast: 5abb9eb | (Elizabeth Mattijsen)++ | S03-operators/bag.t:
Unfudge 9, fudge 8 (for now) because of test corruption
08:30
08:35 nebuchadnezzar left, nebuchadnezzar joined 08:38 donaldh left
dalek rlito: 1f23d35 | (Flavio S. Glock)++ | / (3 files):
Perlito5 - js - code cleanup
08:38
08:43 Mouq left 08:50 dayangkun joined 09:02 daxim joined 09:05 sqirrel joined, preflex_ joined, ChanServ sets mode: +v preflex_ 09:11 preflex left, aindilis left, bbkr_ left, REPLeffect left, _ilbot left, sjohnson left, Vlavv left, slavik left, bruges left, GlitchMr left, TimToady left, odoacre left, awwaiid left, BabsSeed left, alexghacker left, ribasushi left, sergot left, nwc10 left, lestrrat left, rom1504 left, sorear left, araujo left, bakedb left, jercos left, pecastro left, mtk left, PZt left, Celelibi left, felher left, Yappo__________ left, pjcj left, avar left, Hor|zon left, jtpalmer left, mls left, ivan`` left, krunen_ left, p5eval left, jnthn left, moritz left, c1sung left, ssutch left, Bzek left, benabik left, BitPuffin left, genehack left, Woodi left, japhb left, dalek left, sunnavy left, BooK left, groky left, crazedpsyc left, cibs left 09:12 pochi_ joined 09:14 preflex_ is now known as preflex, pochi left 09:17 ssutch joined, Bzek joined, BitPuffin joined, benabik joined, genehack joined, Woodi joined, japhb joined, dalek joined, sunnavy joined, BooK joined, groky joined, crazedpsyc joined, hitchcock.freenode.net sets mode: +v dalek, simcop2387 left, crazedpsyc left, crazed- joined 09:19 crazed- is now known as crazedpsyc 09:20 aindilis joined, bbkr_ joined, sorear joined, araujo joined, REPLeffect joined, rom1504 joined, lestrrat joined, nwc10 joined, sergot joined, ribasushi joined, alexghacker joined, BabsSeed joined, awwaiid joined, odoacre joined, TimToady joined, GlitchMr joined, bruges joined, slavik joined, Vlavv joined, sjohnson joined, _ilbot joined, mls joined, jtpalmer joined, Hor|zon joined, avar joined, pjcj joined, Yappo__________ joined, felher joined, Celelibi joined, PZt joined, mtk joined, pecastro joined, jercos joined, bakedb joined, c1sung joined, moritz joined, jnthn joined, p5eval joined, krunen_ joined, ivan`` joined, cibs joined, sqirrel left, simcop2387 joined 09:21 simcop2387 left, simcop2387 joined 09:24 xinming left 09:25 xinming joined, fhelmberger joined 09:31 qiyong joined
qiyong does p6 have CPAN or similar thing? 09:31
tadzik somewhat similar thing, yes 09:32
modules.perl6.org/
qiyong p5/p6 has to use external modules to do things like send mails, right? 09:34
FROGGS qiyong: there is nothing built in AFAIK, yes 09:36
qiyong FROGGS: cpans are written in perl?
FROGGS qiyong: modules are written in perl 09:37
cpan is just a network that makes them available
qiyong FROGGS: is cpan perl offical? or loossily like sf.net? 09:38
FROGGS qiyong: CPAN is the official module distribution ecosystem for Perl 5
JimmyZ qiyong: offical sf
qiyong JimmyZ: ? 09:39
JimmyZ 你好
FROGGS everyone can register as an author an release modules
qiyong FROGGS: anyone can upload modules?
JimmyZ 是的 09:40
FROGGS yes, if the module name is available
but if you want to upload a module Foo that somebody else "owns", you won't be able to do so
qiyong FROGGS: the same as sf.net?
FROGGS qiyong: I think CPAN is a bit stricter 09:41
qiyong what if trojans are included?
FROGGS bad luck
qiyong does perl have any standard libary/modules to trust? 09:42
FROGGS but there are people who monitor the recently uploaded modules, so there is some sort of moderation
JimmyZ qiyong: You may want to ask it in #perl5
or #perl 09:43
or #cpan
09:44 dmol left
qiyong FROGGS: "use foo"; where foo must come from CPAN or modules.p6 09:47
perl binary package doesn't ship anything you can 'use'?
moritz currently rakudo ships two packages, Test and lib
and R* ships more modules
and Rakudo Star (short R*) is made by the same people as Rakudo 09:48
qiyong so p6 is different than p5 here
moritz so if you trust us, you can trust R*
qiyong: only gradually
qiyong p5 doesn't include any modules, p6 begin to ship modules
moritz qiyong: huh? p5 comes with lots of core modules 09:49
JimmyZ at leaest it contains 'use strict'
strict.pm 09:50
FROGGS Test::Util and many many others
qiyong moritz: is it strict.pm or a meta package?
FROGGS err
List::Util
moritz qiyong: I cannot parse that question
and I don't know what a "meta package" is either
JimmyZ s/or//
qiyong dpkg -L perl | grep pm | wc -l 09:51
87
dalek rlito: 0f008b0 | (Flavio S. Glock)++ | / (6 files):
Perlito5 - js - fix caller(), typeglob-reference assignment, grep; added minimal Carp module
moritz dpkg -L perl-modules | grep pm | wc -l
498
FROGGS qiyong: now you are talking about modules packages by debian
moritz qiyong: debian packages many core modules in the package 'perl-modules'
$ corelist /./|grep '\S'|wc -l 09:52
746
qiyong moritz: is perl-modules part of perl or CPAN?
moritz qiyong: perl
FROGGS (where "perl" is Perl 5)
qiyong i see, so perl5/6 has always bee shiping core modules 09:54
been*
FROGGS yes
dalek rlito: 2d0e5ef | (Flavio S. Glock)++ | / (2 files):
Perlito5 - perl5 - typeglob fix
09:55
FROGGS even if it would just be Test.pm and lib.pm for the rakudo Perl 6 compiler release
dalek rlito: 61913e4 | (Flavio S. Glock)++ | src5/lib/Perlito5/Carp.pm:
Perlito5 - js - added minimal Carp module
FROGGS and about 200 additional modules for the rakudo Star release
qiyong is p6 faster than p5? 09:58
FROGGS usually not
qiyong iw p6 compiled like python's .pyc file?
p6 is slower? regression?
tadzik p6 is a languages
a language *
FROGGS I don't know what a .pyc file is, sorry
tadzik not an implementation 09:59
.pyc is what .pbc or .pir or .class is, basically
a precompiled module
FROGGS rakudo-perl6 is usually slower as perl5, to say it correct
qiyong is p6 compiled like java/python byte code?
moritz qiyong: Rakudo supports precompiling of modules
qiyong will p6 be faster in future?
FROGGS faster as it is now or faster as perl 5? 10:00
qiyong moritz: precompiled into elf possible?
as fast as p5 at least
tadzik qiyong: are you operating on an assumption that elf will be faster?
FROGGS we will see
nobody can tell whether it will outperform perl 5 some day
or not 10:01
tadzik magic 8 ball can
it says "Absolutely"
FROGGS *g*
tadzik it's settled then
FROGGS good to know :o)
qiyong tadzik: elf is only easier to distribute 10:02
Ulti a better goal is to outperform perl5 when using Moose and every other layer of candy people now use when writing Perl5
qiyong why p6 is implemented as virtual machine? 10:03
is that the future?
Ulti its the past
FROGGS qiyong: and vm-specific bytecode is easier to distribute that elf, since I can run the same bytecode on windows/linux/unix/bsd/mac/android/whereever 10:04
lunch &
tadzik qiyong: because it makes more sense that way 10:05
qiyong FROGGS: platform independancy is the reason?
moritz not the only one 10:06
qiyong tadzik: such as?
moritz: a major one?
moritz the main reason is that Perl 6 code needs a runtime
like garbage collector, just-in-time compiler, and lots of other infrastructure
qiyong why not implement runtime as p5?
moritz and where do you put that? in a VM!
qiyong does p5 support JIV? 10:07
moritz qiyong: p5 also has a VM internally, it's just not separated from the compiler and other parts as cleanly as in Perl 6
qiyong so p6 is going the way java has had
tadzik and python
and perl 5
and ruby
and basically everything these days
it makes more sense for a HLL
qiyong moritz: since what version? p4 or older?
tadzik high level language 10:08
moritz qiyong: since version 1 at least
qiyong so dynamic lanauge implementation needs a vm design
moritz the lesson is that if a dynamic language doesn't have a designed vm, it has an ad-hoc vm 10:09
qiyong so p6, python has a clean vm
p5 has an ad-hoc, possibly ruby too 10:10
java has clean vm too
10:11 BitPuffin_ joined
qiyong confirm me? 10:13
moritz confirmed.
qiyong thanks
is vm+runtime design more complex than traditional language's (c, pascal)? 10:14
or simpler
clang is vm based
moritz no, it's not
it's based on llvm
10:15 BitPuffin left
moritz which is much more low-level than "normal" VMs such as java 10:15
qiyong llvm is deferent from vm here?
i see
tadzik llvm is not a VM in terms of a runtime
it's an artificial instruction set
moritz right
tadzik but it doesn't "run code"
in the same way your operating system provides a VM 10:16
you don't talk to hardware directly, you talk to the OS
qiyong is it intermidiate code?
tadzik in that sense, OS gives you a VM to code for
what is, llvm coed?
qiyong is vm big software?
is llvm intermidiate code? 10:17
tadzik llvm is intermediate code, yes
VMs can be big
they usually end up quite big
qiyong so clang/llvm has nothing new to gcc
tadzik oh, yes it does
qiyong so p6 developer have to be familar with vm, right? 10:18
tadzik not really
writing code in perl 6 you usually don't have to touch the VM 10:19
qiyong p6 core developers
tadzik (not directly)
Perl 6 is mostly written in Perl 6
qiyong p6 itself developers
tadzik unless you go low level, you can usually skip the VM details
yes, I'm talking about P6 itself
qiyong how much percent of the vm code totally?
tadzik github.com/rakudo/rakudo, look at language statistics 10:20
76.4% Perl, it says
moritz qiyong: hard to tell; rakudo has multiple backends, and I'm pretty sure that the JVM has more lines of code than parrot
qiyong backends are vms? 10:22
rakudo = front + backend vm? 10:23
hoelzro Rakudo is a Perl 6 compiler that targets multiple VMs
namely, Parrot, the JVM, and MoarVM
(at the moment)
moritz qiyong: a backend is (code generation for a VM + the VM)
qiyong (compiler + vm) 10:24
that's
how many p6 compilers?
moritz compiler = frontend + backend + interactions between them
2, currently 10:25
tadzik 2 that we know of :>
moritz unless you count perlito, which doesn't aim to be feature complete
then 3
tadzik and pugs
qiyong why p6 devleopment is so different from othere (python, ruby), multi compilers, multi vms? 10:26
moritz because p6 is so different
10:26 dayangkun left
moritz it's so different that there are many areas that haven't previously been explored by compiler writers 10:26
so there are multiple compilers that approach the problem from different angles 10:27
qiyong like *BSDs 10:28
not sure if it's development split
so this chan for using p6 or developing p6? 10:29
moritz both
qiyong so i can learn vm here? 10:30
parrot
tadzik #parrot on irc.perl.org is probably better for that 10:31
qiyong and for compiler go to #rakkuo?
tadzik no, rakudo development happens here
qiyong gtg
10:32 qiyong left, xenoterracide joined, denis_boyun joined 10:37 stevan_ left, stevan_ joined
jnthn man, that lunch was -Ocarbcrash... 10:37
10:51 Mouq joined 10:53 lichtkind joined 10:55 Mouq left 10:58 dmol joined 11:11 dakkar left 11:15 bloonix left, dakkar joined 11:19 thou joined 11:22 ssutch left 11:31 thou left
timotimo jnthn: in germany there's a frozen pizza you can get that has little noodles on it 11:33
daxim ewww 11:34
timotimo it's super tasty, tbh
colomon there's a place in my wife's old college town that makes fantastic spaghetti pizzas. 11:35
11:37 pernatiy left
colomon www.foodspotting.com/reviews/712765 # there's a white sauce version, too 11:37
just in case your diet didn't have enough carbs
11:38 benabik left
timotimo i guess "white sauce" means cheese? 11:41
daxim sauce carbonara 11:42
timotimo oh my 11:43
it's gotta be pretty bad if the sauce name even has "carb" in it 11:45
11:45 Woodi left
hoelzro haha 11:46
moritz makes you carp()
11:52 Woodi joined 11:59 pmurias joined
pmurias FROGGS: there are people who monitor newly uploaded perl5 modules for trojans? 12:02
12:02 xinming left 12:03 xinming joined, sqirrel joined
lizmat pmurias: yes, and not only for trojans for that matter :) 12:05
moritz just for new distributions, or also for new versions of distributions? 12:07
lizmat afaik, all uploads 12:08
and if I tell you more, I will have to silence you :-) 12:09
12:09 sitaktif left
lizmat TimToady, colomon: looking for the spec on .KeySet coercers 12:09
Currently the .KeySet coercer on KeySet objects returns self
this caused a hard to chase bug with e.g. (&) if the first parameter was a KeySet 12:10
colomon there is no spec for that as far as I know
errr… why?
lizmat my $keybag = @p ?? @p.shift.KeyBag !! KeyBag.new; 12:11
if the first element was a keybag, than it would use that
thus causing the KeyBag being checked to be changed
same for KeySet: my $keyset = @p ?? @p.shift.KeySet !! KeySet.new; 12:12
well, if there is no spec, I can do what I want :-)
colomon …. ideally you'd do something sensible. 12:13
lizmat yes,...
how does this sound:
method KeySet (:$clone) { $clone ?? KeySet.new(self.keys) !! self }
Fatalnix something sensible 12:14
like destroy all pylons!
colomon lizmat: I guess I'm still not seeing why?
lizmat because the $keybag I created, is the result to be, and therefore changes 12:15
colomon Consulting with TimToady on what coercers should do when called on mutable objects would be a Good Idea 12:16
certainly I have always expected them to return self
You'll notice, for instance, how I handled the case of wanting a different KeyBag in KeyBag.pick 12:17
12:17 PZt left
lizmat yup 12:18
timotimo i was under the impression that cloning would be the default and re-use would be optional if you know what you're doing; shouldn't the named parameter be flipped in that case?
or am i conflating this with the use case you had for creating bags etc from hashes temporarily?
lizmat am not sure... 12:19
timotimo oh huh, method KeySet? i don't think that was what i was thinking about
lizmat let's see how this works out… it's easy enough to change since it is all internal in the settings anyway
timotimo carry on, then :)
12:20 pernatiy joined
colomon lizmat: also, why (&)? are you making KeySet-specific versions of the Set operators? 12:22
lizmat eh, that was in your code /
?
colomon ?????
lizmat what do you mean exactly ? 12:23
which code ?
12:24 sqirrel left
colomon (&) returns a Set or a Bag. Never a KeySet or a KeyBag 12:25
lizmat but it returns a Set or Bag!
at the end: $keybag.Bag(:view);
and: $keyset.Set(:view);
colomon that would be your code, not mine 12:26
lizmat yes, it is indeed
colomon I don't even know what :view means
lizmat I misunderstood your question
it's an experiment: at this moment it creates a Bag from a KeyBag with the same underlying Hash 12:27
so nothing needs to be copied
same with Set from KeySet
I re-implemented Setty / Baggy using the idea of typed hashes 12:28
in Setty, the key of the underlying hash is the .WHICH of the key, and the value is the key unchanged
in Baggy, the key is also the .WHICH of the key, and the value is a pair with the original key and count as the vaue 12:29
value
that was the only way to get a set unflattend/ unstringified into another set
am I making sense ? 12:32
colomon I understand using WHICH. I don't understand how it relates to the issue at hand at all. 12:33
12:33 skids left
lizmat in the case of (&), we want the keys that exist in all sets/bags, right ? 12:33
colomon right 12:34
lizmat so I take the first of the parameters passed, and turn that into a KeyBag/KeySet to work with
colomon and that's the jump I don't understand
lizmat if I use a hash, I would have to use a typed hash
and that doesn't work inside the settings (serialization cannot cope with that somehow) 12:35
therefore I would use a KeyBag (if there were any baggys) or a KeySet (if there were no baggys)
12:37 benabik joined, thou joined
colomon why not explicitly create a fresh KeySet / KeyBag for the results, then? 12:38
dalek kudo/nom: 9b95a42 | (Elizabeth Mattijsen)++ | src/core/ (3 files):
Fix issue with (&) if the first parameter was a KeySet or KeyBag
lizmat because I use the keys in that KeySet/KeyBag to loop over to see if the exist in the other coerced Sets/Bags
it's like the seed I work from
gist.github.com/lizmat/6508859 the actual code now 12:40
line 5 sets up the KeyBag to work with, from the first parameter 12:41
lines 6-11 loop over all other parameters as bags, removing keys from the work keybag that don't exist 12:42
line 7 turns the work keybag into an immutable bag and returns that 12:43
similar for sets in 15-19
dalek ast: 7ff98f4 | (Elizabeth Mattijsen)++ | S03-operators/bag.t:
Unfudge now passing tests
12:47
12:50 pupoque left 12:51 tonttuperse joined 12:52 tonttuperse left 12:53 kbaker joined
timotimo .o(i wonder if you should sort the bags by element count and use the smallest one for the loop) 12:55
FROGGS you can even take a rucksack if the element count is small enough 12:56
timotimo in the most extreme of cases, a handbag could even work 12:57
or a purse
jnthn Or just stick the stuff in your pocket
lizmat timotimo: yes, I was considering ordering 12:58
but then I would have to coerce everything into something Baggy / Setty already
colomon lizmat: I appreciate that you're trying to make the code efficient, but I'm uncomfortable with adding a bunch of named parameters to the coercers to help that goal. 12:59
timotimo oh, that's right, because the number of elements is only the upper bound of the number of unique elements
colomon 's mind is having an internal war between elegance and optimization
lizmat those I consider all experimental
and can go at any time
actually, I think the :view parameter indicates a need for something more general
colomon much like my mind (can go at any time, it's not, so far as I know, experimental) 13:00
jnthn Well, evolution is kinda a huge experiment... :)
lizmat rather than coerce things into other things, I would rather see a Baggy "view" on other things
colomon jnthn: only if there is an experimenter behind it. ;)
timotimo haha, i just saw someone take a picture of the lightning talks with a huge tablet, that's so funny looking :D
jnthn :view args on the coercer feel odd to me, to throw in my 2 sense 13:01
lizmat because for all of these operators, what one really only needs is the appropriate at_key method to call
jnthn uh, cents...
timotimo: Yes, I've never been able to not find taking a photo with a tablet amusing :)
colomon lizmat: I'm pretty sure I do understand your reasoning now. ;) 13:02
lizmat if we say, that a coercer on a mutable object should always return a cloned object, that's fine by me
jnthn lizmat: I( think we start out that way, and maybe in the future we make a cow mechanism... 13:03
lizmat we don't need :clone
colomon My thought was it should never return a cloned object; getting around that limitation will only take like ten additional characters.
but I may be wrong about never returning a cloned object. 13:04
I don't think that's an area of the spec we've explored much...
jnthn hmm
lizmat in most modern databases, there are things called views
jnthn r: my @a; say @a.List.WHAT
camelia rakudo ddfaa6: OUTPUT«No such method 'List' for invocant of type 'Array'␤ in block at /tmp/FXA26c6MGq:1␤␤»
lizmat I think even DBIx::Class has them, even if the db doesn't support them
jnthn meh, we can't just steal that answer :P
colomon lizmat: I'm actually reminded of the great sequence operator trick of pmichaud++ 13:05
we had been struggling mightily to get the sequence operator working up to spec.
the code was starting to look ludicrous, and it still didn't work.
and pmichaud was like, give that to me, I can make the code much better. 13:06
13:07 Bzek left
colomon and I was put out by that, because we'd been working hard it on, and it wasn't obvious (to me) how he could improve it. 13:07
and he looked at the code for, I don't know, a day or so.
and then told TimToady the spec for the sequence operator had to be simplified, because it was too hard to implement.
and a day or two later, he had a complete implementation of the new sequence operator. 13:08
lizmat hehe...
colomon which was drastically simpler than the code we had, I should add.
lizmat why does this feel like the Kobayashi Maru, with pmichaud in the role of JTK 13:09
13:09 Bzek joined
lizmat :-) 13:09
FROGGS hehe
colomon the spec was a big improvement, too; what it lost in magic it gained in sanity. it was a win all around.
FROGGS lizmat++
jnthn r: say KeySet ~~ Set 13:10
camelia rakudo ddfaa6: OUTPUT«False␤»
jnthn r: say Set.^mro
camelia rakudo ddfaa6: OUTPUT«(Set) (Any) (Mu)␤»
lizmat r: sau KeySet ~~ Setty
jnthn r: say KeySet.^mro
camelia rakudo ddfaa6: OUTPUT«===SORRY!=== Error while compiling /tmp/9MXJDESkwl␤Undeclared routine:␤ sau used at line 1. Did you mean '&say'?␤␤»
rakudo ddfaa6: OUTPUT«(KeySet) (Any) (Mu)␤»
lizmat r: say KeySet ~~ Setty
camelia rakudo ddfaa6: OUTPUT«True␤» 13:11
lizmat Setty is the role
jnthn r: say Setty.at_home
camelia rakudo ddfaa6: OUTPUT«No such method 'at_home' for invocant of type 'Setty'␤ in block at /tmp/iwTfVBk1dk:1␤␤»
jnthn aww!
:)
lizmat KeySet / Set are no longer parent/child
jnthn ok
So simple type stuff doesn't comke into the coercions then
lizmat like?
jnthn I mean, .Setty on a KeySet/Set is identity...
Well, I mean, @array.List should probably just do self. 13:12
lizmat there is no Setty :-)
jnthn As Array ~~ List
lizmat ah, yes
jnthn I was checking if there was a similar argument here
lizmat or maybe not
jnthn But no, there's not inheritance in it. :)
lizmat the thing is:: does a coercer return a mutable object or not
jnthn If you coerce from a mutable type to an immutable one? 13:13
I'd think it'd better not just return self.
Um
lizmat ok, will remove :clone for now
jnthn I mean, it'd better not mutate from the point you make it immutable.
colomon jnthn: right
jnthn You can do it by always cloning
But as I said, we could do a copy-on-write thing too.
Sorry if the cow reference was too opaque :) 13:14
.oO( It's call COW 'cus it helps you cope with mootation... )
lizmat it wasn't, but I think this is part of a larger discussion
with views
jnthn teaching again &
13:15 PacoAir joined
lizmat running some errands& 13:16
colomon lizmat: I wouldn't bother changing :clone until some more people weigh in on the mutable / immutable coercers thing.
13:16 PacoAir left 13:17 PacoAir joined 13:25 lowpro30 joined 13:27 denis_boyun left 13:29 lowpro30 left
dalek kudo/nom: a954307 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Add some more :views
13:30
kudo/nom: afa2a5c | (Elizabeth Mattijsen)++ | src/core/ (3 files):
Make .KeySet/.KeyBag always create a new object
ast: 97bfc53 | (Elizabeth Mattijsen)++ | S03-operators/bag.t:
10 more TODO tests passing
13:32
lizmat removing the :clone feature was easier :-)
timotimo 10 todos passing \o/ 13:33
13:33 poor_soul joined
poor_soul hello, #perl6! 13:34
timotimo hi there
poor_soul i actually got two new question today on zavolaj 13:35
1) do i need to call self.bless inside new 13:36
2) is there a way to bind enums?
13:36 bluescreen10 joined, nyuszika7h left
timotimo what does "bind enums" mean? copy them over from some C header? 13:36
13:37 nyuszika7h joined
poor_soul they are defined in a c header of a library 13:37
are they not available in the symbols?
timotimo i'm not sure, but i think not
poor_soul timotimo: i understand 13:38
timotimo to answer your question about "self.bless", it depends; mostly you'll have some C function that will initialise a struct for you and you can just use that
moritz and often a BUILD submethod is enough 13:39
poor_soul how do i know if i need to call bless or not?
moritz poor_soul: if you write a custom method new which constructs an object, you'll have to call self.bless
timotimo for example the ZMQ message.pm looks like this: class Net::ZMQ::Message is repr('CStruct'); [...] my sub zmq_msg_init(Net::ZMQ::Message --> int) is native('libzmq') { * }; [...] multi submethod BUILD() { my $ret = zmq_msg_init(self); zmq_die() if $ret != 0; }
PerlJam poor_soul: What C stuff are you interfacing with Perl 6? 13:41
timotimo libarchive i think
poor_soul i'm trying to use libarchive, and it has a archive_read_new() which returns a pointer. By what you are saying, i should just return it, is it correct?
PerlJam ah, nice. 13:42
timotimo yeah, your class will be repr('CPointer') and you can use the return value of archive_read_new as your class IIUC
poor_soul easy peasy :) thank you 13:43
13:43 kaleem left
poor_soul btw only classes can be declared 'is repr(CPointer)', not roles? 13:44
arnsholt No, not roles
moritz role are just methods and attributes that are copied into classes, plus a bit of behavior
arnsholt Roles aren't concrete classes that can be instantiated, so it doesn't really make sense for them to have a REPR
moritz so it doesn't make sense to give them a representation
poor_soul but repr(CPointer) is not inherited by a subclass
arnsholt Yeah
poor_soul why is that so? 13:45
arnsholt The REPR is a piece of logic that defines how a particular class is laid out in memory
moritz thinks it wouldn't be bad to inherit the REPR
and in the case of multiple inheritance, it would die if the REPRs of the base classes differ, and you didn't specify one 13:46
timotimo what's the name for the default repr?
poor_soul if a class inherits one which is REPR, it cannot be used in place of the superclass...
arnsholt timotimo: P6opaque
timotimo K
arnsholt Different REPRs doesn't really affect whether it can be used in place of the superclass or not 13:47
The REPR only specifies how attributes are stored and looked up in memory
13:47 sidus left
poor_soul wouldn't it be better if it inherited the REPR and just be constrained to not having additional attributes? 13:47
timotimo the repr may know about how to handle new attributes 13:48
arnsholt It's pretty much only the CPointer REPR that doesn't support attributes 13:50
(There's CArray as well, but that one's not really part of the user-facing API) 13:51
poor_soul you are saying it would be strange if repr(CPointer) was inheritable thanks to this limitation, while the others are not since the REPR cannot be sure of how to place new attributes 13:52
arnsholt You probably don't want to inherit from a class that is CPointer REPRd anyways 13:55
pmurias currently if we have class Foo is repr('CPointer') {...};class Bar is Foo {...}, the repr of Bar is P6opaque?
arnsholt Pretty sure Bar will be P6opaque, yeah
pmurias wouldn't it make more sense to inherit the repr type? 13:56
arnsholt For that particular REPR, yeah. But not for REPRs in general I think
But this is probably more of a jnthn-question =) 13:57
pmurias it seems to more of a TimToady-question
arnsholt Or TimToady, yeah 13:58
13:58 jnap joined
poor_soul star: use NativeCall; class A is repr("CPointer") {}; class B is A {}; say B.REPR 13:58
camelia star 2013.08: OUTPUT«P6opaque␤»
14:00 Ulti left
arnsholt poor_soul: But back to your original question, github.com/arnsholt/Net-ZMQ/blob/m.../Socket.pm is an example of a class using the CPointer REPR 14:02
14:03 benabik left 14:04 raiph joined
poor_soul arnsholt: thanks for the link, a more fleshed out example is always useful 14:05
14:05 sitaktif joined
poor_soul so, the only way to get constants from a library is to create a little add-on library in c which imports the constants and has some functions to return them as values, is it ok? 14:07
timotimo parse the header file and generate a p6 module from it?
poor_soul what if the values change? i would need to rebuild the module 14:08
arnsholt That's one way, or just hard code them in your Perl code: github.com/arnsholt/Net-ZMQ/blob/m...nstants.pm
If the values change, you're screwed either way, usually
poor_soul right, i would have to rebuild either way 14:09
jnthn You'd have to rebuild any C libraries that used the constants too... :) 14:10
On repr(...) being taken by subclasses, yes, that may make sense 14:11
timotimo you could search for the header file in Build.pm and regenerate the constants file if need be
poor_soul still, i would need to write a (partial) C header parser, just to get some enums 14:12
i think i will go the 'hard code them' way
PerlJam poor_soul: I'm mildly surprised someone hasn't already done that given Perl6's affinity for grammars :)
jnthn Plenty of people have mentioned it'd be good to have, though :) 14:13
I've love to but my todo list is already way too long :)
arnsholt Parsing C is a pretty gnarly problem
Especially if you want to parse headers, since that means you need to cope with the preprocessor as well 14:14
jnthn aye, it's fun :)
PerlJam arnsholt: but ... but ... we have Perl 6!!!
jnthn as in evil :)
timotimo nativecall doesn't require a compiler to be available, right?
colomon is desperately cleaning the house in anticipation of company for lunch. 14:15
pmurias to run it shouldn't
colomon as a first pass, just use GCC's preprocessor to handle that part of things.
timotimo right. otherwise one could use the actual preprocessor to do it
pmurias aren't constanst usually #define's in C? 14:16
* constants
timotimo in this case we're interested in an enum, though
poor_soul #define's surely don't appear as symbols in libraries 14:17
but i thought enums were available
pmurias parsing C shouldn't be that hard
14:17 ajr joined 14:18 ajr is now known as Guest57385
arnsholt #defines are used for constants in libraries all over the place 14:18
14:18 Guest57385 is now known as ajr_
arnsholt I'm not sure if C89 has enums 14:18
poor_soul yes, they are used, but this doesn't mean the appear in the .so symbol table
timotimo C89? that's from when i was born. who seriously still uses that!!!!kkk ;)
poor_soul *they
colomon is pretty sure C89 does have enums 14:19
arnsholt #defines don't appear in the symbol table, because they're not actually symbols in C (only in the preprocessor)
timotimo: MS C only supports C89 (with occasional pieces of C99), so C89 is kinda important
colomon timotimo: C89 is from the year I learned C on the job. ;)
arnsholt decommute & 14:20
timotimo arnsholt: sadly not serious
poor_soul arnsholt: yeah i know 14:21
colomon timotimo: incidentally, the job that required the C code was writing a DOS interface to a tape punch machine. 14:22
14:22 btyler joined
PerlJam boggles a little bit that people are questioning if C89 had enums 14:23
14:27 Mouq joined 14:28 benabik joined
timotimo tadzik: your lightning talk was good :) 14:28
diakopter PerlJam: I don't see anyone in the backlog "questioning" 14:29
whether C89 had enums
FROGGS timotimo: linky?
timotimo lizmat: also, your "is perl6 perl" talk was good (ISTR having seen it before already)
one sec 14:30
PerlJam diakopter: <arnsholt> I'm not sure if C89 has enums
close enough for me :)
timotimo youtu.be/ftGwgEUFgbE?t=42m13s - starts with moritz, continues with tadzik, ends with lizmat
diakopter that's simply admitting ignorance
14:30 btyler left
diakopter people aren't allowed to not know things? 14:31
timotimo moritz: your talk was good, too. but you weren't as loud as tadzik ;)
14:31 btyler joined
diakopter he didn't say he had a reason to doubt they appeared by then, just that he didn't know when they appeared 14:31
14:32 Mouq left
lizmat timotimo: :-) 14:32
tadzik timotimo: thank you :)
timotimo still waiting for jnthns parallelism talk to be uploaded 14:33
but i suppose the steady bunch-of-videos-every-day thing is better than all-videos-at-once-half-a-year-later approach
14:33 benabik left
jnthn I hope the video for my parallelism/conc talk will be decent qualit 14:34
I can probably promise I wasn't quiet :P
.oO( Promise indeed... )
timotimo :)
i'm afraid the sound quality will likely be not terribly good 14:35
jnthn Hopefully no worse than other main room ones, though.
timotimo during the devops talk, the camera is quite out of focus, so i can't read the slides at all :(
the main room is the one where lightning talks were held?
jnthn camops fail...
aye
timotimo the audio quality there is perfect 14:36
jnthn that's where I gave my parallllelism talk
wow, keyboard
timotimo oh, cool
at least your slides have high contrast text, that's a very good prerequisite for good recording quality
14:37 BitPuffin_ left 14:40 fhelmberger left
FROGGS tadzik++ # entertaining talk! 14:40
14:41 bluescreen10 left 14:42 bluescreen10 joined
timotimo there's that javascript based template stuff that has a dark blue background with a radial gradient and the text is kind of not very big ... that's much harder to read 14:42
14:42 bluescreen10 left
timotimo though i must admit the text on jnthns slides is probably not that much bigger, if at all 14:42
14:43 bluescreen10 joined, PZt joined
timotimo tadzik: i feel like you should have had a pun in there like "the next step is to get ACT. the step after that is to act!" 14:45
tadzik ah, a wasted opportunity! :) 14:46
moritz :-)
timotimo but there's no sense crying over every mistake
tadzik you just keep on trying till you run out of cake 14:47
timotimo i was hoping there'd be some perl6-related replacement for cake
tadzik funny, that's the first song I learned on the new piano
dalek kudo/nom: 63dca5d | (Elizabeth Mattijsen)++ | src/core/Setty.pm:
Fix set union for Bags and KeyBags
14:50
ast: 905d93e | (Elizabeth Mattijsen)++ | S03-operators/bag.t:
6 more TODO's passing
14:51
14:53 risou_awy is now known as risou 15:01 SamuraiJack__ joined, SamuraiJack_ left
dalek kudo/nom: 51aa2c8 | (Elizabeth Mattijsen)++ | src/core/Baggy.pm:
Fix problem with set multiplication
15:06
ast: 3c5c43c | (Elizabeth Mattijsen)++ | S03-operators/bag.t:
And another 12 TODO's bite the dust
15:07
15:16 sidus joined
dalek ast: 1974651 | (Elizabeth Mattijsen)++ | S03-operators/set.t:
Two more unfudges
15:22
15:29 kaare_ joined 15:31 dmol left
dalek rlito: ce83bf7 | (Flavio S. Glock)++ | / (5 files):
Perlito5 - js - negative-strings; some tests fail
15:33
15:34 slava left 15:36 slava joined 15:37 zakharyas left, sqirrel joined 15:38 FROGGS left 15:40 sqirrel left 15:44 Bzek left 15:46 kivutar joined
dalek kudo/nom: bce4d79 | (Elizabeth Mattijsen)++ | src/core/Setty.pm:
If (-) is chaining, then U+2216 SET MINUS [Sm] (∖) should be also
15:49
15:53 FROGGS[mobile] joined 15:56 skids joined 16:05 domidumont left 16:07 bluescreen10 left, bluescreen10 joined 16:10 bluescreen10 left 16:11 raiph left, teslos joined 16:17 dmol joined, prevost joined 16:18 ajr_ left, ajr joined 16:19 ajr is now known as Guest48443, Guest48443 is now known as ajr_, teslos left 16:26 raiph joined 16:29 kaleem joined 16:32 domidumont joined
lizmat r: my $b=KeyBag.new(<a a a>); say $b (-) <a a a a> 16:33
camelia rakudo bce4d7: OUTPUT«Found negative values for a in Bag␤ in method sink at src/gen/CORE.setting:11557␤ in method BUILDALL at src/gen/CORE.setting:896␤ in method bless at src/gen/CORE.setting:837␤ in method new at src/gen/CORE.setting:822␤ in method new at src/gen/CORE.setting:820␤…
lizmat fixing this now
timotimo ~there is the parallelism talk! 16:34
www.youtube.com/watch?v=wkfvPx1vFwI
16:34 kaleem left
timotimo except that's not the jnthn i remember 16:34
dalek kudo/nom: 233e8c2 | (Elizabeth Mattijsen)++ | src/core/Setty.pm:
Fixing set complement bug if right hand had more foo than left hand
16:35
colomon more foo? 16:38
oooo, bug indeed.
lizmat: roast that baby
16:38 jnap left
jnthn timotimo: um, that doesn't seem to be a link to my talk... 16:40
jnthn don't see his in the Twitter feed yet either... 16:45
lizmat r: say set(1, 2, 3) >>+>> 6 # where would I need to look to fix this ? 16:46
camelia rakudo bce4d7: OUTPUT«("1" => 7, "2" => 7, "3" => 7).hash␤»
lizmat src/core/metaops I presume, but where ? 16:47
16:48 Rotwang joined
lizmat r: say set(1, 2, 3) >>+>> fail # tells me where 16:48
camelia rakudo bce4d7: OUTPUT«No exception handler and no message␤␤current instr.: 'throw' pc 388834 (src/gen/CORE.setting.pir:164584) (src/gen/CORE.setting:10168)␤called from Sub 'sink' pc 424894 (src/gen/CORE.setting.pir:177833) (src/gen/CORE.setting:11557)␤called from Sub 'MAIN' pc 401 (src/…
16:49 jnap joined
lizmat jnthn: adding extra candidates for Setty/Baggy to multi sub hyper(\op, Associative \a, Associative \b, :$dwim-left, :$dwim-right) ?? 16:50
arnsholt jnthn: Any objections to making NQP/JVM "ExceptionHandling.dieInternal(ThreadContext, String)" into "dieInternal(ThreadContext, String, Object...)" and passing the string and objects through String.format? 16:52
lizmat away for an hour or so& 16:54
jnthn arnsholt: Only concern is if we're passing a %foo somewhere already 16:55
arnsholt: Could it be done with an overlord?
arnsholt: uh. overload!
arnsholt Oh, right 16:56
Adding an overload with that signature is of course the right thing
jnthn remembers a really "fun" bug with Parrot exception throwing where a %hash_var in an error got interpreted as an escape :)
('cus forgot it treated it as a format string :)) 16:57
arnsholt Heh. Hilarious, I'm sure =)
jnthn lizmat: Well, that's the multi sub that does >>...<<, yes 16:58
r: say Set ~~ Setty
camelia rakudo bce4d7: OUTPUT«True␤»
jnthn r: say Set ~~ Associative
camelia rakudo bce4d7: OUTPUT«True␤»
jnthn r: say Setty ~~ Associative
camelia rakudo bce4d7: OUTPUT«True␤»
jnthn OK, in theory narrowness analysis will work out right too, then. 16:59
timotimo jnthn: the video was renamed after i linked it 17:01
jnthn timotimo: ah...
timotimo: Just upload name fail I guess hen.
*then
17:09 dakkar left
arnsholt jnthn: In P6OpaqueREPRData.java, shouldn't the unbox slot numbers be longs rather than ints, if we're being pedantic? 17:11
The for loop's loop variable is a long, and we increment an int inside it to number the slots 17:12
17:15 pmurias left 17:19 kivutar left 17:22 risou is now known as risou_awy 17:23 ajr_ left 17:28 ssutch joined
[Coke] n: say "{21697 - 21372} more tests passing today for niecza." 17:30
camelia niecza v24-95-ga6d4c5f: OUTPUT«325 more tests passing today for niecza.␤»
[Coke] (new test files that were already fudged hadn't been added to spectest.data - more coudl be added with a little more fudging.)
timotimo jnthn: i sincerely hope your actual recordings are among the batch that's being uploaded at the moment 17:32
diakopter timotimo: how do you know there is a batch uploading? 17:33
timotimo "58 minutes ago", "1 hour ago", "1 hour ago", "2 hours ago", "5 hours ago" 17:34
diakopter oh
timotimo something's clearly happening
arnsholt *meep* The JVM inlining stuff is scary
TimToady timotimo, colomon, lizmat: S13:131 says you can't rely on coercion to give you either a new object or the old object; the only guarantee is that you get an object of the appropriate type, so if you want a guaranteed different mutable object, you'd better clone, then coerce. 17:38
synopsebot Link: perlcabal.org/syn/S13.html#line_131
jnthn arnsholt: I'm pretty sure we'd hit the limit on the number of fields a JVM class can have before we reach 2**31 fields... :P 17:44
17:45 rindolf joined
arnsholt Troo, troo =D 17:45
timotimo aha!
17:46 jnap left
timotimo there's another video just uploaded with "jonathan worthington" in its title 17:46
www.youtube.com/watch?v=xg8tAv35YFg - maybe for reals this time
17:47 BitPuffin joined
diakopter timotimo: yes 17:49
17:54 denis_boyun joined 17:58 spider-mario joined
arnsholt jnthn: Actually, can we really properly inline complex types on JVM? 18:02
18:02 bluescreen10 joined 18:03 Mouq joined 18:05 daxim left 18:08 Mouq left 18:12 Khisanth joined
TimToady can you properly inline a 2-element array? (assuming we already implemented S09's shaped arrays...) 18:14
18:28 poor_soul left 18:38 jnap joined, rindolf left
colomon TimToady++ 18:38
dalek rlito: 3792772 | (Flavio S. Glock)++ | / (4 files):
Perlito5 - js - negative-strings
18:39
arnsholt TimToady: I'm not even sure if any version of Rakudo handles shaped arrays =) 18:41
18:43 xenoterracide left
lizmat TimToady: so you're saying it is ok for a coerces like KeySet to always create a new object 18:43
coercer
I guess not 18:44
lizmat goes about changing code again
colomon lizmat: he's saying it's okay for .KeySet to always create a new object, but it *isn't* okay for code using .KeySet to assume that it does so. 18:48
lizmat which basically means I need to change the code :-)
colomon :)
I think it's also implying you can *always* assume :view?
skids (and not that it matters at this point in development, but a coder would likely put a redundant .clone before the coercer, which is less efficient.)
lizmat colomon: indeed, good point 18:52
jnthn om nom penang nua... 18:54
arnsholt Mmmm, Thai food
jnthn arnsholt: Kinda..
arnsholt: The problem really is how on earth do you get a reference into the middle of an object... 18:55
(JVM doesn't support it.)
arnsholt Yeah, that's what suddenly struck me
timotimo aaw i was looking forward to hearing the questions of the audience in the talk 18:57
clearly a full hour talk would have been better :P
18:57 xenoterracide joined
timotimo but moar will? and moar will run rounds around the jvm in terms of performance :P 18:58
(at least for executing perl6 code ...)
18:58 jeff_s1 joined
diakopter timotimo: uh, no 19:02
where are you getting this idea
make sure not to propagate it anywhere
btyler jnthn: just watched the talk, really exciting stuff! one question that jumped into my mind re channels: is there any way to tell a channel: "stop, I have as much as I can handle right now!" and the channel either buffers incoming data or relays that 'pause' request to the underlying data source 19:03
diakopter unless by "executing perl6 code" you mean "perl6 startup time only"
timotimo the best perl6 scripts will already be done by the time "startup" is over :P
TimToady btyler: everything is possible with another layer of indirection :) 19:04
timotimo btyler: i don't quite understand. there's an internal buffer to the channel anyway, i don't think it's synchronous 19:05
jnthn btyler: At the moment a channel is really just a (threadsafe) queue. Sending is non-blocking; it will buffer stuff happily. 19:06
btyler mostly comparing to something like the nodejs streams API, which I've played with a tad. entirely possible that I have the wrong sense of how it works. with nodejs streams, you can stream.pause to signal that you'd really rather not keep consuming data at right this moment
jnthn btyler: I can imagine that feed operators, if we do those with channels between them, will want some mechanism for managing queue length.
btyler neat, thanks for the clarification 19:07
jnthn btyler: And then probably that'd be more general.
timotimo feed operators are going to be more interesting anyway, because for full performance we will want batching
19:08 zwut00 joined
arnsholt jnthn: So I guess we'll just have to handle inlined aggregates not-inlined-after-all, and just have a normal object member? 19:08
jnthn arnsholt: I think so
dalek kudo/nom: a197668 | (Elizabeth Mattijsen)++ | src/core/ (4 files):
Cannot rely on coercer to give a new object, so we need to make one
19:09
jnthn arnsholt: Until the JVM gives us struct-like things like the CLR has.
arnsholt: Apparently, it is on the JVM roadmap...though probably years away.
TimToady visualizes a (potential) pair of complete IP stacks between the feed's source and destination...
arnsholt From what I gather of JVM timelines, I put it at about 10 years out =p
19:10 SamuraiJack__ left
arnsholt But then I'll try to wrap my brain around how the flattening stuff works and implement that stuff 19:10
TimToady depends on how soon Oracle buys Microsoft...
or vice versa
diakopter augh 19:11
19:13 domidumont left
slava TimToady: one of them buying the other will be funny ... since Ellison hates MS with a passion (stronger than mine). 19:17
perigrin slava: but is (I assume) in a much better position to make an offer 19:18
slava true
pretty sure if Ellison bought MS, first thing he'd do is throw a chair at Balmer 19:19
it's what I would do :D
jnthn Balmer won't be charing Microsoft for much longer, alas... :)
uh, chairing
darn, way to ruin the pun...
diakopter also, charring
perigrin alas?
jnthn perigrin: Well, Ellison can't throw a chair at him if he's gone... :P 19:20
lizmat TimToady: if a coercer of a mutable class (such as KeySet) is applied on an immutable class (like Set)
I guess it would be wise to *not* use any smart aliasing logic 19:21
because it would then be very ease for someone to change an immutable Set
perigrin jnthn: never underestimate the wealth that ellison has ... once he owns microsoft all he has to do is look in their HR database for Ballmer's home address
19:22 raiph left
perigrin because obviously that is the only thing stopping him now 19:22
19:22 teslos joined, b^_^d joined
TimToady lizmat: yeah, you really, really don't want to break the immutability invariant, or nearly all optimization becomes impossible 19:23
lizmat ok, just checking :-)
b^_^d hey everyone!
TimToady looks around to see if everyone is here... 19:24
lizmat b^_^d: welcome, you stranger from #perl6 on irc.perl.org
diakopter not me
b^_^d lizmat: long time! :)
reading lots of interesting stuff in 6guts blog! 19:25
PerlJam It's a shame that moarvm didn't get a name like 6guts instead ;) 19:26
TimToady imagines six impossible GUTs before breakfast...
masak o/, #perl6 19:27
TimToady \o
lizmat masak o/ 19:28
19:29 Bzek joined
lizmat colomon, TimToady: I'm keeping the :view named parameter for now 19:38
even though you can argue that the coercer returns something 19:39
diakopter TimToady: how many of those guts does the breakfast fill
lizmat if I by default return an immutable coercer on a mutable object
like $keyset.Set
there would be no guarantee that the underling KeySet is not changed, thereby violating the immutability of the object returned by the coercer 19:40
diakopter lizmat: lock it in another thread lololol
lizmat so inside the settings, .Set and .Bag are always called with :view, because *there* I can be sure the underlying mutable will not change 19:43
19:43 yoleaux left 19:44 yoleaux joined, ChanServ sets mode: +v yoleaux
diakopter lizmat: I was only half kidding.... 19:44
lizmat the other half will come later if that thread unblocks? :-)
diakopter no, you send that thread a signal when you're ready to unlock it 19:45
I'm just imagining a way to use a thread just for locking an object from access by the entire system, not just other threads 19:48
solution is to have a thread in an event loop that only handles lock/unlock requests, and lock objects manage access 19:49
19:50 pupoque joined
dalek kudo/nom: 19596ae | (Elizabeth Mattijsen)++ | src/core/Setty.pm:
Some additional :view on .Set coercers
19:50
diakopter via a hash of object addresses... which would need rehashed if the objects move... :)
19:51 Mouq joined 19:54 stevan_ left 19:55 kaare_ left 19:56 Mouq left 20:07 EvanTeitelman joined
dalek rl6-roast-data: cbb541f | coke++ | / (5 files):
today (automated commit)
20:09
20:12 kivutar joined
arnsholt jnthn: I think there's a mismatch between the Parrot box_target stuff, which supports an arbitrary number of box_targets (but only one each for int, num and str), and the way things are factored on JVM 20:15
jnthn: But my brain is kinda fried now, so I'm going to bed now and I'll try to look into it further on the morrow
jnthn arnsholt: Mine also...maybe I'll be smarter then too :) 20:16
[Coke] n: say "{27371*.8-21697}
camelia niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===␤␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/TXr9UA0tZn line 1:␤------> say⏏ "{27371*.8-21697}␤␤Confused at /tmp/TXr9UA0tZn line…
[Coke] n: say "{27371*.8-21697} tests left to get to 80%"
camelia niecza v24-95-ga6d4c5f: OUTPUT«199.8 tests left to get to 80%␤»
20:16 jeff_s1 left
[Coke] r: say "{27371 - 27138} tests for JVM to pass to tie parrot." 20:17
camelia rakudo 19596a: OUTPUT«233 tests for JVM to pass to tie parrot.␤»
20:19 zwut00 left
lizmat 99.15% 20:20
lue hello world! o/
lizmat lue /o 20:21
[Coke] getting .VAR working, as noted previously, would be a big step.
20:24 cognominal left 20:25 cognominal joined
lue IIUC correctly, VAR() gets you the underlying Scalar object, but it's a no-op on any kind of value and and non-scalar variables? 20:27
(do the values have to be non-scalar too or is that just unfortunate grammar on S12's part?) 20:29
lizmat r: say my @a.VAR
camelia rakudo 19596a: OUTPUT«===SORRY!=== Error while compiling /tmp/i5jqa4KXA7␤Two terms in a row␤at /tmp/i5jqa4KXA7:1␤------> say my @a⏏.VAR␤ expecting any of:␤ scoped declarator␤ constraint␤ postfix␤ infix stopper␤ i…
lizmat r: my @a; say @a.VAR 20:30
camelia rakudo 19596a: OUTPUT«␤»
lizmat r: my @a; say @a.VAR.WHAT
camelia rakudo 19596a: OUTPUT«(Array)␤»
lizmat r: my @a; say @a.VAR.default
camelia rakudo 19596a: OUTPUT«(Any)␤»
lizmat r: my @a is default(42); say @a.VAR.default
camelia rakudo 19596a: OUTPUT«42␤»
lue
.oO(I'm not sure how VAR is ever useful if it can't give you the underlying Scalar of a non-Scalar object.)
20:31
r: say 42.VAR.WHAT
camelia rakudo 19596a: OUTPUT«(Int)␤»
lue r: say (1,2,3).VAR.WHAT
20:31 jeff_s1 joined
camelia rakudo 19596a: OUTPUT«(Parcel)␤» 20:31
20:33 teslos left
lue Either that, or VAR's purpose is completely different from what I got out of S12's description. 20:33
Oh. /me should read the entire subsection, as opposed to just the part talking about VAR(), before complaining about being confused. 20:35
moritz r: say (my $).VAR 20:36
camelia rakudo 19596a: OUTPUT«Any␤»
moritz r: say (my $).VAR.WHAT
camelia rakudo 19596a: OUTPUT«(Scalar)␤»
20:36 zwut00 joined
lue r: my $xyzzy = 42; say $xyzzy.name; 20:37
camelia rakudo 19596a: OUTPUT«No such method 'name' for invocant of type 'Int'␤ in block at /tmp/q4V2Ys_hz0:1␤␤»
lue r: my $xyzzy = 42; say $xyzzy.VAR.name;
camelia rakudo 19596a: OUTPUT«$xyzzy␤»
lue r: my $xyzzy = 42; say VAR($xyzzy).name;
camelia rakudo 19596a: OUTPUT«===SORRY!=== Error while compiling /tmp/oeEwVuIFp8␤Undeclared name:␤ VAR used at line 1␤␤»
lue known bug?
lizmat NYI rather, I think 20:38
20:38 teslos joined
masak aye, NYI 20:39
20:46 lichtkind left
lizmat isn't this LHF though ? 20:46
sub VAR ($something) { $something.VAR } 20:47
?
jnthn \omething I would thing
think
Otherwise you throw away the origin container
lizmat leaves LHF hanging
ah, ok 20:48
sub VAR (\a) { \a.VAR }
jnthn but yeah, it's no more involved than tha to make it work
lizmat sub VAR (\a) { a.VAR }
jnthn you only \ it on the decl
right
Exactly that
You wrote it now. My as well commit :P
lizmat okokok
jnthn *May
hehe, I'm teasing :)
But still happy to have it implemented :))
lizmat after I spectested my last Baggy change to speed up .pick and .roll for huge bags 20:49
jnthn
.oO( I like huge Bags and I cannot lie... )
20:50
lizmat
.oO( just look under your eyes )
20:51 Ulti joined
Ulti is there a doc somewhere the subset of Perl6 NQP covers? 20:52
lue shouldn't it be macro VAR (... ? Or does that not matter? 20:54
Ulti found en.wikibooks.org/wiki/Parrot_Virtua...Quite_Perl 20:56
21:01 genehack left
dalek kudo/nom: 40ea141 | (Elizabeth Mattijsen)++ | src/core/Baggy.pm:
Implement .pick and .roll that don't blow up for large Bags and KeyBags
21:02
ast: cf57597 | (Elizabeth Mattijsen)++ | S02-types/ (2 files):
Unfudge tests that were previously taking too long
21:03
21:03 genehack joined 21:05 skids left 21:06 bruges_ joined, teslos left 21:07 denis_boyun left 21:08 bruges left 21:10 spider-mario left 21:11 kbaker left 21:19 riceandbeans joined
riceandbeans need real quick perl help 21:19
really simple
metacpan.org/module/Net::Blacklist::Client 21:20
it says new( [ARGS] )
tadzik wow, yapcrussia is still uploading videos from YE2011
riceandbeans: that's not quite a Perl 6 module
riceandbeans if I wanted to add an argument, how would I do it?
PerlJam riceandbeans: I'm fairly sure you're in the wrong place. Try #perl
riceandbeans tadzik: no, it's not
tadzik riceandbeans: and this is a Perl 6 channel :)
riceandbeans all I want to know is how I would put the module in there
err
the argument
dalek kudo/nom: 252008d | (Elizabeth Mattijsen)++ | src/core/operators.pm:
Temporarily implement VAR()
21:22
masak riceandbeans: first, listen. you're in the wrong place.
riceandbeans: this is #perl6.
dalek ast: 7975698 | (Elizabeth Mattijsen)++ | S06-traits/is-readonly.t:
Unfudge the one VAR() test
masak lizmat++ 21:26
lizmat I guess this just about finishes my Set/Bag work 21:27
there are still a few issues left
my %h = bag(<a>)
fails because it tries to put a 1 element list (the bag) into the hash 21:28
r: my %h=bag(<a>)
camelia rakudo 40ea14: OUTPUT«Odd number of elements found where hash expected␤ in method STORE at src/gen/CORE.setting:8376␤ in block at /tmp/CZ69zGiHFZ:1␤␤»
lizmat r: my %h := bag(<a>); say %h # binding works
camelia rakudo 40ea14: OUTPUT«bag(a)␤»
lizmat r: my %h := bag(<a>); say %h <a> # binding works
camelia rakudo 40ea14: OUTPUT«===SORRY!=== Error while compiling /tmp/ftvjwdHGht␤Undeclared routines:␤ a used at line 1␤ h used at line 1␤␤»
lizmat r: my %h := bag(<a>); say %h<a> # binding works
camelia rakudo 40ea14: OUTPUT«1␤»
lizmat the other thing is that Setty and Baggy are no longer Iterative 21:29
for the simple reason that making them iterative, breaks the currently specced behaviour
there are some tests testing for .iteratior, which no longer work and are now skipped 21:30
masak lizmat: for some reason I find the assignment/binding distinction rhymes with my intuition.
lizmat with mine as well, but are spectests expecting a different behaviour
*there are 21:31
masak I provisionally opine that they are in error.
'night, #perl6
diakopter 'nite masak
lizmat gnight masak
and finally, there are the hyper operators, such as set(1,2,3) >>+>> 3 not yet working 21:32
not sure how they would work, though
in any case, that's the state of things Setty and Baggy right now
and on that thought, I bid you all a good night! 21:33
gnight #perl6!
diakopter g'nite lizmat
21:39 PacoAir left 21:40 Mouq joined 21:44 Mouq left 21:49 sidus left 21:53 teslos joined
riceandbeans with cpan does everything stay in /root/.cpan/ ? 21:53
jnthn 'night, #perl6
timotimo so, a crapton of tests now succeed due to VAR working? :) 22:01
22:06 bluescreen10 left 22:12 Rotwang left, EvanTeitelman left
Ulti if anyone is on Mac and uses MacPorts you might want to give this the once over gist.github.com/MattOates/6516514 22:15
22:18 pupoque left 22:19 census joined, dmol left
Ulti hmmm fails after building parrot 22:20
mkdir /opt/local/include/parrot: Operation not permitted at lib/Parrot/Install.pm line 186 appears to have the prefix passed through to the parrot building, maybe its lost suid?
Ulti sleeps 22:21
22:24 fridim_ joined
geekosaur .tell Ulti MacPorts does not build as root and can't write outside the build area 22:27
yoleaux geekosaur: I'll pass your message to Ulti.
riceandbeans is parrot to perl what yarv is to ruby? 22:32
diakopter riceandbeans: parrot is... 22:33
not to perl
22:36 EvanTeitelman joined
sjohnson *awk* polly want a perl 6 *awk* 22:57
TimToady what he *sed*
sjohnson :3
23:03 teslos left 23:07 teslos joined 23:08 btyler left 23:09 prevost left
lue *ack*! I feel there's a pun there, but I can't quite *grep* any of it! 23:10
TimToady doesn't *find* that funny 23:11
sjohnson grep funny jokes.txt || echo ':(' 23:13
23:14 krunen_ left
lue sjohnson: I *echo* your sentiments. People who put spaces in filenames are terrible people. 23:18
23:18 zwut00 left
riceandbeans shutup before I put a *finger* in your eyeball 23:20
lue
.oO(Let's find a *cd* of calming music before this fight escalates and we have to *shutdown*.)
23:22
23:24 cognominal left, cognominal joined
riceandbeans I need to *locate* the button on the *top* of my terminal to end this session *at* a reasonable *time* and *date* because this is making me want to break the *display* 23:26
done
diakopter bye :)
23:26 jnap left
lue Are you sure you wish to *exit* this punning session? 23:27
riceandbeans lue: are you *fsck*ing kidding me?
it makes me want to *kill* myself 23:28
lue Hey woah! I was just running a simple *[* on whether it was time to stop dragging this on :) ] 23:29
riceandbeans don't you have a job or something? 23:30
diakopter do you? :)
TimToady *du* you?
lue I was just trying to have a *nice* time here. 23:31
.oO(What *df*erence would it make? Anyone using linux long enough would have committed quite a few commands to memory. I think I'll *curl* into a ball and stop this now.)
23:33
TimToady *yes* 23:34
diakopter writes to the wall man more or less
geekosaur writes *at*, perhaps? 23:35
lue me just now: .oO(wait, there's a yes command...) :D :D :D
TimToady tee hee 23:36
look, this is just too easy 'cuz there's so many commands
lue I was wondering where "no" was, but reading the man page for yes answered that for me.
TimToady ssh! 23:37
lue
.oO(and here I thought I would actually need to *git help* if this went on further.)
TimToady more or less
lue This session has taught me a valuable perl of wisdom: there's too much puntential in linux commands. 23:38
diakopter zip your trap until he who sleeps returns
23:39 Vlavv left
TimToady is touched 23:39
diakopter rn<TAB> => rnano
git'er done, he splained 23:40
23:41 pernatiy left
TimToady cc señor 23:41
lue I think it's time to clang the bell and end this. Future pun sessions are already vi-ing to overthrow this one. 23:45
diakopter ssh
TimToady there's an echo in here 23:46
diakopter heh
TimToady but yeah, I think we should zip it for now
23:47 teslos left 23:48 teslos joined 23:51 Vlavv joined
perigrin needs to find a different place to slocate himself. 23:55
23:56 BenGoldberg joined
diakopter updatedb 23:56