»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
seatek FROGGS: Thank you for linking that video by PM - just finished watching it. 00:02
00:06 cyphase left
timotimo i removed a duplicate ticket on perl6/doc, so i'm +1/-1 00:10
00:10 cyphase joined 00:15 kaare_ left 00:16 kaare_ joined
AlexDaniel timotimo: yeah, well… yeah… I have a problem with this ratio 00:21
in fact, I'm surprised nobody is beating me with a stick saying that I should get some stuff done 00:22
… right now I am only turning my complaints into tickets, but I should be turning my complaints into code, I guess 00:23
00:29 cdg joined 00:34 cdg left
timotimo don't worry about it 00:41
00:42 pat_js left
viki beats AlexDaniel with a stick. 00:58
Write some code, dammit! 00:59
AlexDaniel ouch!
01:00 leont left 01:08 aborazmeh joined, aborazmeh left, aborazmeh joined 01:27 aborazmeh left, flaviusb joined 01:34 aborazmeh joined, aborazmeh left, aborazmeh joined 01:35 FROGGS left 01:38 AlexDaniel left 01:51 FROGGS joined 01:56 bjz left
SmokeMachine____ viki: thanks! 02:02
02:07 aborazmeh left 02:12 snowman left 02:13 ugjka left
viki ¯\_(ツ)_/¯ 02:14
02:18 ugjka joined 02:22 bjz joined 02:26 TakinOver joined 02:41 ribasushi_ is now known as ribasushi 02:51 skids joined
SmokeMachine____ Is there any way to from some code compile another file of code and get its $=pod? 03:01
03:02 noganex_ joined 03:05 noganex left
SmokeMachine____ viki: (I was talking about the link that you fixed... the rakudo for mac download link) 03:06
03:11 cdg joined 03:15 cdg left 03:26 djbkd left
viki ah 03:40
03:45 snowman joined 03:53 BenGoldberg left 04:11 cdg joined 04:16 cdg left 04:20 labster left 04:21 brillenfux joined 04:29 brillenfux left 04:33 rindolf joined 04:35 skids left 04:36 kurahaupo__ joined 04:43 khw left 04:44 brillenfux joined 04:53 canopus left
viki Adding to earlier talks about importing specific functions from a module... Neat idea worth stealing: doc.rust-lang.org/book/crates-and-...ex-imports 04:57
module Foo { sub some_awful_snake_case {... } }; import Foo (&awful_snake_case as &awesome-kebob-case); or whatever :) 04:58
04:58 canopus joined
viki s/&awful/&some_/; 05:01
bah...
you know what I meant :D
05:05 kurahaupo__ left
viki m: sub infix:<as> (&what, Str $as) { qq|our &$as = &what|.EVAL }; BEGIN &say as 'shout-loudly'; as::shout-loudly 42 05:06
camelia rakudo-moar db61aa: OUTPUT«42␤»
viki close enough (•_•) ( •_•)>⌐■-■ (⌐■_■)
05:13 bjz left 05:19 bjz joined 05:29 snowman left 05:38 Cabanossi left 05:42 Cabanossi joined, brillenfux left 05:52 emdashcomma_ is now known as emdashcomma 05:56 pierre_ joined 05:58 konobi_ is now known as konobi 06:00 rurban joined, rurban left 06:05 andrzejku_ joined, andrzejku left 06:26 labster joined 06:45 wamba joined 06:46 darutoko joined 06:57 rurban joined 07:12 Tonik joined
samcv just trying out native call... so far printing out some values returned by a struct pointer in a library, but so far, impressed 07:30
next to try and do something useful
08:13 CIAvash joined 08:15 mohae left 08:17 mohae joined 08:22 firstdayonthejob joined 08:25 Cabanossi left 08:27 Cabanossi joined 08:32 Cabanossi left 08:34 Cabanossi joined 08:45 RabidGravy joined, brillenfux joined 08:46 pierre_ left 08:47 pierre_ joined 08:49 pierre_ left 08:55 brillenfux left 08:56 pierre_ joined 09:03 espadrine joined
RabidGravy harr! 09:27
moritz++ # I was just going to suggest that :)
09:28 notostraca left
moritz suggest what? giving you a commit bit? 09:29
moritz a bit context deprived
RabidGravy yes 09:30
I am determined to have all the modules that are thus configured to be passing in Travis :) 09:32
09:33 pierre_ left 09:53 domidumont joined 09:58 CIAvash left, labster left
RabidGravy I am right in recalling MONKEY-SEE-NO-EVAL is lexical in its effect? 10:01
lizmat RabidGravy: should be 10:03
m: { use MONKEY-SEE-NO-EVAL }; EVAL "42"
camelia ( no output )
lizmat hmmmm...
10:03 Tonik left
lizmat m: EVAL "42" 10:03
camelia ( no output )
lizmat m: say EVAL "42" 10:04
camelia rakudo-moar db61aa: OUTPUT«42␤»
RabidGravy it doesn't do anything when it's just a literal
lizmat ah
m: { use MONKEY-SEE-NO-EVAL }; EVAL "my $a = 42"
camelia rakudo-moar db61aa: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$a' is not declared␤at <tmp>:1␤------> 3{ use MONKEY-SEE-NO-EVAL }; EVAL "my 7⏏5$a = 42"␤»
RabidGravy my $f = 42; say EVAL $f;
m: my $f = 42; say EVAL $f;
camelia rakudo-moar db61aa: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤EVAL is a very dangerous function!!! (use the MONKEY-SEE-NO-EVAL pragma to override this error,␤but only if you're VERY sure your data contains no injection attacks)␤at <tmp>:1␤------> 3my $f = 42; …»
lizmat m: { use MONKEY-SEE-NO-EVAL }; EVAL 'my $a = 42'
camelia ( no output )
lizmat ah, ok
m: { use MONKEY-SEE-NO-EVAL }; my $f = 42; EVAL $f 10:05
camelia rakudo-moar db61aa: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤EVAL is a very dangerous function!!! (use the MONKEY-SEE-NO-EVAL pragma to override this error,␤but only if you're VERY sure your data contains no injection attacks)␤at <tmp>:1␤------> 3ONKEY-SEE-NO-E…»
lizmat m: { use MONKEY-SEE-NO-EVAL; my $f = 42; EVAL $f }
camelia ( no output )
lizmat so yes, lexical
RabidGravy cool, I proceeded on that assumption :) 10:08
10:26 seatek left
samcv anybody know if i can asynchronously run nativecall functions? 10:43
run a nativecall function processing the data but can terminate before it returns depending on the output of it
should work with promises? 10:44
10:49 kjs_ joined 10:51 leont joined
nine Does an introduction into web programming in Perl 6 exist? Any pointer at what to use? 10:54
lizmat perhaps tbrowder has an idea ? 10:55
dalek osystem: 1813d2f | (Pawel Pabian)++ | META.list:
Rename META.info to META6.json to be more compatible with S22 spec.
10:56
11:12 AlexDaniel joined
RabidGravy samcv, well you can definitely run them asynchronously, but the terminating behaviour is dependent on the function itself 11:23
of course most library functions that are designed to be used in that way will actually take a function callback to provide the data 11:24
nine, depends on how much you want the module to do, I've had a lot of success with the HTTP::Server::Tiny/Crust combo 11:26
but if you want the module to deal with the templating and everything else then maybe something else
Bailador is coming on and I fixed Hiker the other dayd 11:27
samcv, also note that the thread safety or otherwise of a C library function is entirely dependent on its implementation - there are still libraries out there which use static data which usually don't play nicely with threads 11:30
nine RabidGravy: I'm contemplating giving a "Web dev and Perl 6" talk. While I've got good material on how to use Perl 5 frameworks and modules in Perl 6, I have a serious lack of knowledge about how far we are with pure Perl 6 web dev. 11:31
RabidGravy samc,, if the library provides an init() or something that returns an opaque pointer or struct that is then passed on to the other functions then you're usually good to go 11:32
samcv, ^ rather
nine, I think it can be summarised as "the fundamentals are getting there, but there isn't a high level of abstraction yet" :) 11:33
11:33 araujo__ left 11:34 araujo joined
RabidGravy essentially if you think of Bailador as being in the same vein as Dancer and Crust as being similar to Plack then you won't go far wrong 11:34
11:35 araujo left 11:36 domidumont left 11:41 kjs_ left
RabidGravy nine, only example in the wild that I have is Lumberjack::Application 11:43
which uses Crust/Template6/Websockets ....
11:45 CIAvash joined
RabidGravy also Audio::StreamThing which isn't a traditional web application however 11:51
11:52 cdg joined 11:54 pierre_ joined 11:55 kurahaupo joined, cdg_ joined 11:56 cdg left, pierre_ left 11:57 pierre_ joined 11:59 kjs_ joined
tbrowder lizmat: I would love to know about such a link about web programming in P6. The only thing i've found is the various p6 frameworks in the ecosystem. I wouldn't be surprised if Gabor were working on such a thing. 12:01
nine tbrowder: I've seen a talk by gabor about web dev in Perl 6 but that was really just a Bailador introduction. And lots of questions were answered by "you'll have fun implementing infrastructure"
not a quote but that was the gist ;) 12:02
RabidGravy I was looking at Scala's Play framework at work this week, and whilst people might rave about Scala - what we have is already more sophisticated than that 12:10
there's a really good new "web framework paradigm" in Perl 6 waiting to get out but I haven't quite grasped it yet 12:14
12:17 kurahaupo left 12:20 kurahaupo__ joined 12:25 kurahaupo_ joined 12:26 kurahaupo__ left
nine Yeah, I've been thinking about that on and off, too. I am however fairly biased towards Catalyst, as I have litte experience with anything else. 12:27
12:28 nadim joined
RabidGravy yeah, me too - I think nearly everyone is influenced by some existing framework - whether that's Catalyst, Dancer, Mojolicious or whatever - what we need is some ambitious young tyro to come in who hasn't got the baggage from other things and just make something 12:30
nine OTOH Mojolicous and Catalyst were both started by sri 12:38
RabidGravy and Catalyst was basically a fork of Mayflower which was started by Simon Cozens (who was a young tyro at that time ;-) 12:43
12:43 aborazmeh joined, aborazmeh left, aborazmeh joined 12:48 andrzejku_ left, andrzejku_ joined
RabidGravy I think there needs to be a "Perl 6 Web Framework Hackathon" in a place with loads of booze 12:48
12:55 Actualeyes joined 13:10 cibs left 13:11 cibs joined 13:15 andrzejku_ left, andrzejku_ joined
RabidGravy the problem is that whenever this has been discussed before certain people think that you're saying that all of those other things are shit and get all upset, whereas what is actually being said that given a completely blank sheet you'd probably come up with something different in P6 vs P5 13:15
nine Like you wouldn't do the same as Catalyst because in Perl 6 you have real, introspectable method signatures 13:19
I kinda think I would like Catalyst's routing (using the mentioned signatures) and Dancer's dynamically scoped variables, so you'd not have to pass around $c everywhere. 13:20
13:22 BenGoldberg joined
BenGoldberg m: say use Test; 13:25
camelia rakudo-moar fc47bb: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared name:␤ Test used at line 1␤Undeclared routine:␤ use used at line 1␤␤»
BenGoldberg m: use Test;
camelia ( no output )
BenGoldberg m: say do use Test; 13:26
camelia rakudo-moar fc47bb: OUTPUT«Nil␤»
RabidGravy nine, I quite liked how DrForr was going with Prancer using multi-dispatch to find the routes 13:27
13:33 cdg_ left
RabidGravy there's a sweet spot around multi-dispatch, traits and introspection - I'll get there at some point 13:34
13:36 kjs_ left
RabidGravy maybe I'll do a provocative talk on this at the LPW to chivvy along some discussion 13:38
13:55 aborazmeh left, domidumont joined 13:56 snowman joined
viki ehehe... an "Engineering Manager at Red Hat" isn't too happy that Perl 6's version of code is like 3 times shorter than Rust's: twitter.com/acruiz/status/792726277912395776 13:58
I wouldn't be too surprised if there's a shorter version, but... just show it to me dude :P
nine RabidGravy: though I wonder if that's where a web programmer's actual problems are.
viki Probably not :) routes are like 0.0005% of all of my apps code more often than not :) 13:59
nine Maintainability of our large web apps suffers not from odd looking routing syntax must mostly from architectural issues. Most notably people putting far too much code into controllers. 14:00
And *::Utils packages
And on the other end, models being implemented right into DBIx::Class Result and ResultSet classes. Now having business logic there instead of controllers is already a huge step forward, but it makes re-using that code for data you didn't fetch from a DB hard. 14:02
For example when you would like to do some calculations on the user's input before writing it to the DB when the code was written to work with query results. 14:03
RabidGravy yes, but that part is just "crap programming" ;-)
nine Yes and no. If it were dead easy to put all our business logic in plain old classes and have simple (or even better, free) ways to convert DBIC results to such classes, people would just do that. 14:04
14:05 rurban left
masak nine: what's making it not-dead-easy? 14:05
nine Now with Moose creating lots of classes is already nice. In Perl 6 it's downright the easiest thing to do.
RabidGravy I've always worked like that, make a DB layer, make a business logic layer, consume business logic layer in the web part 14:06
nine masak: maybe it's just my own lack of knowledge. 14:07
masak nine: no, I was genuinely curious what's currently holding things back. you're most likely right that there is something. 14:08
viki: it's a pity you lost the high ground by being snarky with the guy there at the end :( 14:09
RabidGravy in the thing I made for "large investment bank" I had a trait that proxied things from the DB layer into the business layer where appropriate
masak viki: I know it's all too easy in a technical discussion to let hotbloodedness get the better of you. the conversation was going well until that point.
RabidGravy Moose being lovely like that (and indeed Perl 6) 14:10
14:12 domidumont left 14:13 CIAvash left 14:18 rurban joined 14:20 bjz left
RabidGravy right, that's GD::Raw fixed - what's up next :) 14:23
14:26 pierre_ left
RabidGravy but only 16 pull requests in October that's a bit slack 14:27
viki masak: I don't consider "let me google it for you" going well. 14:34
nine masak: I've thought a bit more about it. The code we have in ResultSet classes is good as it is (it's about how to find results after all or more importantly, how to re-use code for querying). 14:35
viki He didn't have an answer. That's why from the start he was throwing bullshit half-phrases around instead of showing two lines of code.
nine masak: The code in Result classes (the objects we get from the DB queries) however should not depend in DBIx::Class as that hurts re-use and testing. But I don't know of a way for a query to give me my plain old objects. 14:36
And if there were a way, I don't know how to maintain the simplicity of accessing related objects for example. 14:37
While there is a settable result_class accessor in DBIx::Class resultsets, it completely replaces the result class, thereby throwing out the kid with the bath water. 14:38
mst trying to move some of that logic from result classes to somewhere it could be re-used by alternative result classes is something I've been thinking about for years 14:39
nine Putting the business logic into roles and having a way to auto-apply those to the result objects would be nice. But even in Perl 6 we lack a way to enforce the user to only use the interface the role provides. 14:40
Which will lead people to treat those objects as DBIx::Class::Row objects anyway.
mst have you considered has-a rather than is-a 14:41
nine True. When there's a way to auto-apply a role, there's surely a way to auto-create an object and set an attribute.
mst I don't entirely understand the 'auto-apply a role' part 14:42
what I was more thinking was that you'd have a factory object
with an inflate_result method that called the row class' inflate_result, and then passed the return of that to new()
and then set $rs->result_class($factory_object)
nine What I meant by "auto" was just that if the user needs to type code like [email@hidden.address] BusinessLogicFoo.new-from-row($_)' we've lost already 14:43
mst what 14:44
I already told you how to not do that
result_class :(
nine Ah, only read that after finishing typing.
mst it was auto-apply rokles that confused me, because if you're returning the row object, just consume the role in the row class 14:45
but, yeah
sub inflate_result { my ($self, @args) = @_; $self->logic_class->new_from_row($self->dbic_row_class->inflate_result(@args)) }
nine So replace the result_class, but then manually call the DBIx::Class::Row subclass' constructor and the business logic class' one. Sounds implementable in a generic way.
mst precisely
I'm about 98% sure it's been done in perl5 before now to get two-layer code 14:46
RabidGravy well if you can get someone at DB to liberate the code I did most that already :) 14:48
mst RabidGravy: of the two layer pattern thingy? 14:49
RabidGravy except the business logic class had a role that did the part about getting the result and the attributes had traits to manage the relationship with the result 14:50
but yeah
nine And since we started out with web apps, there's the still unsolved issue with where the hell to augment the results with URIs. The endless $c->stash({ foo => map { $_->get_columns, uri_edit => $c->uri_for(...) } @results });
mst oh, ew, that's not how you do it at all :( 14:51
14:51 khw joined
mst I mean, it's unsolved in general, I agree, but ugly newbie catalyst code like that is just intentionally hurting yourself 14:51
nine I think by now we have just about every way to do that in our code base... But maybe you have one that I hate less? 14:52
14:53 nowan joined
mst generally, I'd have a :Chained part that stashes some subs called like foo_edit_uri and etc. 14:53
so I only have to write that once
then in the template [% foo_edit_uri(foo) %]
also, get_columns is massive encapsulation violation, use the accessors instead of poking into the object's guts like an animal 14:54
nine Promoting lazyness as a virtue may have uninteded side effects :) 14:55
RabidGravy I'd kinda be tempted for some result-aware uri template thing
or even object aware 14:56
mst my $uri_for = $c->curry::weak::uri_for;
$c->stash(foo_edit_uri => sub { $uri_for->(...) }, foo_create_uri => sub { $uri_for->(...) }, ...); 14:57
got me sufficiently far along that I couldn't find a further generalisation that wasn't more typing to configure than just writing the code
nine I wonder how well in practice business logic classes and actions correlate. Having a multi uri_for(My::Business::Product, 'edit') { ... }; multi uri_for(My::Business::Basket, 'show') { ... }; ... 14:58
I.e. using multi dispatch to promote business logic separation and save typing at the same time. 14:59
mst also depends if you're generating URLs within a REST service or for a server-side web UI
RabidGravy if you may be doing both it's stck it in the template 15:00
15:07 firstdayonthejob left 15:08 zakharyas joined 15:09 CIAvash joined
RabidGravy sometimes I'm a fan of things where the "actions" are completely normal (but possibly annotated) methods of a basically normal (but possibly annotated) class and can be used as such but become web actions when used in that context 15:11
this works better for API like things than UI type things obvioulsly 15:13
mst well, I mean, I tend towards the idea that if you have noticeable code in your controllers at all, you're doing the wrong thing 15:14
catalyst + roles + chained makes it fairly easy to have the would-be-boilerplate parts composed in
RabidGravy yeah, chained and roles is a massive combo 15:16
15:18 mcmillhj joined
RabidGravy especially if you have a lot of the same things under different parts of a rest interface 15:19
15:20 rurban left 15:22 cdg joined
mst RabidGravy: another thing people often miss 15:23
if Controller/Foo.pm if you create a MyApp::Controller::Foo::Bar class catalyst'll register that as a controller too
so you can basically metamodel-up a set of nested namespaces in one go
RabidGravy aye 15:25
15:30 rindolf left 15:33 firstdayonthejob joined 15:34 mcmillhj left
RabidGravy gah, that poxy cargo culted "perl6 -MPanda::Builder -e 'Panda::Builder.build($*CWD)'" is everywhere in the ecosystem 15:36
15:37 rindolf joined 15:40 kaare_ left 15:42 kaare_ joined
nine This is really scary. One can indeed pass a lexically scoped multi to Perl 5 like this: gist.github.com/niner/853be7c667b0...94738863b7 15:44
Now this makes me wonder: why is generating URIs a completely separated job from dispatch anyway? 15:45
mst it isn't 15:46
well, you're bypassing the dispatch-aware version
also I suspect creating a circular reference on $c
nine You mean because I don't pass action objects there?
mst correct.
I added that version along with Chained so that uri_for could ask the dispatcher to reverse engineer the URL for a particular chained endpoint and interleave the values correctly 15:48
you're just not currently using that :)
RabidGravy nine, do I take it that that is a Catalyst thing in Inline::Perl5 with the method attributes turned into traits?
nine RabidGravy: correct 15:49
RabidGravy that's quite cool
nine RabidGravy: I used my Catalyst demo project as test bed: github.com/niner/XStats/blob/maste...er/Root.pm
RabidGravy and the "CatalystX::Perl6::Component::Perl5Attributes;" does the trait/attribute magic? 15:51
nine mst: btw. if I can commit to overriding GLOBAL::CORE::bless, I should be able to go back to use v6-inline; again and thus lower Inline::Perl5's and Inline::Perl6's perl requirement considerably.
RabidGravy: it's not even that magical: github.com/niner/XStats/blob/maste...ibutes.pm6
mst nine: hmm. will objects constructed in XS still DTRT? 15:52
nine have to check that 15:53
I think not :/ sv_bless is a very low level thing 15:55
leont Quite 15:56
Darn thing doesn't even take a package name but the stash itself (which can lend itself for fun-with-internals) 15:57
nine Unfortunately I don't know of any other general hook for creating objects of a specific class 15:58
RabidGravy right, that's GetOpt::Tiny fixed 16:04
16:04 Actualeyes left
RabidGravy I think now it's time to track down all the failures down to a faulty Test::META test 16:04
mst nine: why are you trying to trap all construction?
nine mst: so that I can create the corresponding Perl 6 object and run its constructor if necessary. 16:08
If it weren't for the part about the constructor, I could even get by with lazily creating the Perl 6 object 16:09
mst nine: corresponding Perl6 object? 16:10
nine package Foo; use Moose; has 'foo' => (is => 'rw'); use v6::inline; has $.bar; method baz() { } 16:11
A Perl 5 object with a Perl 6 extension. I need a place to store the attributes defined bye the Perl 6 extension.
leont has been thinking about adding a mop to p5 for years, that would make life so much easier… 16:12
I don't think steven is going to try again, and TBH I think he was always aiming too high
mst I thought as of last year he actually liked his current design 16:13
FROGGS .oO( avoid the angry mop ) 16:15
mst nine: I don't see how intercepting bless() helps for that. seems to me that you'd be better off lazily allocating the perl6 bit, and having something like 16:17
sub BUILD { my ($self, $args) = @_; BUILDALL_PERL6(__PACKAGE__, $self, $args) }
nine So just define a convention for when you actually need to run a Perl 6 constructor? Yes, could work. 16:18
Current implementation intercepts bless, checks if the result is one of the extended packages and runs the Perl 6 constructor if it is. 16:19
mst how can it even know what arguments to give to the perl6 constructor in that case? 16:21
RabidGravy so I have some "recruitment screening" people asking me to prove what I have been doing for the last year and a half 16:22
do you think I can just point them at my github contributions and say "a shed load of Perl 6" ?
nine RabidGravy: I'd be fine with that ;) 16:23
RabidGravy they've already hired me (I've been there for a week) so the actual people responsible for the hiring were fine with it 16:24
nine mst: it doesn't. The old version passed along everything, the new version doesn't have access to the arguments. So a Perl 6 constructor is of limited use anyway.
mst nine: right, so, I think lazy-construct if the constructor doesn't have required args, and an explicit protocol for passing stuff if it does, and then you can have Moo/Moose integration to make it smoother if you want but people still have control, is the least worst approach? 16:26
FROGGS RabidGravy: print of your github profile summary page?
RabidGravy :)
FROGGS RabidGravy: so yeah, show them that you are really interested in what you are doing
mst FROGGS: screenshot embedded in a PPT embedded in a word doc! 16:27
FROGGS enthusiasts are hard to find, they should know :o9
nine mst: sounds kinda elaborate. But then it's about making the impossible simple, so it's par for the course I guess :)
mst (bonus points if you get the screenshot via PrtScr+scanner)
FROGGS mst: ohh, yeah... we have a bunch of ppl that put screenshots in a .docx just to email it... -.-
mst nine: actually, it isn't. it's a bunch of small things that work together :) 16:28
RabidGravy yeah why do people do that
most odd
mst BUILDALL_PERL6 (or whatever name) is the only 'real' thing
nine FROGGS: if they are not faxing those screenshots, consider yourself happy
mst then for convenience you build into the perl6 code auto-invoking that on demand if possible
RabidGravy or screenshots of terminal output
mst and for convenience you teach the perl5 OO systems to auto-invoke it as part of construction
but the core mechanism is basically your original bless() wrapper, except explicit and without the giant hack 16:29
FROGGS RabidGravy: we also have at least two employees that actually print a screenshot of a webpage I did, then draw lines on the piece of info they dont understand
AND THEN THEY SCAN IT AGAIN IN GREYSCALE JUST TO EMAIL IT ME AGAIN!!!111
mst (slowing bless() down just because Inline::Perl6 is loaded is not going to be helpful for sneaking -a- perl6 module into a perl5 project)
FROGGS some ppl just hate trees I guess 16:30
nine mst: that's what I feared most. Hence I haven't really committed myself to that path yet. 16:32
Thanks for showing a way out :)
mst hey, I want this to exist, and you're doing all the hard work of making it happen 16:34
16:37 cdg_ joined 16:39 cdg left 16:40 CIAvash left
RabidGravy Hmm the XML library is failing on 'latest' on travis, but not on a rakudo from about two weeks ago 16:40
that's special
RabidGravy goes 'latest' to test 16:41
some pesky optimisation I'd guess 16:45
16:46 skids joined 16:55 canopus left
TimToady sitting in hotel lobby soaking up free wifi for a bit... :) 16:56
17:00 canopus joined 17:02 Tonik joined
RabidGravy Ooh that is a bit special 17:03
mst oh? 17:04
RabidGravy previously "if $val eq $uri && $key.match(/^xmlns(\:||$) <( .* )>/) { return $/ }" worked (the $/ was set in the inner block), but now it isn't 17:05
17:05 brillenfux joined
RabidGravy the fix is just explicit pointy on the block, but hey 17:05
mst I still don't really understand how .match() and $/ and etc. interact 17:06
RabidGravy I'm quite relaxed about the way it is now, after all there is less magic
mst I've read all of the docs.perl6.org stuff about them but it feels like completely usable reference docs that could really do with a tutorial or at least a conceptual overview 17:07
RabidGravy yeah I suspect the regex stuff could do with a nice tutorial 17:08
viki xkcd.com/1171/ 17:10
lizmat mst: the scope in which you call .match, is where $/ gets set
same for .subst 17:11
mst lizmat: and an inner scope in a block doesn't? 17:12
lizmat hmmm...
indeed:
m: $/ = 42; { $/ = 666; say $/ }; say $/
camelia rakudo-moar fc47bb: OUTPUT«666␤666␤»
lizmat m: $/ = 42; sub { $/ = 666; say $/ }(); say $/ 17:13
camelia rakudo-moar fc47bb: OUTPUT«666␤42␤»
bartolin bisect: my int $a = -10; say $a % 12 17:16
bisectable6 bartolin, Bisecting by output (old=2015.12 new=fc47bbf) because on both starting points the exit code is 0
bartolin, bisect log: gist.github.com/ec7f648235960ddecc...535d9e3094
bartolin, (2016-06-04) github.com/rakudo/rakudo/commit/98...8302d621e1
lizmat I guess there's no slow fix for RT #128318 yet :-( 17:17
17:17 FROGGS_ joined
bartolin lizmat: ahh, I tried this because RT #127168 is still open, but seems to be fixed. seems to be the same underlying problem 17:20
17:21 FROGGS left
bartolin any objections to merging both tickets? 17:21
lizmat not from me :-)
bartolin ok, will merge them. thanks :-)
lizmat thank you for your relentless bug squashing! :-) 17:22
RabidGravy it was more
m: my $a = "foobar"; if $a.match(/foo/) { say $/ } 17:23
camelia rakudo-moar fc47bb: OUTPUT«「foo」␤»
RabidGravy which *doesn't* appear to work on 2016.10-107-gfc47bbf 17:24
viki committable6: fc47bbf my $a = "foobar"; if $a.match(/foo/) { say $/ }
committable6 viki, ¦«fc47bbf»: 「foo」
viki works
RabidGravy Hmm 17:25
lizmat it could well be I borked something in the refactor
specifically, I recall using a different nqp:: op for finding the $/ to set
perhaps that's the reason
RabidGravy well the code in XML (as above) wasn't working 17:26
MasterDuke bisectable6: my $a = "foobar"; if $a.match(/foo/) { say $/ }
bisectable6 MasterDuke, On both starting points (old=2015.12 new=fc47bbf) the exit code is 0 and the output is identical as well
MasterDuke, Output on both points: 「foo」
RabidGravy well this is all as maybe but the code I posted above *doesn't* 17:27
and it did before
viki Does it actually have "say $/"? I thought originally you showed a return
bartolin lizmat: on a related note: it looks like you put an additional bandaid for RT #128318 into src/core/Date.pm here: github.com/rakudo/rakudo/commit/d80c728e25
MasterDuke committable6: v6c my $a = "foobar"; if $a.match(/foo/) { say $/ }
committable6 MasterDuke, ¦«2015.12,2016.02,2016.03,2016.04,2016.05,2016.06,2016.07.1,2016.08.1,2016.09,2016.10,HEAD»: 「foo」
viki committable6: fc47bbf sub foo { my $a = "foobar"; if $a.match(/foo/) { return $/ } }; dd foo.caps 17:28
bartolin lizmat: it looks like that one could be removed (got a clean spectest on MoarVM without it)
committable6 viki, ¦«fc47bbf»: ()
viki committable6: fc47bbf sub foo { my $a = "foobar"; if $a.match(/foo/) { return $/ } }; dd foo.Str
committable6 viki, ¦«fc47bbf»: "foo"
viki ¯\_(ツ)_/¯
lizmat bartolin: but doesn't that break on the JVM then ? 17:29
RabidGravy viki: ok, seems I'm using nqp::getlexdyn in the new code, whereas the old code used nqp::getlexcaller 17:32
RabidGravy ah, okay
lizmat RabidGravy viki: going to change that and run a spectest: if clean, I'll commit
RabidGravy no biggy, I've fixed XML now
lizmat RabidGravy: could you add a test for it ? 17:33
17:33 espadrine left
RabidGravy I'm actually confused as to what it is that needs testing 17:33
bartolin lizmat: hmm, a quick test with the examples from RT #127161 looked good on JVM. I'll run a spectest and make a PR to revert d80c728e25 if everything looks good
lizmat bartolin++ 17:34
RabidGravy I've changed this code to return the .Str of the match and all is fine
lizmat RabidGravy: but still, could you provide a piece of code that shows the difference in behaviour ? 17:38
17:41 BenGoldberg left 17:42 djbkd joined 17:44 cdg_ left
RabidGravy right, I've got it now 17:44
17:46 rurban joined
RabidGravy m: sub foo { for <foobar bazbar> -> $a { if $a.match(/foo/) { return $/; } } }; say foo(); 17:46
camelia rakudo-moar fc47bb: OUTPUT«Nil␤»
RabidGravy that works different in 2016.09-53-gbb52f81 (which is the only other one I have to test with) 17:47
lizmat RabidGravy: thanks! 17:48
RabidGravy m: sub foo { for <foobar bazbar> -> $a { if $a.match(/foo/) -> $p { return $/; } } }; say foo();
camelia rakudo-moar fc47bb: OUTPUT«Nil␤»
RabidGravy m: sub foo { for <foobar bazbar> -> $a { if $a.match(/foo/) -> $p { return $p; } } }; say foo();
camelia rakudo-moar fc47bb: OUTPUT«「foo」␤»
RabidGravy is how I worked round it
lizmat changing the nqp op doesn't fix it 17:49
17:50 domidumont joined
lizmat hmmm,... 17:51
RabidGravy is it possible the scope of the for block is actually the one afflicting it?
lizmat m: if "foo".match(/foo/) { say $/ } 17:52
camelia rakudo-moar fc47bb: OUTPUT«「foo」␤»
RabidGravy yeah, it doesn't kick in until the for is introduced
FROGGS++ # making with the merging ;-) 17:54
lizmat m: for "foo" { if .match(/foo/) -> \m { say m } } # works
camelia rakudo-moar fc47bb: OUTPUT«「foo」␤»
lizmat m: for "foo" { if .match(/foo/) { say $/ } } # works
camelia rakudo-moar fc47bb: OUTPUT«Nil␤»
lizmat no, doesn't work
17:55 domidumont left, domidumont joined
lizmat well, it doesn't seem optimize related 17:57
star: for "foo" { if .match(/foo/) { say $/ } }
camelia star-m 2016.04: OUTPUT«「foo」␤»
lizmat and it did break after the release... 17:59
18:01 rurban left
RabidGravy well, the fix I put in to XML works fine with older versions too, so I'm quite relaxed about it 18:01
lizmat well, but I'm worried about further, subtle ecosystem fallout :-(
mst and it just seems like a weird and counterproductive behaviour change 18:02
feels like there should be a 6.c test for whatever's correct
18:03 dwarring joined
lizmat mst: agree 18:03
it is definitely not an intended change
bartolin bisect: sub foo { loop (my $i = 0; $i < 5; ++$i) { say $i; } }; foo # RT #127238 18:04
bisectable6 bartolin, Bisecting by exit code (old=2015.12 new=fc47bbf). Old exit code: 1
bartolin, bisect log: gist.github.com/ac94a5e1e9adc0c83e...d83c7f7156
bartolin, (2015-12-30) github.com/rakudo/rakudo/commit/37...de15d236c2
18:04 CIAvash joined
lizmat well, it is defintely b7201a8f22338a906f2d8027a that broke it :-( 18:05
RabidGravy I'm just testing all of my modules with 'latest' 18:08
lizmat arggh, it works in my debug /augment class Str file :-( 18:09
RabidGravy seeing how it is actually provoked I would say that it probably does want to be fixed thogh
lizmat RabidGravy: yeah. no argument there
argh, I hate it when identical code works differently when inside the setting 18:11
18:11 rurban joined
RabidGravy gah, Audio::Liquidsoap has gone broken for some other reason - yet again 18:11
lizmat :-( 18:13
please make sure this breakage creates a test :-)
RabidGravy It's usually something to do with my rebuilding 'liquidsoap' in such a way that it breaks the tests 18:14
18:14 BenGoldberg joined
RabidGravy and you don't want to be building liquidsoap for fun unless you love lots and lots of funny unexpected dependencies 18:15
lizmat m: for 42 { say "foo".match(/foo/); say $/ } 18:16
camelia rakudo-moar fc47bb: OUTPUT«「foo」␤Nil␤»
lizmat ^^^ weirder still
18:17 leego left, leego joined
FROGGS_ m: for 42 { my $/; say "foo".match(/foo/); say $/ } 18:18
camelia rakudo-moar fc47bb: OUTPUT«「foo」␤「foo」␤»
FROGGS_ m: my $/; for 42 { say "foo".match(/foo/); say $/ }
camelia rakudo-moar fc47bb: OUTPUT«Potential difficulties:␤ Redeclaration of symbol '$/'␤ at <tmp>:1␤ ------> 3my $/7⏏5; for 42 { say "foo".match(/foo/); say $␤「foo」␤(Any)␤»
FROGGS_ m: $/ = 111; for 42 { say "foo".match(/foo/); say $/ } 18:19
camelia rakudo-moar fc47bb: OUTPUT«「foo」␤111␤»
lizmat hmmm... maybe I broke something during my map optimizations :-( 18:20
star: for 42 { say "foo".madch(/foo/); say $/ } 18:22
camelia star-m 2016.04: OUTPUT«Method 'madch' not found for invocant of class 'Str'␤ in block <unit> at <tmp> line 1␤␤»
lizmat star: for 42 { say "foo".match(/foo/); say $/ }
RabidGravy but think of all the memory it's saving ;-)
camelia star-m 2016.04: OUTPUT«「foo」␤「foo」␤»
lizmat star: say $*VM 18:23
camelia star-m 2016.04: OUTPUT«moar (2016.04)␤»
lizmat ah, ok, so not the latest star
18:23 notostraca joined
lizmat the weird thing is that I have the refactored match code living as an augment on Str (called madch), and that code runs ok :-( 18:24
m: loop { say "foo".match(/foo/); die $/ } # seems to be related to for only 18:25
camelia rakudo-moar fc47bb: OUTPUT«「foo」␤foo␤ in block <unit> at <tmp> line 1␤␤»
lizmat star: for 42 { say MY::.keys } 18:29
camelia star-m 2016.04: OUTPUT«($_)␤»
18:29 kjs_ joined 18:30 kjs_ left
lizmat star: use nqp; say nqp::where($/); for 42 { say "foo".match(/foo/); say nqp::where($/); say $/ } 18:31
camelia star-m 2016.04: OUTPUT«24626848␤「foo」␤140458762181888␤「foo」␤»
lizmat m: use nqp; say nqp::where($/); for 42 { say "foo".match(/foo/); say nqp::where($/); say $/ }
camelia rakudo-moar fc47bb: OUTPUT«33348352␤「foo」␤33348352␤Nil␤»
lizmat so, before the scope had its own $/, and now it has the outer one 18:32
I assume the former is correct, no?
hmmm... maybe this should be taken to #perl6-dev
18:35 seatek joined 18:39 labster joined
RabidGravy so just tested 'latest' against all my modules, no other outfall 18:43
lizmat *phew* :-) 18:52
19:06 kurahaupo__ joined 19:09 kurahaupo_ left 19:10 zakharyas left 19:11 kurahaupo__ is now known as kurahaupo 19:16 CIAvash left 19:17 darutoko left, _KaLiF joined
rindolf Can anybody give me some guidance about how to optimise sprintf() in Rakudo? 19:19
yoleaux 19 Oct 2016 01:37Z <iBakeCake> rindolf: the code's at github.com/rakudo/rakudo/blob/eb69...ol.pm#L319 You want to profile stuff with --profile argument to perl6; perl6.party's articles with "Hacking" in their title may or may not prove helpful vis-a-vis getting and building source
19 Oct 2016 01:38Z <iBakeCake> rindolf: the stuff that starts with nqp:: is nqp ops and generally would be in github.com/perl6/nqp (see docs/)
stmuk_ datafloq.com/read/perl-6-is-remark...-data/2409
rindolf oh.
stmuk_ bit of an odd article but at least positive
mst "It's virtually unrecognizable from previous versions of the 15-year-old programming language." 19:20
fail
oh dear lord it's the p3rl.org/Net::FullAuto developer
rindolf .tell iBakeCake thanks for the info about rakudo and sprintf 19:21
yoleaux rindolf: I'll pass your message to iBakeCake.
19:21 kurahaupo__ joined 19:23 kurahaupo left
lizmat mst: Article Author: Annie Qureshi 19:27
that's not Brian Kelly, afaik
FROGGS_ yes, only the first and second quote is
mst yeah, sorry, it has a similar level of factual error to stuff written by him so my brain pattern matched 19:28
FROGGS_ aye 19:29
lizmat fwiw, I've always felt that Hadoop is overrated, and bad for the environment in general 19:31
it's not fast enough? Just throw more metal at it!
19:34 brillenfux left 19:47 mcmillhj joined 19:48 viki is now known as iBakeCake
iBakeCake . 19:48
yoleaux 19:21Z <rindolf> iBakeCake: thanks for the info about rakudo and sprintf
19:48 iBakeCake is now known as viki
rindolf viki: thanks again. 19:49
viki any time 19:58
20:01 mememan joined
mememan Does anyone have any idea about how to check for sdlevents with SDL2::Raw and check if the user used the scroll wheel 20:01
20:02 rurban left
FROGGS_ mememan: you usually poll for events, and inspect the event object you get 20:02
20:02 wamba left
mememan I've gotten that far but I don't know how to check if the user scrolled 20:02
I need to know the amount scrolled too 20:03
20:03 cdg joined
mememan I've noticed in someone else's code that they check the event.type against different integers representing different events 20:03
any idea about which number represents scroll wheel movement? 20:04
samcv is there a way i can define my own alias for a datatype? i need to alias curl_off_t to uint64 20:05
obvieously curl_off_t is uint64 doesn't work :P
but the size of curl_off_t changes depending on a 32 or 64 bit machine so i need to be able to define a datatype myself 20:06
FROGGS_ mememan: github.com/timo/SDL2_raw-p6/blob/m...aw.pm#L287 20:07
mememan: type should be equal to MOUSEWHEEL 20:08
m: constant curl_off_t = uint64; 20:09
camelia ( no output )
FROGGS_ samcv: ^^
mememan ah
FROGGS_ m: constant curl_off_t = uint64; my curl_off_t $foo = 42;
camelia ( no output )
mememan thanks very much
FROGGS_ :o)
samcv nice :)))
20:10 TakinOver left, kjs_ joined
AlexDaniel well, yeah… just don't rely on it in any way 20:10
20:10 mcmillhj left
FROGGS_ it is good enough to be used in nativecall signatures 20:11
20:12 zakharyas joined
mememan how do I get the direction/amount FROGGS_ 20:13
samcv ahhh FROGGS_ CStruct representation only handles attributes of type:
(u)int8, (u)int16, (u)int32, (u)int64, (u)long, (u)longlong, num16, num32, (s)size_t, bool, Str
FROGGS_ ewww
samcv is there a way around this?
FROGGS_ mememan: github.com/timo/SDL2_raw-p6/blob/m...#L347-L356 20:14
mememan: looks like the Event struct ist not correctly implemented... maybe look at the SDL2 C lib, how the struct has to look like?
mememan: then you'd be able to cast it to a correct struct implementation, until SDL2::Raw gets fixed 20:15
mememan oh
FROGGS_ m: use NativeCall; constant flubber = uint64; class Foo is repr<CStruct> { has flubber $.bar } 20:16
camelia ( no output )
FROGGS_ samcv: why don't I get an error?
20:17 domidumont left
FROGGS_ mememan: hg.libsdl.org/SDL/file/46cfe31e501...nts.h#l174 20:18
mememan: try to get your hands at data1 and data2
mememan: ohh, here: wiki.libsdl.org/SDL_MouseWheelEven...yEvents%29 20:19
samcv hmm i got it working. it was somewhere else in the struct my bad 20:22
FROGGS_ phew :o) 20:23
samcv yeah it errored on a different line than the problem was on
20:36 bjz joined
rindolf Hi all! How do I create a static constant variable in NQP? I cannot find anything in this google search or the DDG search - encrypted.google.com/search?hl=en&...20constant 20:36
moritz constant variable? 20:37
20:37 Tonik left
moritz nqp: constant $x := 42; 20:37
camelia nqp-moarvm: OUTPUT«Confused at line 2, near "constant $"␤ at gen/moar/stage2/NQPHLL.nqp:621 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:panic)␤ from gen/moar/stage2/NQP.nqp:908 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/nqp.moarvm:comp_unit)␤ from gen/moar…»
moritz not supported, I guess
20:40 TakinOver joined
lizmat rindolf: there is no assignment in nqp, everything is a constant :-) 20:40
rindolf moritz: ah. :-(
lizmat you can only bind 20:41
rindolf lizmat: hmmm... I see mutability there.
lizmat where ?
rindolf like $exp := -$exp;
lizmat that's rebinding
rindolf lizmat: ah.
lizmat you still cannot assign to it, because there *is* no assignment in nqp 20:42
rindolf lizmat: anyway, how can I define a global or state/static variable.
lizmat nqp:: my $a = 42
20:42 zakharyas1 joined
rindolf s/\.$/?/ 20:42
FROGGS_ nqp-m: my $a = 42
camelia nqp-moarvm: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near " 42"␤ at gen/moar/stage2/NQPHLL.nqp:621 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:panic)␤ from <unknown>:1 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/nqp.moarvm:inf…»
lizmat FROGGS_++ 20:43
:-)
FROGGS_ rindolf: use a sub?
rindolf FROGGS_: what?
FROGGS_: it's already in a subroutine.
FROGGS_ rindolf: like in Perl 5... use a subroutine to fake constants...
mst sub a { 42 } 20:45
20:46 zakharyas1 left, adeohluwa joined
rindolf FROGGS_: mst : thanks! Will it also evaluate functions and expressions? 20:46
FROGGS_ rindolf: yes, it will 20:47
rindolf FROGGS_: ok, thanks! 20:48
FROGGS_ rindolf: though, perhaps you might want to force evaluation.... like: my $THING := <expression here>; sub THING { $THING };
(so that the expression will only be evaluated once) 20:49
rindolf FROGGS_: I want it to be evaluated only once.
FROGGS_ and you have to use the "constant" as THING() of course, because nqp has no listops
RabidGravy finally gives in with trying to do anything clever with library versions with GD::Raw and just sticks a 'trusty' on travis 20:50
rindolf FROGGS_: is it preferable over using «$THING» directly? 20:54
FROGGS_ rindolf: no, I'd use $THING and just avoid rebinding :o) 21:00
rindolf FROGGS_: ok, thanks! 21:01
FROGGS_ rindolf: what are you up to, ooc?
21:02 bjz_ joined
rindolf FROGGS_: trying to optimise sprintf 21:02
21:03 bjz left
FROGGS_ ahh, I see 21:03
21:05 adeohluwa left 21:07 seatek left 21:10 kjs_ left
FROGGS_ mememan: have you seen that already? github.com/timo/SDL2_raw-p6/blob/m...aw.pm#L419 21:13
21:15 kjs_ joined 21:19 wamba joined
samcv hmm so i have nativecall working fine. but i get the output of the call printed to terminal (the function only 'returns' an int but is printing out all the data it gets) 21:19
how do i capture this data? i'm not sure "where" to access it
geekosaur if it's going to the terminal then the function is writing to its standard output and/or standard error
samcv ah ok 21:20
RabidGravy which is kinda special
FROGGS_ samcv: what function are you calling?
samcv curl_easy_perform
that makes sense it's writing to its stdout. but i'm unsure how to access it 21:21
geekosaur look at curl_easy_setopt 21:22
21:22 mohae_ joined
samcv well how do i access a programs stdout? i mean i've done file handles before and qx 21:22
i would like to open a filehandle for its stdout but i'm not sure how to do that 21:23
geekosaur this is a function, not a program. perl 6 does not currently have fork, so you'd need to run another copy in a subprocess; I don't know offhand if rakudo exposes a way to redirect filehandles in a way that libuv understands
you can't, it's a function, it's *your* stdout 21:24
it's not a separate process
FROGGS_ samcv: I guess you have to register a callback: curl.haxx.se/libcurl/c/curl_easy_setopt.html
samcv ahhhhh ok
geekosaur it's not even a separate thread, not that that would help because handles are process level not thread level
samcv ok that helps greatly geekosaur
in me understanding what's going on :)
geekosaur yes, I pointed at curl_easy_setopt already
samcv i meant about it being in my process
21:25 mohae left
samcv and that's why it's going to my stdout 21:25
geekosaur and you can't back up and read your own stdout
samcv yeah
geekosaur it's write only (except in one special case where the output is a terminal so can't be rewound anyway)
viki m: use NativeCall; sub fork is native {}; fork; say "a spoon, a spork, a..."
camelia rakudo-moar c9730a: OUTPUT«a spoon, a spork, a...␤a spoon, a spork, a...␤»
FROGGS_ if you are interested in the "verbose" output, look at that: curl.haxx.se/libcurl/c/CURLOPT_VERBOSE.html 21:26
viki m: use NativeCall; sub fork is native {}; fork; say $*PID
camelia rakudo-moar c9730a: OUTPUT«10216␤10217␤»
Hotkeys Why is it that there is not product function/method but there is one for sum? 21:28
I know you can just [*] but still
samcv ok so i fork it and then i get a PID. how to open a filehandle on a PID?
geekosaur you use the pipe syscall first
samcv or is that not possible/hard and i should use curlopt_writefunction
geekosaur pids don't have filehandles
viki Hotkeys: more common 21:29
geekosaur ...if you have to do this using nativecall to get at the posix pipe/fork/etc. then you will go insane fairly quickly :/
samcv :( thanks for the advice geekosaur
geekosaur meanwhile I don't understand why a curl "easy" interface doesn't have a "just write it to a file dammit" 21:30
but requires you to register a data callback
RabidGravy samcv, for reference I think there is at least one binding to libcurl in the ecosystem already, you may want to check that out 21:32
samcv yeah maybe i will see how they do it
geekosaur I think if curl doesn't provide this already (and it didn't look to me like it does) then your easiest option is to use run to run a subsidiary perl6 that makes the curl calls
and use :out with that
samcv heh :) that is one way to do it 21:33
viki curl as in the program? HTTP::Tinyish is a wrapper that shells out to it
samcv not the program as in the library
viki ah
geekosaur libcurl, yeh
samcv is there a way to launch a perl 6 script without incurring launching rakudo twice? or is that not possible.
regarding startup time
RabidGravy no 21:34
samcv though i could make it long running
mst I believe the answer currently is "not really"
samcv ok that's what i thought
RabidGravy because it is a second process
mst that system probably needs replacing at some point, but I don't have a coherent idea of what a better replacement would look like 21:35
21:35 bjz_ left
RabidGravy I've got tests that fire up second perl6 processes for "reasons" 21:37
samcv yeah perl6-net-curl uses a buffer 21:38
21:38 leego left
rindolf with my changes I am getting these test failures - paste.debian.net/890995/ 21:39
21:43 leego joined
rindolf ok, I am getting these exact ones without my changes as well. 21:48
21:55 seatek joined
MasterDuke but are you getting the exact same failures quicker with your changes? 21:57
21:59 leego left, leego joined 22:00 seatek left 22:01 FROGGS_ left 22:02 bjz joined, zakharyas left 22:03 seatek joined 22:09 RabidGravy left 22:10 kurahaupo__ left 22:11 kurahaupo__ joined, kurahaupo__ left, kurahaupo__ joined, kurahaupo__ left 22:12 kurahaupo__ joined, kurahaupo__ left 22:14 rurban joined
rindolf MasterDuke: heh. 22:15
github.com/shlomif/nqp/tree/optimize-sprintf - here are my changes - they aren't much but it's start - now I need to benchmark them.
MasterDuke nice, making things faster is always appreciated 22:17
22:17 bjz left 22:18 leego left, leego joined 22:19 kaare_ left, leego left
rindolf MasterDuke: thanks! 22:20
22:20 leego joined, cdg left, kaare_ joined 22:24 _KaLiF left 22:25 paulmr joined 22:29 nadim_ joined, nadim left, rurban left 22:31 wamba left 22:35 nadim_ left
samcv hmm i'm getting this error: write bytes requires an object with REPR MVMOSHandle 22:36
calling write on a filehandle
$filehandle.write($buf);
fh created with $fh = IO::Handle.new 22:38
this example shows same error: my $buf = Buf.new; my $fh = IO::Handle.new; $fh.write($buf); but in my code there's actually something in the buffer 22:39
22:39 leego left
ugexe did you open your handle or are you trying to write to a closed handle? 22:39
22:40 leego joined, notostraca left 22:41 paulmr left
samcv hmm yeah i think that's the issue. 22:42
hmm is there a way to have a 'virtual' file handle, that doesn't get writen to any actual file? 22:43
or do i want some other object 22:44
ugexe why not just use the buf then
samcv well i want to read from it while it's downloading the page
ugexe you cant read from a handle created in another thread 22:45
samcv yeah. what i want to do is read from a buffer but not wait for it to return first 22:46
ugexe i know
you need some form of IPC 22:47
maybe tell curl to write to a file and have a separate thread read that file as its being written to 22:48
otherwise you have to put your actions into the parsing logic: i.e. find end of http header then stop receiving data and decide to continue or not based on some values 22:49
io::socket::async might be able to but im assuming you'd need SSL so thats no good 22:50
22:51 Actualeyes joined
samcv curl will decode the ssl though 22:52
i will look into io::socket::async
ugexe you'd want to look at Proc::Async then 22:53
22:54 kjs_ left 23:02 TakinOver left 23:05 llfourn joined 23:07 avuserow left 23:10 rurban joined 23:12 mememan left 23:31 rindolf left 23:34 perturbation joined 23:38 firstdayonthejob left