»ö« 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.
tbrowder SmokeMachine: i'm trying to grok the code but it's too much for my brain, 00:01
how do i add a constraint to, say, ^create-table so it's a no-op if the table exists? 00:02
i need a high-level cookbook example for basic crud. 00:03
i'll go find your advent article!
tbrowder ah, that helps a lot. but i don't see how to tell red not to throw if a table exists 00:11
timotimo you could literally just catch the exception if the table exists :) 00:46
tbrowder yeah, but i'm almost positive there is some adverb or test to do the right thing, i just haven't found it yet. 01:29
tbrowder timotimo: you may be right, catching may be the norm... 01:47
Geth doc: 627fa4e8e4 | cfa++ | 2 files
Spelling (whitelist).
02:05
SmokeMachine tbrowder: Red don’t do that yet... :( 06:34
SmokeMachine tbrowder: would you mind to open a issue asking for it? 06:38
antoniogamiz if I have a file called "a.pm6" in the same directory as another called "b.pm6" and I type in b.pm6 use lib <.> use a; 09:44
that should load the exported content in a.pm6 right?
antoniogamiz oh I was in other directory that¡s why it didnt work... 09:50
kawaii good morning 09:52
antoniogamiz o/ 09:52
tbrowder .tell SmokeMachine wilco 10:02
yoleaux tbrowder: I'll pass your message to SmokeMachine.
SmokeMachine .
yoleaux 10:02Z <tbrowder> SmokeMachine: wilco
SmokeMachine tbrowder: sorry, what means wilco? 10:03
tobs "will comply" 10:07
SmokeMachine tobs: thanks 10:44
tbrowder SmokeMachine: wilco == will comply (from two-way radio jargon). issue has been filed 11:20
SmokeMachine: if i define a method on a model is it called like "obj.^mymethod"? 11:22
SmokeMachine no, obj.mymethod 11:23
the database interacting methods are owned by the meta class...
but your model's methods is owned by your model, so you call it throw your model... 11:24
tbrowder oh! i would like to be able to update a column set by adding a new element somehow. and also the reverse: remove a single element, if it exists. 11:25
antoniogamiz how should I test a function that it's not exported?
SmokeMachine tbrowder: you can do a `method add($new-val) { $!msy-set-col (|)= $new-val; self.^save }`something like that? 11:28
tbrowder: I don't know if I got it...
tbrowder SmokeMachine: if i am using a persistent sqlite file, do i have to explicitly close the db after a series of crud ops? 11:29
SmokeMachine tbrowder: I don't think so... 11:30
tbrowder same question for PostgreSQL (disconnect?)
SmokeMachine tbrowder: you'd you mind to share the code?
tbrowder no, not at all. but i'm right now just trying to get a very simple but useful db going to track attendees at a local tech expo. 11:32
tbrowder i have forked Red and will submit PR for it as example if i can make it work for my needs. i hate writing sql. 11:33
SmokeMachine tbrowder: here is a example of something I think is useful done with Red... www.irccloud.com/pastebin/0Y60FiGe/ 11:53
antoniogamiz scimon: I've answered your comment 11:56
tbrowder SmokeMachine: yes, *very* useful! thnx 13:50
SmokeMachine tbrowder: :) 13:52
uzl Hello everyone! Does anyone have any comment on this question colabti.org/irclogger/irclogger_lo...03-13#l706 ? 14:04
moritz github.com/perl6/mu/blob/master/mi...amelia.txt 14:05
uzl: ^^ might be relevant
uzl moritz: thanks! From what I understand, then my changes fall under the license? 14:16
moritz IANAL, but I'd say yes 14:18
uzl One last question, moritz. Is perl6/marketing open to submissions? The person in charged(?) seems to had been zoffix but I'm not sure what would the current guideline/procedure. 14:21
moritz uzl: sure, it's open to submissions
uzl moritz: Oh, great! 14:22
Thanks. Have a wonderful day!
Geth perl6-lwp-simple: 46d3fdb698 | (JJ Merelo)++ | README.md
Documentation now is right
14:23
jjmerelo squashable6: status 14:27
squashable6 jjmerelo, Next SQUASHathon in 21 days and ≈21 hours (2019-04-06 UTC-14⌁UTC+12). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
jjmerelo Well 14:27
We are like one week away from the start of the period where students request admission into the Google Summer of Code and interest so far has been zero 14:28
Or almost
I would say we need some hype drive during the next week about how great Perl 6 is 14:29
jjmerelo We know that, you know that, people in general don't know that. And there are 200 different organizations admitted into GSoC, so we're not very likely to find prospects 14:30
jjmerelo What we need is blog posts, tweets, or whatever media you use (mastodon?) that are introductory to perl 6, with links to GSoC 14:30
We really need that
jjmerelo We've got over the first hurdle, which is being admitted into GSoC. We need everyone to help us get over the next one, getting students to actually request joining the organization. 14:31
So who's in?
moritz I'll happily retweet stuff, if that's any help 14:32
@perl6org has 640 folloers
eseyman jjmerelo: FTR, twitter.com/mongueurs_perl/status/...0172002304
kawaii I'd be happy to Tweet something too if someone can put together a somewhat generic message. 14:33
I think my $workplace would too, we do a lot of Perl 5 stuff already and sponsor various things.
jjmerelo eseyman: great! But keep doing it at least once a day :-)
kawaii: I'm no good at marketing, but something like "Perl 5 is alive and kicking and participating in this year's summer of code. Want to dive in? (URL to introductory tutorial) Want to participate (URL to GSoC page)" 14:35
kawaii Yeah I'll throw something together later
jjmerelo It would help if someone prepared presentations in local universities to the tune of "Want to get paid for developing some great software this summer? Join this presentation... " 14:36
tobs jjmerelo: I have no idea how GSoC works but I am a student in every conceivable way. Where do I look?
jjmerelo tobs: github.com/perl-gsoc-2019
tobs thanks :)
jjmerelo That's the repo for ideas, and there are links to the GSoC page 14:37
tobs that should get me started
Ulti_ is there an ordered hash builtin? 14:40
timotimo there is not 14:40
Ulti okedoke
github.com/FCO/OrderedHash to the rescue I guess 14:41
jjmerelo tobs++ 14:42
.tell El_Che why don't you prepare a presentation about Perl & Google Summer of Code in your uni?
yoleaux jjmerelo: I'll pass your message to El_Che.
jjmerelo .tell AlexDaniel can you prepare a presentation about GSoC in your uni? 14:43
yoleaux jjmerelo: I'll pass your message to AlexDaniel.
jjmerelo and dot-tell everyone: Why don't we prepare a collaborative presentation and start to deliver it in local unis?
kawaii jjmerelo: how is this? usercontent.irccloud-cdn.com/file/...-43-04.png
jjmerelo kawaii: looks fine! 14:44
Kaiepi can someone familiar with nqp or the MOP tell me why this throws with "getstaticcode requires a static coderef" when i call ^add_method? hastebin.com/yatazodihi.rb
timotimo perhaps it needs a nqp::decont around the sub 14:45
it'd surprise me, but only a little
otherwise, you could gdb into moar, breakpoint the line that actually throws that exception, and output the MVM_6model_get_debug_name(tc, the_object_in_question) to see what kind of object it is 14:46
Ulti hmm actually OrderedHash despite the name is not what I might have expected 14:47
timotimo DESCRIPTION
OrderedHash is ...
tobs jjmerelo: I could do that, too. (Don't know if the computer science department will let me present somewhere sometime, but I'll check what kind of meetings they have.)
timotimo where does the confusion come from? :P
timotimo huh, it has a default :@keys of 0..9, A..Z, a..z 14:48
Kaiepi deconting the sub didn't work, but thanks for the pointer timotimo
jjmerelo tobs: that would be great 14:50
timotimo kawaii: why is cute.im down? :P
tobs jjmerelo: I prefer collborating on the presentation. You and others may have more experience at where to start than me. 14:51
jjmerelo m: my \hash = {}; my %hash = hash; say hash === %hash
camelia False
tobs I assume it should include some "flexing" to get people interested in Perl 6. I suspect most of them haven't seen it before.
jjmerelo m: my \hash = {}; my %hash := hash; say hash === %hash 14:52
camelia True
jjmerelo tobs: that's the problem. Most people I talk to say "But is Perl still a thing?"
tobs: I can brush up a repo with reveal.js 14:53
Kaiepi timotimo the sub's REPR is P6opaque fsr? 14:58
Geth doc: eb00a7425d | (JJ Merelo)++ | doc/Language/js-nutshell.pod6
Fixes #2672, it was the example that was wrong
kawaii timotimo: I've been meaning to put a site up there for a long time now, found Uzu recently so might make a static perl 6 blog or something 15:01
timotimo Kaiepi: oooh, you might have to nqp::getattr at its $!do attribute 15:02
Xliff \o 15:26
Does my subscription to Comma still work if I was in the supporter program?
jnthn Xliff: Yes 15:28
Xliff jnthn: How do I upgrade to the latest commercial package? 15:29
jnthn Xliff: Just log in as before and download it 15:29
tbrowder SmokeMachine: i want to define my own unique key for a person and i don't define the id but the sql shows two UNIQUE(key) entries 15:30
i do not explicitly reference .person-id anywhere, always Person.key 15:31
SmokeMachine tbrowder: yes... that's a bug I have to fix... would you mind to open a issue, please?
tbrowder yes, will do in a short while 15:32
Xliff m: $*PERL.compiler.version.say 15:39
camelia v2019.03.32.g.33.e.2.d.7.f.4.c
Xliff jnthn: Are there docs on how to set up Comma? 15:40
sena_kun Xliff, installation docs? Yes. 15:43
Xliff sena_kun: How about docs for setting up a perl6 project? 15:48
Or docs on how to debug an existing one?
sena_kun Xliff, sorry, what do you mean by "setting"? Create? Open/import?
jnthn Xliff: commaide.com/docs/creating-project 15:49
Covers both new and importing existing code 15:50
Xliff jnthn++ # Thanks! 15:52
AlexDaniel yes? 15:59
yoleaux 14:43Z <jjmerelo> AlexDaniel: can you prepare a presentation about GSoC in your uni?
AlexDaniel :o
AlexDaniel .tell jmerelo I like the idea a lot, and I can totally do something like this… but maybe next year. I'm too busy working on my thesis 16:01
yoleaux AlexDaniel: I'll pass your message to jmerelo.
tbrowder SmokeMachine: issue was filed 16:33
Kaiepi m: use nqp; enum A <B C D>; A.^lookup('CALL-ME').wrap(anon multi method CALL-ME(Str $key --> Int) { my %values := self.^enum_values; nqp::defor(nqp::atkey_s(%values, nqp::decont($key)), nqp::atkey_s(%values, ' ')) }); say A('B')
camelia MVMHash representation does not support native type storage
in method CALL-ME at <tmp> line 1
in block <unit> at <tmp> line 1
Kaiepi oh right
m: use nqp; enum A <B C D>; my $call-me := anon multi method CALL-ME(Str $key --> Int) { my %values := self.^enum_values; nqp::defor(nqp::atkey_s(%values, nqp::decont($key)), nqp::atkey_s(%values, ' ')) }; A.^lookup('CALL-ME').wrap(nqp::getstaticcode(nqp::getattr($call-me, Code, '$!do'))); say A('B') 16:34
camelia MVMHash representation does not support native type storage
in method CALL-ME at <tmp> line 1
in block <unit> at <tmp> line 1
Kaiepi no wait i'm thinking of when i was writing with the mro 16:35
SmokeMachine tbrowder: thanks! and what are you feeling so far?
Kaiepi fully with the mro i mean
Kaiepi but anyway the point i was trying to make is Enumeration.CALL-ME's signatures are both (|), which i think may be too loose 16:38
i'll test out making them stricter 16:39
kawaii AlexDaniel: oh uhh, any sign of my CLA yet? 16:53
AlexDaniel hah sign 16:56
kawaii hah, unintended 16:57
tbrowder SmokeMachine: good so far. i now need to figure out how to update a row and to do some simple queries. 16:59
SmokeMachine tbrowder: to update a row, just change the object, than call `.^save` 17:00
tbrowder for the moment i have wrapped my table creation code with a try block and then pass $! to an err handing sub where i silently skip expected errors like table exists, etc. 17:01
tbrowder ok, save makes sense, i thought it might be something to do with the physical db file. 17:02
AlexDaniel kawaii: ok, I've sent an email asking if it was received… 17:03
kawaii Hopefully :(
AlexDaniel kawaii: this process always takes some time, don't worry
I think mine was sent via snail mail 17:04
at least the first one… then I remember sending it via email
tbrowder i will need to handle tables with combined keys or two unique key fields.
AlexDaniel or maybe not, actually I'm not sure anymore :) 17:05
Kaiepi never mind, i was wrong 17:06
AlexDaniel jnthn: btw what's the reason to have the CLA hassle? I always wondered how this thing is justified
tbrowder got to go work on my "honey do list"...back to "red"ing later..
AlexDaniel it's not like a huge problem so I'm definitely not insisting that something should be changed, but I'd love to know why we're doing it 17:07
SmokeMachine tbrowder: here's a example of how to update and create a query... 17:10
tbrowder: www.irccloud.com/pastebin/FHt6aPjc/
tbrowder: update only works with a primary key... 17:11
Xliff m: my $a = 'b'; my %b = ( $a => '1' ); %b.gist.say 17:14
camelia {b => 1}
Xliff m: my $a = 'b'; my %b = ( do $a => '1' ); %b.gist.say 17:15
camelia {b => 1}
Xliff m: my $a = 'b'; my %b = ( do $a => '1' if rand ); %b.gist.say
camelia {b => 1}
Xliff m: my $a = 'b'; my %b = ( do $a => '1' if rand ); %b.gist.say
camelia {b => 1}
Xliff m: my $a = 'b'; my %b = ( do $a => '1' if rand ); %b.gist.say
camelia {b => 1}
jnthn AlexDaniel: My understanding is that it's because TPF hold the "compilation copyright" 17:16
AlexDaniel jnthn: yeah but nqp and other repos?
jnthn AlexDaniel: I can't usefully explain what that means, alas; somebody involved with TPF probably can.
AlexDaniel: The folks who created those decided not to do things that way, pretty much. 17:17
That was my call for MoarVM; nobody from TPF ever asked me "hmm, shouldn't you..." 17:18
It may be worth finding out just how much value there is in the paperwork we're doing.
AlexDaniel kawaii: anyway, any questions so far? :)
tbrowder SmokeMachine: thanks 17:19
kawaii AlexDaniel: just one, is there a comprehensive list of all the IRC bot commands I need to use to see stuff? :P 17:20
AlexDaniel kawaii: see github.com/perl6/whateverable/wiki
kawaii releasable6: status
releasable6 kawaii, Release manager is not specified yet.
kawaii, Next release in ≈37 days and ≈1 hour. 7 blockers. 0 out of 32 commits logged 17:21
kawaii, Details: gist.github.com/9c67603f56a562b6a3...bd4d050008
AlexDaniel that first warning you'll be able to fix yourself once your CLA is received :)
kawaii: also join #whateverable to experiment with the bots
kawaii Alright, I think that's enough time between now and the next planned release for me to bug you enough to understand fully what is required. ;)
Who assigns 'blockers' to that list? Will more be added between now and then? 17:22
I assume 'blockers' are only for the most severe rakudo bugs that prevent a stable release? 17:23
AlexDaniel kawaii: you label tickets yourself here: github.com/rakudo/rakudo/issues
AlexDaniel kawaii: yeah, that's correct 17:24
AlexDaniel kawaii: so, as you'll be running the show, you'll decide these details yourself. But here's what I used to do 17:25
kawaii: before the release I'd run Blin github.com/perl6/Blin 17:26
AlexDaniel kawaii: Blin simply takes two rakudo revisions (typically the previous release and the latest commit from master) and tests modules on them 17:26
AlexDaniel kawaii: by default I used to file a ticket for every module that no longer can be installed cleanly 17:27
here's an example: github.com/rakudo/rakudo/issues/2705 17:28
kawaii Ah right yes I understand
AlexDaniel it doesn't necessarily mean that every single issue on that list is a blocker, but it was easier to file a ticket first and investigate later 17:29
… even doing that I managed to miss some things for way too long :) 17:30
kawaii I will most likely ask yourself or someone more knowledgeable which ones to submit as blockers until I'm comfortable doing it entirely myself :)
Lots of learning to do, but hopefully this will take some of the workload off yourself and others once I'm confident with the process 17:31
AlexDaniel I'd say if you see a serious issue but you're unsure, mark it as a blocker… and devs will complain about it if they disagree :) 17:32
in my time everything that made existing user code no longer work was a blocker
kawaii the `--new=2018.09` parameter of Blin... is this just an arbitrary label of what the next release is going to be called? I was of the understanding that it simply used `master` from `rakudo/rakudo`, if I interpreted you correctly. 17:33
AlexDaniel and I was maybe too strict about it, as we ended up doing workarounds for some issues that were clearly bugs that just happened to be used by people 17:33
kawaii and that `-old=2018.06` will actually fetch that release of Rakudo to test against?
(because if I'm understanding this right, --new=blah doesn't exist yet) 17:34
AlexDaniel kawaii: that's a git commit or something that's like a commit 17:35
kawaii: so usually you'd use HEAD
for new
kawaii alright okay :)
AlexDaniel bisect: old=2015.12 new=HEAD say 42
bisectable6 AlexDaniel, On both starting points (old=2015.12 new=33e2d7f) the exit code is 0 and the output is identical as well
AlexDaniel, Output on both points: «42␤»
AlexDaniel same here
kawaii: for running Blin, I don't recommend that doing on an actual system you use 17:36
kawaii Doesn't seem like we have a `Dockerfile` for it, I can add that to my to-do list if you'd like? :)
AlexDaniel kawaii: google compute engine is nice, set it up with about 24 cores or so
that'd be awesome
but note that even with 24 cores it'll run for a bit more than an hour 17:37
kawaii: oh by the way, if somebody reports an issue with some particular module, you can ask blin to test just that module 17:38
it'll still test its dependencies, because it has to, but it won't be testing the whole ecosystem
kawaii It would simply install Blin, and take an environment variable for `--old=` and `--new=`, and a third variable for an array of modules.
That should be fine right? Basic, but fine?
AlexDaniel sounds about right, yes
kawaii Sounds like my weekend is planned then. :) 17:39
AlexDaniel kawaii: there's this problem that, well, it takes one idiot to upload malicious code to the ecosystem and you're guaranteed to hit it
so it should be isolated as hell, in theory, but then there's a tradeoff because a lot of modules actually use the internet for their tests 17:40
kawaii hmmm, so does Blin install the modules and run their tests too? Because simply installing the module could not be an attack vector unless there is code to run it, no?
AlexDaniel and you *want* to run as many tests as possible… sooo, sometimes you just can't win :) 17:41
kawaii: yes, it runs tests, that's sorta the point. But also just installing the module without running tests is dangerous too, I think, because people can stick some things into BEGIN blocks or such
kawaii ah right, understood 17:42
no problem, I'll create us a Dockerfile/image for it, and deploy a server at $work for running it :)
timotimo there's also BUILD.pm
AlexDaniel oh yeah
timotimo though there's also some build-replacement stuff for META6.json 17:43
AlexDaniel kawaii: if you don't have a google compute engine account yet, then it's probably better to do that
they offer some free credit that'll last you exactly one year (they take it away after one year anyway)
kawaii I'm an engineer at $work, I do have a GCE account I use for $personal-projects but why do that when I have an entire datacenter to play with? :) 17:44
AlexDaniel right, well. If we put potential kernel vulnerabilities aside… :) 17:48
kawaii: here's a partial list of dependencies that modules have: github.com/perl6/ecosystem-unbitrot/wiki 17:49
AlexDaniel so highly recommended to install these on the system that will run blin 17:50
kawaii AlexDaniel: much appreciated, that'll come in handy 17:51
AlexDaniel kawaii: it's not updated regularly and I don't know any good way to do that… it'd be nice if modules had a way to let users know which native dependencies are required
and IIRC there was something for that 17:52
or at least something was proposed at some point, I don't remember
kawaii That'd be something I'd like to see in META6.json for sure, a split key for `apt` and `yum` since package names can differ.
AlexDaniel greppable6: is native 17:53
Xliff kawaii: New maintainer? 17:54
AlexDaniel Xliff: rakudo release manager
Xliff For distros? kawaii++ !
greppable6 AlexDaniel, 6652 lines, 186 modules: gist.github.com/a01fdb97e1994950d0...6071a42810
AlexDaniel for rakudo itself!
Xliff AlexDaniel: Ooooh!
AlexDaniel a better me, hopefully :)
Xliff No one can be a better you than yourself. ;) 17:55
But seriously good to see new blood involved.
AlexDaniel: Frees up some of your time. Are you finally going to look into this neat new thing called "Rest" ?
;)
kawaii Hah, I don't think I'll meet those expectations for a long time AlexDaniel , but I'm happy to help out 17:56
Xliff kawaii: If you need semi-instantly draftable hands, I don't mind helping.
You get familiarized first.
kawaii Xliff: if you're just another person for me to bug when Alex isn't around, that'll work :)
Xliff Just don't call me "flunky" 17:57
kawaii: =D
AlexDaniel kawaii: heh, I was hoping that greppable would give a nice list and we'd just extract library names from `is native(…)` 17:59
`is native( LIBREADLINE ) { * }` so wha's LIBREADLINE…
what's*
Xliff m: class A { has %!a; method BUILD { %!a = ( a => 1 ); }; method a { %!a }; }; my %a = A.new; $a.a<a>.say; $a.a<a> = 2; $a.gist.say 18:08
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$a' is not declared. Did you mean '%a'?
at <tmp>:1
------> 3 }; method a { %!a }; }; my %a = A.new; 7⏏5$a.a<a>.say; $a.a<a> = 2; $a.gist.say
Xliff m: class A { has %!a; method BUILD { %!a = ( a => 1 ); }; method a { %!a }; }; my $a = A.new; $a.a<a>.say; $a.a<a> = 2; $a.gist.say
camelia 1
A.new
Xliff m: class A { has %!a; method BUILD { %!a = ( a => 1 ); }; method a { %!a }; }; my $a = A.new; $a.a<a>.say; $a.a<a> = 2; $a.a<a>.say
camelia 1
2
AlexDaniel kawaii: by the way, the output of Blin is also used to update issues in this repo: github.com/perl6/ecosystem-unbitrot/issues 18:09
Xliff What's the best way to make sure that %!a can be read, but not modified from the outside if exposed like that?
AlexDaniel kawaii: 220 open issues means that 220 modules have failing tests or other issues
Xliff m: class A { has %!a; method BUILD { %!a = ( a => 1 ); }; method a { %!a.clone }; }; my $a = A.new; $a.a<a>.say; $a.a<a> = 2; $a.a<a>.say 18:10
camelia 1
2
Xliff WTF? It doesn't change the clone? 18:11
tobs m: my %h; %h.clone<a>.say; %h.clone<a> = 2; %h.clone<a>.say 18:14
camelia (Any)
(Any)
tobs m: my %h = a => 1; %h.clone<a>.say; %h.clone<a> = 2; %h.clone<a>.say 18:15
camelia 1
2
tobs Xliff: clone clones the scalar container 18:15
it's a shallow copy
Xliff Is there a way to return an immutable copy of a container? 18:17
Or a reference that doesn't allow any contents to be changed?
tobs I think Map is the immutable equivalent of a Hash 18:18
m: class A { has %!a; method BUILD { %!a = ( a => 1 ); }; method a { %!a.Map }; }; my $a = A.new; $a.a<a>.say; $a.a<a> = 2; $a.a<a>.say
camelia 1
Cannot change key 'a' in an immutable Map
in block <unit> at <tmp> line 1
Xliff tobs++ # That may work, for now.
tobs (I have no idea how costly that is)
Xliff Yes. That is the next worry.
What I am trying to accomplish: I want the contents of %!a available to callers, but I do not want the callers to be able to manipulate %!a. 18:19
So far it looks like %!a.Map is the easiest solution. 18:20
m: class A { has %!a; submethod BUILD { %!a = ( do ('a' + .) => . for ^(26) }; }; my $a = A.new; $a.perl.say; 18:23
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed postfix call (only alphabetic methods may be detached)
at <tmp>:1
------> 3a; submethod BUILD { %!a = ( do ('a' + .7⏏5) => . for ^(26) }; }; my $a = A.new; $a
Xliff m: class A { has %!a; submethod BUILD { %!a = ( do ('a' + $_) => $_ for ^(26) }; }; my $a = A.new; $a.perl.say;
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in parenthesized expression; couldn't find final ')' (corresponding starter was at line 1)
at <tmp>:1
------> 3{ %!a = ( do ('a' + $_) => $_ for ^(26) 7⏏5}; }; my $a …
Xliff m: class A { has %!a; submethod BUILD { %!a = ( do ('a' + $_) => $_ for ^26 ) }; }; my $a = A.new; $a.perl.say;
camelia Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5a' (indicated by ⏏)
in code at <tmp> line 1
in submethod BUILD at <tmp> line 1
in block <unit> at <tmp> line 1
Xliff m: class A { has %!a; submethod BUILD { %!a = ( do ("a" + $_) => $_ for ^26 ) }; }; my $a = A.new; $a.perl.say; 18:24
camelia Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5a' (indicated by ⏏)
in code at <tmp> line 1
in submethod BUILD at <tmp> line 1
in block <unit> at <tmp> line 1
Xliff m: my @a = 'a'..'z'; class A { has %!a; submethod BUILD { %!a = ( do @a[$_] => $_ for ^26 ) }; }; my $a = A.new; $a.perl.say; 18:32
camelia A.new
Xliff m: my @a = 'a'..'z'; class A { has %!a; submethod BUILD { %!a = ( do @a[$_] => $_ for ^26 ) }; }; my $a = A.new; $a.a<b>.say
camelia No such method 'a' for invocant of type 'A'
in block <unit> at <tmp> line 1
Xliff m: my @a = 'a'..'z'; class A { has %!a; submethod BUILD { %!a = ( do @a[$_] => $_ for ^26 ) }; method a { %!a; }; }; my $a = A.new; $a.a<b>.say
camelia 1
Xliff m: my @a = 'a'..'z'; class A { has %!a; submethod BUILD { %!a = ( do @a[$_] => $_ for ^26 ) }; method a { %!a; }; }; my $a = A.new; $a.a<e>.say
camelia 4
Xliff Benchable: HEAD my @a = 'a'..'z'; class A { has %!a; submethod BUILD { %!a = ( do @a[$_] => $_ for ^26 ) }; method a { %!a; }; }; my $a = A.new; $a.a<b>.say 18:35
benchable6 Xliff, starting to benchmark the 1 given commit
Xliff, No new data found
Xliff Benchable doesn't know HEAD?
Benchable: HEAD my @a = 'a'..'z'; class A { has %!a; submethod BUILD { %!a = ( do @a[$_] => $_ for ^26 ) }; method a { %!a; }; }; my $a = A.new; $a.a<2> + 1 for ^10000 18:36
benchable6 Xliff, starting to benchmark the 1 given commit
Xliff, No new data found
Xliff OK. Finally got my answer. 18:39
Without map... 0.11 seconds to do 10000 loops
With map... 0.7 seconds 18:40
Wow.
tbrowder SmokeMachine: in the last example, how do you add a new row? dump a table? 18:48
SmokeMachine tbrowder: this is creating a new row: `my $a = A.^create: :42a;`... and Red do not drop tables yet... 18:49
tbrowder when i said "dump" i meant show a complete table 18:50
SmokeMachine tbrowder: oh! sorry!
tbrowder my bad, too much "slang" 18:51
SmokeMachine tbrowder: I think the easier way would be: `.say for A.^all`
tbrowder ok, i'll try that...
Xliff SmokeMachine: Why no drop tables, yet? 19:01
SmokeMachine Xliff: haven't done it yet...
Xliff Ah. OK! :)
antoniogamiz Hi! :D 19:30
I'm making my first little module in perl6, you can check it here: github.com/antoniogamiz/Math-ConvergenceMethods 19:31
any feedback is very welcomed because I'm quite noobie hahaha
AlexDaniel kawaii: ah, also join these: #perl6-dev #moarvm 19:33
SmokeMachine I think its a comma bug: usercontent.irccloud-cdn.com/file/.../image.png 19:43
usercontent.irccloud-cdn.com/file/.../image.png 19:44
Xliff SmokeMachine: So would you create Red::AST::Drop and handle it that way? 19:49
SmokeMachine Xliff: Yes, I will...
Xliff SmokeMachine: OK. That's a neat design! :) 19:51
SmokeMachine Xliff: thanks! 19:51
SmokeMachine Xliff: every thing you do with Red becomes a tree of AST (ok, Im being redundant) and the Red database's driver transform this AST into SQL... 19:54
Xliff Yep1 19:55
s/1/!/
Xliff What's the difference between QAST and MAST? 20:00
discord6 <Rogue> (I'm interested to know the answer to that question as wel :) 20:01
Xliff :) 20:02
jnthn QAST is an abstract syntax tree that is backend-agnostic. MAST was a much lower-level AST for MoarVM, which was then fed to the VM for assembling into bytecode, but nowadays we produce the bytecode directly. 20:05
discord6 <Rogue> So we're now going straight from QAST to bytecode? Was there a good reason for the more specific MAST format before? 20:06
tony-o we'll have a nightly circleci/docker image available shortly..does anyone know if we have a `rakudo` user on docker.io's hub? 20:08
jnthn It was a bit easier to implement/debug it like that, especially since we started out cross-compiling. Mostly, we jsut didn't have decent/efficient binary writing stuff back when it was done that way. 20:11
tony-o if not then i'll reply to the github issue with my docker image %^
-%
discord6 <Rogue> thanks for the history lesson :) always interesting to see how implementation details have changed over time 20:12
tbrowder SmokeMachine: how does one get the column names of a given table A? i can get a row which is also an A object, so A.^columns? or comething like that? 20:31
tony-o use xoos :p 20:34
SmokeMachine tbrowder: www.irccloud.com/pastebin/Czie5Fq0/
tbrowder A.^columns gives me a hash with col names, i'm getting there...
SmokeMachine tbrowder: not a hash, a Set...
tbrowder ah! thanks.
SmokeMachine tbrowder: I think ill add a `.^column-names` 20:35
tbrowder would be nice!
SmokeMachine tbrowder: github.com/FCO/Red/blob/master/lib...el.pm6#L37 20:42
andrzejku tadzik, hej 20:43
what happen wit that project? www.youtube.com/watch?v=gd2nKxFtFMQ 20:44
tony-o circleci rakudo nightly available for those interested 20:54
or anyone else using docker, really
tadzik oh wow, young me :)
andrzejku: pretty much nothing :( 20:55
tadzik that Space Invaders was about as fun as that project went, I think 20:56
soon-ish after I started working in Game Development and it murdered my passion for game development
tadzik andrzejku: if you want to do that for GSoC I can be your mentor ;) 21:00
andrzejku tadzik, what you use for game dev?
SDL?
what's GSoC?
tony-o google summer of code 21:01
andrzejku aaa
I don't like google
El_Che andrzejku: google knows
yoleaux 14:42Z <jjmerelo> El_Che: why don't you prepare a presentation about Perl & Google Summer of Code in your uni?
andrzejku prefer duckduck.go
tadzik andrzejku: nothing anymore 21:07
tadzik I just stopped making games :( 21:07
I merely play them now like a normie
MasterDuke Xliff: fyi, benchable6 expects either multiple commits (separated by ',') and one chunk of code or one commit and multiple chunks of code (separated by '|||') 21:15
tony-o what was the command to add stuff to the weekly? 21:17
MasterDuke (however, the fact that it didn't report a time for a single commit and instead said 'No new data found' is a known issue)
tony-o articles, or whatever
MasterDuke tony-o: i think it's notable6: <foo> 21:18
tony-o tak
AlexDaniel actually `weekly: foo` 21:25
or `notable6: weekly foo`
notable6: list
notable6 AlexDaniel, gist.github.com/5a1cad8b5d574362f3...88247e1274
AlexDaniel notable6: Atikon
notable6 AlexDaniel, 1 note: 2019-01-20T11:41:08Z <jmerelo>: is looking for Perl 6 programmers (in German) www.atikon.com/at/karriere/jobs/so...eisterung/
AlexDaniel weekly: missed note, I don't know if it's relevant: 1 note: 2019-01-20T11:41:08Z <jmerelo>: is looking for Perl 6 programmers (in German) www.atikon.com/at/karriere/jobs/so...eisterung/ 21:26
notable6 AlexDaniel, Noted!
AlexDaniel notable6: this
notable6 AlexDaniel, 1 note: 2018-12-31T15:34:48Z <lizmat>: is on High Sierra, not Mojave
AlexDaniel notable6: clear this 21:27
notable6 AlexDaniel, Moved existing notes to “this_2019-03-14T21:27:00Z”
AlexDaniel notable6: clear Atikon
notable6 AlexDaniel, Moved existing notes to “Atikon_2019-03-14T21:27:05Z”
tony-o AlexDaniel: i updated the github issue regarding a docker for rakudo nightly build
AlexDaniel I saw that! 21:28
I don't know if the issue is resolved now
tony-o i don't know either, haha 21:30
Xliff SmokeMachine: How would you check if a table has a foreign key constraint? 22:11
SmokeMachine Xliff: www.irccloud.com/pastebin/dnCOnIIc/ 22:15
Xliff Ooh. Nice. Is there any tracking done between the models? 22:16
As in, does A know that B is referencing it?
Oh. Wait. That's exactly what that does. Nifty! 22:17
SmokeMachine Xliff: you can use relationships for that...
Xliff So you'd have to make a relationship in A for it to know that B is referencing it. Right? 22:18
SmokeMachine yes...
Xliff Can you update that paste to show how?
SmokeMachine Xliff: for example: github.com/FCO/Red/wiki/Time-Tracker
Xliff Yeah. OK. 22:20
SmokeMachine Xliff: www.irccloud.com/pastebin/gAVdZv4N/ 22:23
Xliff So a potential way to do .^drop would be something like this? 22:24
pastebin.com/fXqQDbuT
SmokeMachine Xliff: www.irccloud.com/pastebin/8KXxMbQm/ 22:24
SmokeMachine Xliff: is that what you expected? 22:28
Xliff Still working my head around how things work.
So just looking at examples and code.
SmokeMachine Xliff: there are some examples on dir "examples" and on the wiki... 22:29
Xliff: please, let me know if I can help with something... 22:30
Xliff Sure thing. 22:31
SmokeMachine Xliff: a small variation of that last example, but a bit more advanced would be:
Xliff: www.irccloud.com/pastebin/LV9qOiwq/ 22:39
tbrowder SmokeMachine: showing the tables with say seems to work fairly well, but i need to extract data by rows and columns to do other things with the values. I've tried several variants but haven't had any success yet. creating, filling, and updating table rows and columns seems fine so far. 23:58