»ö« 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:05
j1n3l0_ left
00:19
MilkmanD1n left,
MilkmanDan joined
00:25
xenoterracide left
00:26
BenGoldberg joined
00:32
Rotwang left
00:36
exixt joined
00:40
xenoterracide joined
00:44
akaseki joined
00:47
Salai left,
chenryn left
00:48
xenoterracide left
00:51
nbrown__ joined
01:02
yeahnoob joined
|
|||
TimToady | it's the $output dance that isn't working in Parrot | 01:02 | |
if you put $output //= $*OUT in the top of sub plan, the tests work better | |||
dinner & | 01:03 | ||
01:08
xenoterracide joined
01:24
anaeem1 joined
01:27
FROGGS_ joined
01:28
anaeem1 left
01:30
FROGGS left
01:33
dwarring left
|
|||
carlin | nine++ # making Inline::Perl5 "safe to use" | 01:37 | |
01:38
dayangkun joined
|
|||
carlin | tadzik: panda's projects.list still isn't updating :( | 01:38 | |
01:44
nbrown__ left
01:45
nbrown__ joined,
colomon left
01:46
colomon joined
01:52
leont left
02:03
nbrown__ left
02:04
nbrown__ joined
02:09
nbrown__ left
02:20
chenryn joined
02:24
rindolf joined
02:27
nbrown__ joined
02:31
nbrown__ left
02:51
noganex joined
02:55
noganex_ left
02:56
telex left
02:58
telex joined
03:05
immortal joined,
immortal left,
immortal joined
|
|||
dalek | kudo/nom: a9aebc1 | TimToady++ | lib/Test.pm: work around Parrot's INIT difficulties Using INIT here doesn't buy us anything in any case. |
03:07 | |
03:07
erkan left
03:09
anaeem1 joined
|
|||
TimToady | that should fix the 100% test failure rate on Parrot | 03:13 | |
if PROCESS requires INIT somewhere to get run-time process values, then PROCESS needs to be fixed | 03:15 | ||
oh, wait, I forgot the real issue, fix coming | 03:19 | ||
03:23
bcode is now known as we
03:26
jerrycheung joined
03:27
kaare_ joined
03:29
xragnar left
03:30
xragnar joined
|
|||
dalek | kudo/nom: 88bcc59 | TimToady++ | lib/Test.pm: work around parrot INIT problems But we still need to wait till main's run time. |
03:36 | |
03:39
hagiri joined
03:41
xenoterracide left
03:43
esaym153 joined
04:13
[Sno] left
04:22
Timbus left,
Timbus joined
04:28
mattp_ left,
mattp_ joined
04:32
kaare_ left
|
|||
hagiri | TimToady | 04:33 | |
:) | |||
hi all | |||
:D | |||
04:37
anaeem1 left,
noganex left
04:38
noganex joined
04:40
mr-foobar left
04:41
chenryn left
04:44
dwarring joined,
awwaiid left
|
|||
TimToady | current stats: r-j fails 10 tests, r-m fails 1 test (probably a flapper), and r-p fails 25 tests | 04:51 | |
on Linux Mint, 64-bit | 04:52 | ||
04:55
chenryn joined
04:59
rindolf left,
rindolf joined
05:01
mattp_ left
05:07
mattp_ joined
05:08
kaare_ joined
05:10
anaeem1 joined
05:16
BenGoldberg left
05:20
yeahnoob left
05:23
MikeFair joined,
chenryn left
05:30
chenryn joined
05:32
yeahnoob joined
05:34
cbk1090 left
05:35
[Sno] joined,
kaleem joined
05:41
yeahnoob left
05:46
cbk1090 joined
05:50
dwarring left
05:52
mr-foobar joined
05:56
xfix_ is now known as xfix,
xfix left,
xfix joined
05:58
yeahnoob joined
06:08
SamuraiJack joined
06:12
FROGGS_ left
|
|||
timotimo | that doesn't even sound bad! | 06:13 | |
06:17
anaeem1 left
06:20
grondilu_ left
06:37
darutoko joined
06:38
hagiri left
06:41
yeahnoob left
06:44
virtualsue joined
06:49
MikeFair left
|
|||
sergot | morning o/ | 06:54 | |
06:55
cbk1090 left
06:56
zakharyas joined
|
|||
moritz | \o | 06:57 | |
07:00
anaeem1 joined,
yeahnoob joined
07:07
Px12 joined
07:08
cbk1090 joined
07:10
Px12 left
07:15
nbrown__ joined,
nbrown__ left
07:17
brrt joined
|
|||
nine | morning \o/ | 07:17 | |
07:19
Rotwang joined
|
|||
brrt | \o | 07:21 | |
07:23
Px12 joined
07:24
rindolf left
07:27
Px12 left
07:29
ivan`` left
|
|||
tadzik | carlin: thank you, I'll start an investigation | 07:31 | |
moritz: do you know where I could look for any logs on feather as to why my cronjobs aren't working? | |||
07:33
ivan`` joined
07:34
mr-foobar left
07:35
\00 left
07:36
j1n3l0 left
07:38
kaleem left
07:43
anaeem1 left
07:48
mr-foobar joined
07:54
FROGGS joined,
Rounin_ is now known as Rounin
|
|||
brrt recalls reading that feather was in maintenance mode? | 07:57 | ||
moritz | tadzik: well, it could send mails (dunno if the MTA works), or syslog | 07:59 | |
nine | or the journal if it's a modern enough system | 08:02 | |
08:02
\00 joined
08:09
awwaiid joined
08:26
virtualsue left
|
|||
tadzik | modern as in lennartd-modern? :P | 08:28 | |
08:31
Px12 joined
|
|||
nine | modern as in finally-after-decades-reliable-daemon-management-modern. | 08:31 | |
08:35
Px12 left
08:36
jerrycheung left
|
|||
brrt | lennartd? oh. i get it | 08:46 | |
08:54
zakharyas left
08:56
zakharyas joined
|
|||
timotimo | *i* like systemd | 09:18 | |
tadzik | not sure if it's systemd I detest, but since it came around a lot of things I need to do got insanely complicated | 09:19 | |
and I didn't even try creating my own daemons yet | |||
Timbus | setting up a basic daemon tho? real easy and useful | ||
but the ubuntu init thingy does that just as easily | 09:20 | ||
tadzik | systemd seems tightly coupled to everything system related, which I really don't like | ||
for instance I needed to mess with it when turning off the close-the-lid-to-suspend | |||
Timbus | yeah lots of.. features | 09:21 | |
nine | tadzik: arguably it's the right place for things like close-the-lid-to-suspend. It is a system setting after all. | 09:22 | |
brrt | my 2c: it's complicated. my linux system is fairly complicated. i used to have sysv init (i think?) on slackware, and it was simple, but it relied on 'higher' components doing all the useful stuff, which was ugly | ||
i.e. sysv init is really good if you have a fixed server that has to run a fixed set of services | |||
nine | systemd also made some insanely complicated tasks extremely simple. Like making sure a forking daemon is really, really shut down completely including all external commands it started. | ||
That was simply impossible before. | 09:23 | ||
timotimo | tadzik: you shouldn't need to mess with that any more | ||
09:23
SamuraiJack left
|
|||
brrt | in my experience, anything that is really dynamic is so much easier | 09:23 | |
timotimo | tadzik: at least the xfce power manager sends an inhibit to systemd so that it ignores power-management-related buttons | ||
brrt | but yeah, it's a complicated system | ||
nine | Thanks to systemd I also now get _all_ stdout and stderr output of all daemons in the log system. This proved extremely useful in debugging. | ||
timotimo | yes. oh god, that is SO good, nine | 09:24 | |
09:24
leont joined
|
|||
tadzik | nine: right, it's a system setting. It was suspposed to be an init system, but now it's everything | 09:25 | |
nine | And setting up new services is rather trivial. I even have it start irssi in a screen session on my personal server running with my user because that's just 5 lines of trivial configuration :) | ||
tadzik | including a system settings manager | ||
timotimo | nine: ooooh | ||
tadzik: what do you think of systemd-inhibit? | |||
tadzik | timotimo: never heard of it | 09:26 | |
nine | tadzik: no it was never supposed to be just an init system. That's a common misconception. systemd-init is the init system. systemd is a project for rethinking common infrastructure of linux systems and for standardizing these components. Finanly. | ||
tadzik | hm, I see | ||
09:26
kaleem joined
|
|||
nine | timotimo: gist.github.com/niner/810b7fef636a660af1c9 | 09:27 | |
timotimo | yes, and you can get as little or as much of systemd in your system as you'd like | ||
(i have not tried, though) | |||
nine: that is seriously cool. | |||
brrt | pretty awesome yeah | 09:28 | |
timotimo | also, i'm pretty excited about the kdbus stuff | ||
nine | Hell systemd starts even my ProgressQuest (www.progressquest.com) client in wine and xvnc on my server and restarts it when the cronjob kills it every night because that thing is just buggy and hangs after a while ;) | 09:29 | |
xiaomiao | brrt: sysvinit is good at being pid1 | ||
timotimo | hah hah :) | ||
xiaomiao | nine: monit ftw? ;) | ||
xiaomiao has been spoilt with sane startup for a few years, downgrading to gnomeOS is not an option | |||
nine | xiaomiao: what for? Running services is what an init system is for. No need for complicated extra tools. | 09:30 | |
xiaomiao | nine: well, monit can check if something is responding to http requests on port 3128 | ||
nine | xiaomiao: sysvinit has never been good as pid1. I repeat: sysvinit _cannot_ reliably kill a daemon. That's as ridiculous as it gets. | 09:31 | |
xiaomiao | only way I can keep squid reliably online | ||
systemd would just assume that it is running as there's a process | |||
so I'd need monit anyway, and systemd doesn't allow complex ideas like NFS | |||
quite nice for a home desktop, but not yet useful for serious work | |||
nine | xiaomiao: ProgressQuest is a silly little game, not a webserver. It's a Windows application written in VisualBasic and just pops an error dialog when it's running too long and your character has a very high level. There's nothing monit could do. | 09:32 | |
xiaomiao | nine: monit can respawn quite nicely | ||
nine | xiaomiao: systemd starts NFS here. No idea what you mean. | ||
xiaomiao | nine: try relying on services that pull data over NFS | ||
it fails at ordering, so daemons start before the netmounts are available and hang | 09:33 | ||
then people get angry | |||
almost hilarious, but nice flashback to the 90s | |||
nine | xiaomiao: systemd can order on mount availability. | ||
xiaomiao | nine: it has config, but ignores it | ||
because faster | |||
timotimo | (and socket activation is quite neat, too) | ||
xiaomiao | :D | ||
timotimo: horrible. | |||
timotimo | horrible? | ||
xiaomiao | yes | ||
e.g. no sane failure modes | 09:34 | ||
xinetd got discouraged for reasons | |||
09:34
mr-foobar left
|
|||
timotimo | mhm, mhm | 09:34 | |
09:35
krunen left
|
|||
nine | Socket activation allows really seamless restarting of fcgi daemons | 09:35 | |
xiaomiao | xinetd ftw? | ||
09:35
BizarreCake joined,
mr-foobar joined
|
|||
dalek | p: 5d69e8e | (Tobias Leich)++ | README.pod: add travis build status image |
09:36 | |
brrt | i don't get that argument. either xinetd is good or it is not good | 09:37 | |
FROGGS | timotimo++ # github.com/perl6/nqp/blob/master/README.pod | ||
nine | xiaomiao: with xinetd I get several seconds of latency on the first request while it is starting the service. systemd can start it immediately while still providing seamless restart. | ||
xiaomiao | nine: if systemd can start | ||
plus there's idiocy like journald that is not meant for serious use | 09:38 | ||
timotimo | nine: what does systemd do differently that it starts it "immediately"? | ||
FROGGS | timotimo: also helpful, we smoke master + branches that contain "smoke-me", status of branches shown here: github.com/perl6/nqp/branches | ||
xiaomiao | 4kB/s? that's ... cute! | ||
FROGGS | timotimo: and you can click the status icon | ||
xiaomiao | timotimo: it starts a socket listener, then uses the socket activation protocol to hand it to the daemon | ||
timotimo | xiaomiao: it seems like journald has pretty cool features; also, you can still put a regular syslog behind it | ||
xiaomiao: i thought that's also what xinetd does? | |||
xiaomiao | timotimo: that way you can connect immediately, even before the daemon is actually up | ||
timotimo: kinda, yes. but xinetd sucks :) | 09:39 | ||
timotimo | ah | ||
xiaomiao | timotimo: performance! | ||
FROGGS | timotimo: and travis builds (new) pull requests | ||
timotimo | neato :) | ||
xiaomiao | timotimo: 4kB/s is not tolerable | ||
timotimo | mhm | ||
nine | xiaomiao: your "idiocy like journald" makes my life a whole lot simpler. Because I can finally get _all_ output of a daemon, even if it does not prefix each and every line with a unique string in its log output and even if it prints some messages on STDOUT or STDERR for example if an error happened before it could open the logfiles. | 09:41 | |
09:41
yeahnoob left
|
|||
dalek | kudo/nom: a89cfe4 | (Tobias Leich)++ | README.md: add travis build status image |
09:42 | |
timotimo | xiaomiao: out of curiosity, where did you get the 4Kb/s number? | ||
nine | xiaomiao: it also allowed me to remove all daemon code and complicated fork/fork/close stdout+stderr/reopen them/whatever crap from my daemon because systemd is doing all that for me. Writing a daemon is now as simple as "while(1) { ... }". | ||
brrt | and.. it works better than stuff like supervisor (pythonland) | 09:43 | |
and, dynamic and stuff | |||
but i can see where a lot of the 'old unix' guys are coming from. what if something like journald breaks, then you don't have journals | |||
timotimo | that's not actually true | 09:44 | |
nine | Really I don't get it. After literally decades of stagnation there's finally real real-world improvements to system management and people bitch and moan. | ||
timotimo | journalctl doesn't communicate with the journald | ||
brrt | actually, i didn't know that | ||
timotimo | that means you can just copy-paste the journal file or reboot your system onto a livecd environment and read out your journal | ||
brrt | but that still.. has a bit of suck to it compared to using grep | 09:45 | |
timotimo | except with yournalctl you can (well, should be able to) search for individual fields and shit | ||
brrt | and anyway, it centralises stuff, so you'll now have to trust systemd and lennart | ||
nine | brrt: in real life you cannot just use grep on log files anyway because most of them are actually in a binary format: they are compressed. | ||
timotimo | and the "only for the last/current/... boot" flag is super useful | ||
brrt | and old unix guys didn't become old unix guys because they trust so many people | ||
zgrep then :-) | 09:46 | ||
09:46
nbrown__ joined
|
|||
brrt | listen, i really enjoy working with systemd. i try to understand why people don't like it :-) | 09:46 | |
nine | brrt: except for when the logfile got rotated to compress the old ones and apache again failed to reopen it's error log and you again lose important information. Yeah | ||
timotimo | yeah, logrotate is kind of enh. | 09:47 | |
cool idea in theory, but a bit fiddly in practice | |||
nine | I can love UNIX and still want to see some things improved. Simple as that. | 09:48 | |
brrt | improvement is a thing that depends on your goal | 09:49 | |
lizmat | good *, #perl6 | ||
brrt | \o | ||
nine | o/ | 09:50 | |
lizmat | I was wondering, do we have a character class in NQP that just contains CR and LF ? | ||
if not, could we make one? | 09:51 | ||
looking at the difference in performance of Str.words and Str.lines | |||
$ time perl6 -e '"words".IO.slurp.words' | |||
real0m0.524s | |||
$ time perl6 -e '"words".IO.slurp.lines' | |||
real0m2.489s | |||
09:51
denis_boyun joined
|
|||
lizmat | sincs the words file is the words case (one word per line), it should at least be as fast as .words | 09:51 | |
FROGGS | lizmat: we have CCLASS_NEWLINE | 09:52 | |
lizmat | aha! | 09:53 | |
lizmat brings out the chainsaw | |||
brrt | is the chainsaw the profiler? | ||
FROGGS | lizmat: ohh wait | ||
timotimo | .tell tony-o i'm looking more into perl6-http-server-async and i'm not entirely sure how request.parse works. also, is it a good idea to try to re-parse the whole request string every time a new byte arrives? | ||
yoleaux | timotimo: I'll pass your message to tony-o. | ||
FROGGS | lizmat: it contains others as well | ||
brrt | very jnthn++ for making that in the first place | ||
lizmat | qh,, :-( | ||
ah rather | |||
FROGGS | lizmat: like 0x85 and 0x2029 | 09:54 | |
lizmat | hmmm.... | ||
well, if we would support those as well | |||
that wouldn't hurt, would it ? | |||
FROGGS | it might even be more correct... | ||
lizmat | I mean 'CCLASS_WHITESPACE" contains much more than just ' ' :-) | ||
FROGGS | true :o) | ||
lizmat | and it's 5x as fast as the current approach | ||
FROGGS | m: say ("\r\n\x85\x2029" ~~ /\n+/).Str.chars | 09:55 | |
camelia | rakudo-moar 88bcc5: OUTPUT«4» | ||
FROGGS | m: say ("\r\n\x0b\x0c\x85\x2029" ~~ /\n+/).Str.chars | 09:56 | |
camelia | rakudo-moar 88bcc5: OUTPUT«6» | ||
FROGGS | p: say ("\r\n\x0b\x0c\x85\x2029" ~~ /\n+/).Str.chars | ||
camelia | rakudo-parrot 88bcc5: OUTPUT«2» | ||
FROGGS | eww | ||
I thought I fixed that | |||
j: say ("\r\n\x0b\x0c\x85\x2029" ~~ /\n+/).Str.chars | |||
timotimo | oh, i think i get it now | ||
camelia | rakudo-jvm 88bcc5: OUTPUT«(timeout)» | ||
FROGGS | gah | ||
timotimo | .tell tony-o i get it now; this is just because i asked you to make data lazy, and since we still need to handle chunked encoding, that still has to run every time ... | 09:58 | |
yoleaux | timotimo: I'll pass your message to tony-o. | ||
timotimo | .tell tony-o i think this is wrong, though: the chunked encoding thingie looks at %headers, but if $!headercomplete is set, it'll never assign anything to %headers. in fact, i see no code at all that assigns to %.headers in Request.pm6 ?! | 10:00 | |
yoleaux | timotimo: I'll pass your message to tony-o. | ||
timotimo | .seen tony-o | ||
yoleaux | I saw tony-o 29 Aug 2014 17:02Z in #perl6: <tony-o> lol | ||
10:00
grondilu joined,
breinbaa1 left
10:01
breinbaas joined
|
|||
timotimo | m: say "höhöhöhöhö".encode('base-64') | 10:01 | |
camelia | rakudo-moar 88bcc5: OUTPUT«Unknown string encoding: 'base-64' in method encode at src/gen/m-CORE.setting:6959 in block <unit> at /tmp/b5Rkyl96Uy:1» | ||
timotimo | m: say "höhöhöhöhö".encode('base64') | ||
camelia | rakudo-moar 88bcc5: OUTPUT«Unknown string encoding: 'base64' in method encode at src/gen/m-CORE.setting:6959 in block <unit> at /tmp/4cdwBb5Pp4:1» | ||
timotimo | how do i ...? | ||
we don't have base64 in core-moar? | 10:02 | ||
brrt | apparantly not | ||
what happens when you encode base64 in utf-16 | |||
grondilu | base-64 is not exactly a string encoding, is it? | ||
brrt | :-p | 10:03 | |
isn't it? i'm confused about that | |||
timotimo | brrt: what? | ||
you encode a string to an ascii string using base64 | |||
utf-16 doesn't factor into the thing at all | 10:04 | ||
wait ... | |||
brrt | ... my point is that base64 is in a way a meta-encoding on top of ascii | ||
you could conceivably encode base64 with some other character encoding, like ebdic or so | |||
grondilu | base-64 is made to turn any binary-data into ASCII | ||
10:05
virtualsue joined
|
|||
timotimo | ah | 10:05 | |
i see now | |||
brrt | or utf-16 :-) | ||
and that this would be.. weird. but i don't think it'd be invalid | |||
grondilu | so base-64 can not encode any arbitrary string because it does know a priori ho it is encoded in binary | ||
lizmat | m: use Test | ||
camelia | rakudo-moar 88bcc5: OUTPUT«===SORRY!===No such method 'close' for invocant of type 'Any'» | ||
lizmat | yuck ???? | ||
grondilu | *does not know | ||
lizmat | r: use Test | ||
camelia | rakudo-{parrot,jvm,moar} 88bcc5: OUTPUT«===SORRY!===No such method 'close' for invocant of type 'Any'» | 10:06 | |
timotimo | oh, huh | ||
i was able to run tests for panda'ed packages locally | |||
huh | |||
m: use Test; say "alive"; | |||
camelia | rakudo-moar 88bcc5: OUTPUT«alive===SORRY!===No such method 'close' for invocant of type 'Any'» | ||
lizmat | I think it only happens if you don't do any tests | ||
m: use Test; pass | 10:07 | ||
camelia | rakudo-moar 88bcc5: OUTPUT«ok 1 - » | ||
timotimo | ah | ||
of course | |||
grondilu | it would be nice to have a Blob.base64, though. | ||
timotimo | github.com/rakudo/rakudo/commit/88...596cb71cd5 - this inits $output, $failure_output and $todo_output in plan, diag, proclaim and done | ||
but not in the END phaser | |||
line 464 may just want to read $handle.?close instead of $handle.close | 10:08 | ||
10:09
Ven joined
|
|||
lizmat | will fix | 10:09 | |
Ven | o/, #perl6 | ||
masak, moritz , type lovers and others : www.functor.se/research/paper-stew2012/ | |||
dalek | kudo/nom: 795be4c | (Elizabeth Mattijsen)++ | lib/Test.pm: Don't complain if we don't test anything |
10:10 | |
timotimo | m: my Blob $foo = "Hellö There!".encode("utf8"); for $foo.list -> $b1, $b2?, $b3? { say "$b1, $b2, $b3" } | 10:11 | |
camelia | rakudo-moar 88bcc5: OUTPUT«72, 101, 108108, 195, 18232, 84, 104101, 114, 101use of uninitialized value $b2 of type Mu in string context in block <unit> at /tmp/vrTZz2VNoy:1use of uninitialized value $b3 of type Mu in string context in block <unit> at /tmp/vrTZz2V…» | ||
timotimo | ah, that works. i wonder why i thought it wouldn't | ||
bleh. Digest fails tests when installed via panda, but it works fine when the tests are run from ufo's makefile ... | 10:15 | ||
grondilu: how far down your priority list is fixing the two TODOs you have in Digest's TODO file? :) | 10:16 | ||
10:20
Ven left
10:21
jaffa4 joined
|
|||
jaffa4 | m: my int32 $ = 4; | 10:21 | |
camelia | ( no output ) | ||
jaffa4 | m: sub m(int32 i) {} m(4); | 10:22 | |
camelia | rakudo-moar 88bcc5: OUTPUT«===SORRY!=== Error while compiling /tmp/G1gsQbfxo4A parameter may only have one prefix type constraintat /tmp/G1gsQbfxo4:1------> sub m(int32 i⏏) {} m(4); expecting any of: statement list …» | ||
10:23
xinming_ is now known as xinming
|
|||
jaffa4 | m: sub m(int32 $i) {} m(4); | 10:24 | |
camelia | rakudo-moar 88bcc5: OUTPUT«===SORRY!=== Error while compiling /tmp/ZGUy5I6nO9Two terms in a rowat /tmp/ZGUy5I6nO9:1------> sub m(int32 $i) {} ⏏m(4); expecting any of: statement list horizontal whitespace …» | ||
10:27
krunen joined
|
|||
jaffa4 | m: sub m(int32 $i) {}; m(4); | 10:28 | |
camelia | ( no output ) | ||
brrt afk | 10:31 | ||
10:31
brrt left
|
|||
jaffa4 | m: class a {method m(int32 $i) {};} a.m(4); | 10:31 | |
camelia | rakudo-moar a89cfe: OUTPUT«===SORRY!=== Error while compiling /tmp/8bjcLanvUdTwo terms in a rowat /tmp/8bjcLanvUd:1------> class a {method m(int32 $i) {};} ⏏a.m(4); expecting any of: statement list horizonta…» | ||
grondilu | timotimo: quite far, but I can look at it since you ask... | 10:35 | |
timotimo | not that important, actually | 10:36 | |
just stumbled upon it and thought maybe it'd be super trivial to fix now | |||
the todos are 2 years old, so 2 years of rakudo improvements have happened :) | 10:37 | ||
grondilu | don't know. Does 'use Foo <function>' work now? | ||
m: module Foo { our sub greet { say "hi" } }; import Foo <greet>; greet; | 10:38 | ||
camelia | rakudo-moar a89cfe: OUTPUT«===SORRY!=== Error while compiling /tmp/HThyC0cUI1Undeclared routine: greet used at line 1. Did you mean 'grep'?» | ||
grondilu | as far as why Digest can't be installed via panda I can't help as panda has not been working lately on my machine. | 10:39 | |
timotimo | i think you need to say <&function> | 10:40 | |
10:40
bjz joined
|
|||
jaffa4 | What is the size of int? | 10:40 | |
grondilu | m: module Foo { our sub greet { say "hi" } }; import Foo <&greet>; greet; | ||
camelia | rakudo-moar a89cfe: OUTPUT«===SORRY!=== Error while compiling /tmp/Ov8YDL1YagUndeclared routine: greet used at line 1. Did you mean 'grep'?» | ||
timotimo | jaffa4: i think those are platform-native integers, so 32bit on 32bit machines, 64bit on 64bit machines | 10:41 | |
grondilu | by the way do we have something like &sizeof? | 10:43 | |
lizmat | I was thinking of using int.min int.max for that | 10:45 | |
not exactly the same, but useful nonetheless ? | |||
jaffa4 | m: print int.min; | ||
camelia | rakudo-moar a89cfe: OUTPUT«Can only determine min of Numeric types in method Str at src/gen/m-CORE.setting:13506 in method print at src/gen/m-CORE.setting:14706 in sub print at src/gen/m-CORE.setting:15025 in block <unit> at /tmp/SliRmgmB_D:1» | ||
timotimo | use Limits:from<C> | ||
jaffa4 | m: print Int.min; | ||
camelia | rakudo-moar a89cfe: OUTPUT«-Inf» | ||
timotimo | :P | ||
jaffa4 | m: print Int.max; | ||
camelia | rakudo-moar a89cfe: OUTPUT«Inf» | ||
lizmat | m: print Num.max | ||
camelia | rakudo-moar a89cfe: OUTPUT«Inf» | ||
lizmat | I fixed that yesterday | 10:46 | |
fsvo fixing | |||
m: print Str.max | |||
camelia | rakudo-moar a89cfe: OUTPUT«Can only determine max of Numeric types in method Str at src/gen/m-CORE.setting:13506 in method print at src/gen/m-CORE.setting:14706 in sub print at src/gen/m-CORE.setting:15025 in block <unit> at /tmp/MtTHfGoWh7:1» | ||
jaffa4 | kamat: inf is not correcdt | ||
10:46
nbrown__ left
|
|||
timotimo | it is | 10:47 | |
for Int at least | |||
for num there is a highest and lowest number we can represent | 10:49 | ||
jaffa4 | Does it have infinite precision? | 10:51 | |
timotimo | no | ||
lizmat | Int? yes, afaik | ||
jaffa4 | m: Int $b = 232323232323232323232323232323232323232323; | ||
camelia | rakudo-moar a89cfe: OUTPUT«===SORRY!=== Error while compiling /tmp/U_TbwZ4pQ7Two terms in a rowat /tmp/U_TbwZ4pQ7:1------> Int ⏏$b = 23232323232323232323232323232323232 expecting any of: postfix infix stopper…» | ||
timotimo | i don't think you call that "precision" | ||
... what. | 10:52 | ||
lizmat | my missing | ||
timotimo | m: Int $b = 100000000; $b *= 1000000 for ^20; say $b.chars | ||
camelia | rakudo-moar a89cfe: OUTPUT«===SORRY!=== Error while compiling /tmp/Q1jprRqkZeTwo terms in a rowat /tmp/Q1jprRqkZe:1------> Int ⏏$b = 100000000; $b *= 1000000 for ^20; s expecting any of: postfix infix stopper…» | ||
10:52
exixt left
|
|||
jaffa4 | m: my Int $b = 232323232323232323232323232323232323232323; print $b; | 10:52 | |
camelia | rakudo-moar a89cfe: OUTPUT«232323232323232323232323232323232323232323» | ||
timotimo | m: my Int $b = 100000000; $b *= 1000000 for ^20; say $b.chars | ||
camelia | rakudo-moar a89cfe: OUTPUT«129» | ||
timotimo | m: my Int $b = 100000000; $b *= 1000000 for ^20; say $bs | ||
camelia | rakudo-moar a89cfe: OUTPUT«===SORRY!=== Error while compiling /tmp/WTmOQCvoBaVariable '$bs' is not declaredat /tmp/WTmOQCvoBa:1------> 00000000; $b *= 1000000 for ^20; say $bs⏏<EOL> expecting any of: postfix» | ||
timotimo | m: my Int $b = 100000000; $b *= 1000000 for ^20; say $b | ||
camelia | rakudo-moar a89cfe: OUTPUT«100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000» | ||
timotimo | m: my Int $b = 100000000; $b *= 1000000 for ^20; say ($b + 1).is-prime | ||
camelia | rakudo-moar a89cfe: OUTPUT«False» | ||
timotimo | m: my Int $b = 100000000; $b *= 1000000 for ^20; say ($b + 1) | ||
camelia | rakudo-moar a89cfe: OUTPUT«100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001» | ||
jaffa4 | m: my Int $b = -232323232323232323232323232323232323232323; print $b; | ||
camelia | rakudo-moar a89cfe: OUTPUT«-232323232323232323232323232323232323232323» | ||
timotimo | not prime, eh? | ||
jaffa4 | m: print int32.max; | 10:53 | |
camelia | rakudo-moar a89cfe: OUTPUT«Can only determine max of Numeric types in method Str at src/gen/m-CORE.setting:13506 in method print at src/gen/m-CORE.setting:14706 in sub print at src/gen/m-CORE.setting:15025 in block <unit> at /tmp/OrYlbBqXbu:1» | ||
jaffa4 | that is numeric type | ||
lizmat | jaffa4: work in progress: native types NYI | ||
colomon | ugh, lots of smoke module failures overnight | ||
lizmat | jaffa4: as far as finding out min/max values that way | 10:54 | |
colomon | oh! can only determine max of Numeric type objects? | 10:58 | |
jaffa4 | is this going to be fixed: | 10:59 | |
colomon | …. though Str.max should be Inf too, no? | ||
lizmat | at the moment: since everybody seems to think this is a good idea, I should probably implement it for native types | ||
jaffa4 | m: class a {multi method m(int32 $i) {};}; a.CREATE().m(4);" | ||
camelia | rakudo-moar a89cfe: OUTPUT«===SORRY!=== Error while compiling /tmp/SGIOr_9hLkUnable to parse expression in double quotes; couldn't find final '"' at /tmp/SGIOr_9hLk:1------> hod m(int32 $i) {};}; a.CREATE().m(4);"⏏<EOL> expectin…» | ||
jaffa4 | m: class a {multi method m(int32 $i) {};}; a.CREATE().m(4); | ||
camelia | rakudo-moar a89cfe: OUTPUT«Cannot call 'm'; none of these signatures match::(a: int32 $i, *%_) in block <unit> at /tmp/5XhTg9iOo1:1» | ||
timotimo | at some point i recall a "AfterAll" and "BeforeAll" value could be introduced | ||
lizmat | Inf seems like a numerical concept to me, not a string concept | ||
dalek | kudo/nom: df2f8b4 | (Elizabeth Mattijsen)++ | src/core/Str.pm: Make Str.lines much simpler, a little faster still /usr/share/dict/words: 2.383 -> 2.082, about 13% |
11:00 | |
colomon | lizmat: never-the-less, Inf is there in the ordering of strings, too, in p6 | ||
m: say "hello" lt Inf | |||
grondilu | Str.max should die with an out-of-memory exception :-) | ||
camelia | rakudo-moar a89cfe: OUTPUT«False» | ||
colomon | …. or not? | ||
lizmat | yes, and that bugs me as well.. The associated test file seems unsure of the validity of it all | 11:01 | |
timotimo | m: say "hello" cmp Inf | ||
camelia | rakudo-moar a89cfe: OUTPUT«Less» | ||
lizmat | grondilu: please let it fail *just* before that :-) | ||
colomon | grondilu: so should Int.max by that logic. ;) | ||
grondilu | colomon: ah indeed | ||
colomon | afk # laptop turned over for 6yo morning nom Phineas and Ferb watching | 11:02 | |
jaffa4 | m: class a { method m(int32 $i) {};}; a.CREATE().m(4); | ||
camelia | ( no output ) | ||
11:02
exixt joined
|
|||
grondilu | colomon: well on second thought no, since we have Inf. | 11:02 | |
11:07
chenryn left
11:08
exixt left
11:13
SHODAN left
|
|||
jaffa4 | guys, how do I create a new numeric type with constraints in Perl6? | 11:16 | |
lizmat | mL subset Odd of Int where { $_ % 2 }; my Odd $odd = 2 | 11:18 | |
m: subset Odd of Int where { $_ % 2 }; my Odd $odd = 2 | |||
camelia | rakudo-moar a89cfe: OUTPUT«Type check failed in assignment to '$odd'; expected 'Odd' but got 'Int' in block <unit> at /tmp/oR6og9_I1v:1» | ||
lizmat | m: subset Odd of Int where { $_ % 2 }; my Odd $odd = 3 | ||
camelia | ( no output ) | ||
11:20
exixt joined
|
|||
lizmat | ok, so now I have a variation of Str.lines that is still 5x as fast as before | 11:21 | |
but is not lazy | |||
I'm thinking about making that a candidate reachable by a :eager named parameter | 11:22 | ||
to be added by optimizers later automagically | |||
or by developers who know what they want | |||
does that make sense ? | |||
jaffa4 | lizmat: great | 11:23 | |
dalek | kudo/nom: f6dd96d | (Elizabeth Mattijsen)++ | src/core/Str.pm: Add :eager candidates for Str.lines, 5x faster! So the lazy form is still the default: the eager version could be used when needed, or when the optimizer determines it can (in the future). |
11:36 | |
lizmat | this 5x speed difference is also a good indication of what to expect from the Big List Refactor, I would think | 11:37 | |
11:37
chenryn joined
|
|||
nwc10 | lizmat: is any cheating possible in (for example) the compiler? eg, if the file being read has a size, and the size is less than $whatever, go eager | 11:40 | |
lizmat | nwc10: I did Str.lines, so it's all in memory already | ||
nwc10 | by "has a size" I guess it's the same as "is a regular file, and not a socket, tty, pipe, or stuff" | ||
lizmat | working on IO::Handle.lines atm | ||
nwc10 | OK. I don't know enough to be helpful. | ||
so | |||
lizmat++ | 11:41 | ||
and I'll go back to drinking coffee | |||
lizmat | :-) | ||
lizmat gets another cuppa tea | |||
nwc10 needs to remember to brink a kettle to Salzburg, "just in case" | 11:42 | ||
Timbus | .lines would maybe be faster if the VM reported back to rakudo how many lines were in the current buffer? is that possibly related to how the list refactor would work? | 11:44 | |
11:44
chenryn left
|
|||
Timbus | .. better question: what is the list refactor | 11:44 | |
timotimo | m: say "foobar".index("!") | 11:46 | |
camelia | rakudo-moar df2f8b: OUTPUT«(Int)» | ||
timotimo | lizmat: is Str.split already optimized for cases where a limit is given? | 11:47 | |
11:48
colomon left
|
|||
lizmat | not as far as I know | 11:48 | |
11:48
bjz left,
bjz joined
|
|||
lizmat | one of things I'm looking at now that MMD is not costly in the settings anymore | 11:48 | |
previously, we need to get things together in one method as MMD was expensive | |||
not so anymore | |||
timotimo | cool | 11:49 | |
lizmat | eager version of IO.lines is about 4x faster | 11:50 | |
timotimo | neato | 11:51 | |
nwc10 | Timbus: array operations are currently slower than hash operations. This is counter-intuitive. The problem is that all the "laziness" code makes regular array operations slow. So the implementation of all thigs to do with lists needs to be refactored, so that eager things don't go slowly. | 11:52 | |
11:52
Salai joined
|
|||
timotimo | what about turning a for loop over the result into a while + shift? that should give another speed boost, no? | 11:52 | |
lizmat | timotimo: ?? | ||
timotimo | or was that just testing how long it takes to run the method itself? | 11:53 | |
not iterating over the result? | |||
lizmat | it's basically changing a gather / while into a whiile / push | ||
timotimo | mhm, right | 11:54 | |
and if we know we're allowed to destroy the list we've created, we can turn the for into a while + shift | |||
lizmat | yes, but that would imply passing for() knowledge into the reification | ||
carlin | heh, bonus systemd argument in the backlog :) | 11:55 | |
11:55
akaseki left
|
|||
lizmat | which is what TimToady was talking about | 11:55 | |
timotimo | m: my @a = 1 xx 10_000; my $s = 0; for @a { $s += $_ }; say time - BEGIN time | ||
camelia | rakudo-moar df2f8b: OUTPUT«0» | ||
timotimo | m: my @a = 1 xx 100_000; my $s = 0; for @a { $s += $_ }; say time - BEGIN time | ||
camelia | rakudo-moar df2f8b: OUTPUT«1» | ||
timotimo | m: my @a = 1 xx 100_000; my $s = 0; for @a { $s += $_ }; say now - BEGIN now | ||
camelia | rakudo-moar df2f8b: OUTPUT«0.94479438» | ||
lizmat | now - BEGIN now ? | ||
timotimo | m: my @a = 1 xx 100_000; my $s = 0; while @a { $s += @a.shift }; say now - BEGIN now | ||
camelia | rakudo-moar df2f8b: OUTPUT«1.58643147» | ||
timotimo | er ... oh! | ||
so iterating over lists is already faster than shifting off a list until it's gone | 11:56 | ||
m: my @a = 1 xx 100_000; my $s = 0; for ^@a { $s += @a[$_] }; say now - BEGIN now | |||
camelia | rakudo-moar df2f8b: OUTPUT«1.3809772» | ||
timotimo | even that is a tiny bit faster than shifting | 11:57 | |
good to know! | |||
grondilu | why is while/shift slower, though? | 11:58 | |
timotimo | interesting question; we don't shrink lists that we shift from, so it shouldn't have copying overhead from realloc | 11:59 | |
11:59
brrt joined
|
|||
timotimo | xiaomiao: can you give a source or benchmark for the 4kB/s number you have for journal? | 11:59 | |
12:03
brrt left
12:04
colomon joined
|
|||
timotimo | how do people feel about this scheme: a method on an object warns with a specific object, the code that's responsible for feeding data to the object catches the exception, mixes in a role with some extra data and resumes the exception | 12:05 | |
this feels SO dirty in my mind, but it's cool that it could work m) | |||
12:05
brrt joined
|
|||
dalek | kudo/nom: ce95079 | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm: Add :eager candidates to IO::Handle.lines /usr/share/dict/words: 2.787s -> 0.768s (about 3.5x as fast) |
12:06 | |
lizmat | timotimo: feels like something that would case a global deopt | 12:07 | |
*cause | |||
about to go on errands | |||
timotimo | feels like something that would cause someone who reads the code to be *super* confused :) | ||
m: class Test { method doit() { say "foobar {self.perl}"; warn "signal"; say "foofoo {self.perl} {self.data}"; } }; my $i = Test.new(); try { $i.doit; CONTROL { when /signal/ { $i does role { method data { "hi there" } }; $!.resume } say "done!" | 12:08 | ||
camelia | rakudo-moar df2f8b: OUTPUT«===SORRY!=== Error while compiling /tmp/M5_V2CWCXPMissing semicolon.at /tmp/M5_V2CWCXP:1------> thod data { "hi there" } }; $!.resume } ⏏say "done!" expecting any of: method arguments …» | ||
timotimo | m: class Test { method doit() { say "foobar {self.perl}"; warn "signal"; say "foofoo {self.perl} {self.data}"; } }; my $i = Test.new(); try { $i.doit; CONTROL { when /signal/ { $i does role { method data { "hi there" } }; $!.resume }; say "done!" | ||
camelia | rakudo-moar df2f8b: OUTPUT«===SORRY!=== Error while compiling /tmp/vdOk_1pmnlUnable to parse expression in block; couldn't find final '}' at /tmp/vdOk_1pmnl:1------> "hi there" } }; $!.resume }; say "done!"⏏<EOL> expecting any of…» | ||
timotimo | m: class Test { method doit() { say "foobar {self.perl}"; warn "signal"; say "foofoo {self.perl} {self.data}"; } }; my $i = Test.new(); try { $i.doit; CONTROL { when /signal/ { $i does role { method data { "hi there" } } } }; $!.resume }; say "done!" | ||
camelia | rakudo-moar df2f8b: OUTPUT«foobar Test.new()done!» | ||
timotimo | m: class Test { method doit() { say "foobar {self.perl}"; warn "signal"; say "foofoo {self.perl} {self.data}"; } }; my $i = Test.new(); try { $i.doit; CONTROL { when /signal/ { $i does role { method data { "hi there" } } } }; $_.resume }; say "done!" | ||
camelia | rakudo-moar df2f8b: OUTPUT«foobar Test.new()done!» | ||
timotimo | m: class Test { method doit() { say "foobar {self.perl}"; warn "signal"; say "foofoo {self.perl} {self.data}"; } }; my $i = Test.new(); try { $i.doit; CONTROL { .perl.say; when /signal/ { $i does role { method data { "hi there" } } } }; $_.resume }; say "done!" | 12:09 | |
camelia | rakudo-moar df2f8b: OUTPUT«foobar Test.new()X::AdHoc.new(payload => "signal")done!» | ||
timotimo | m: class Test { method doit() { say "foobar {self.perl}"; warn "signal"; say "foofoo {self.perl} {self.data}"; } }; my $i = Test.new(); try { $i.doit; CONTROL { if $_.payload ~~ /signal/ { $i does role { method data { "hi there" } } } }; $_.resume }; say "done!" | ||
camelia | rakudo-moar df2f8b: OUTPUT«foobar Test.new()signal in method doit at /tmp/tBPTh7BChi:1Trying to unwind over wrong handler» | ||
timotimo | :( | ||
oh, derp | |||
m: class Test { method doit() { say "foobar {self.perl}"; warn "signal"; say "foofoo {self.perl} {self.data}"; } }; my $i = Test.new(); try { $i.doit; CONTROL { if $_.payload ~~ /signal/ { $i does role { method data { "hi there" }; $!.resume } } }; }; say "done!" | |||
camelia | rakudo-moar df2f8b: OUTPUT«foobar Test.new()signal in method doit at /tmp/GTyswvwhIG:1Trying to unwind over wrong handler» | ||
timotimo | :\ | 12:10 | |
12:15
brrt left,
immortal left
12:16
erkan joined,
erkan left,
erkan joined
12:28
telex left
12:30
telex joined
12:36
brrt joined
|
|||
lizmat | errands& | 12:39 | |
12:40
kaleem left,
chenryn joined
12:41
ibo2perl6 joined
|
|||
ibo2perl6 | m: say map( {"d"} ), <a b c>; | 12:42 | |
camelia | rakudo-moar ce9507: OUTPUT«a b c» | ||
dalek | kudo-star-daily: e338bbb | coke++ | log/ (14 files): today (automated commit) |
12:43 | |
ibo2perl6 | i would expect "d d d" | ||
FROGGS | m: say <a b c>.map( { "d" } ) | ||
camelia | rakudo-moar ce9507: OUTPUT«d d d» | ||
12:43
brrt left
|
|||
timotimo | ibo2perl6: you were calling map( {"d"} ), saying the result and then saying a b c afterwards | 12:43 | |
FROGGS | m: say map( {"d"}, <a b c> ); | ||
camelia | rakudo-moar ce9507: OUTPUT«d d d» | ||
ibo2perl6 | yes now i see | 12:44 | |
12:44
chenryn left
12:45
ajr joined
12:46
ajr is now known as Guest77128,
Guest77128 is now known as ajr_
|
|||
ibo2perl6 | but then how can I combine map with ==> ? | 12:49 | |
timotimo | m: <a b c> ==> map( { "d" }) ==> say | 12:50 | |
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/fQzr63j5EzUnsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argumentat /tmp/fQzr63j5Ez:1------> <a b c> ==> map( { "d" }) ==> say…» | ||
timotimo | m: <a b c> ==> map( { "d" }) ==> .say | ||
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/D6UUFUG9TkSorry, do not know how to handle this case of a feed operator yet.at /tmp/D6UUFUG9Tk:1------> <a b c> ==> map( { "d" }) ==> .say⏏<EOL> expecting any of:…» | ||
timotimo | m: <a b c> ==> .map( { "d" }) ==> .say | ||
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/QhZq8F6ceJSorry, do not know how to handle this case of a feed operator yet.at /tmp/QhZq8F6ceJ:1------> <a b c> ==> .map( { "d" }) ==> .say⏏<EOL> expecting any of…» | ||
timotimo | oh? | ||
did that kind of get busted with the bare say changes? | |||
ibo2perl6 | say <a b c> ==> map({"d"} ) | ||
m: say <a b c> ==> map({"d"} ) | |||
camelia | rakudo-moar ce9507: OUTPUT«a b c» | ||
ibo2perl6 | this doesnt work | ||
timotimo | hm? | 12:51 | |
tadzik | m: <a b c> ==> map({ "d" }) ==> say | ||
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/s5kfXnOs03Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argumentat /tmp/s5kfXnOs03:1------> <a b c> ==> map({ "d" }) ==> say…» | ||
tadzik | wtf | ||
works locally | |||
m: <a b c> ==> map({ "d" }) ==> &say | 12:52 | ||
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/aZ85wrGbhGSorry, do not know how to handle this case of a feed operator yet.at /tmp/aZ85wrGbhG:1------> <a b c> ==> map({ "d" }) ==> &say⏏<EOL> expecting any of:…» | ||
tadzik | argherlartatlatids | ||
timotimo | to be fair, the specs say nothing about using say as part of a feed pipeline | ||
m: <a b c> ==> .map( { "d" }) ==> map( *.say ) | |||
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/daR6ko83agSorry, do not know how to handle this case of a feed operator yet.at /tmp/daR6ko83ag:1------> b c> ==> .map( { "d" }) ==> map( *.say )⏏<EOL> expecting a…» | ||
timotimo | m: <a b c> ==> map( { "d" }) ==> map( *.say ) | ||
camelia | rakudo-moar ce9507: OUTPUT«ddd» | ||
nine | Can someone have a look at github.com/niner/Inline-Perl5/issues/4 and tell me if the proposed syntactic sugar is "good" Perl 6? I have no base for evaluating that. | 12:56 | |
ibo2perl6 | actually I would like to join after the map. Is this actually possible? | 12:57 | |
timotimo | ibo2perl6: that's not something feed operators would allow, as it's sort of "contrary" to what feeds do | ||
you can just collect the results in an array and say the array afterwards: | |||
m: my @result <== map({"d"}) <== <a b c d e>; say @result | 12:58 | ||
camelia | rakudo-moar ce9507: OUTPUT«d d d d d» | ||
FROGGS | say <a b c>.map( { "d" } ).join | 13:01 | |
m: say <a b c>.map( { "d" } ).join | |||
camelia | rakudo-moar ce9507: OUTPUT«ddd» | 13:02 | |
ibo2perl6 | <a b c> ==> map({"d"} ) ==> join(','); | ||
m: <a b c> ==> map({"d"} ) ==> join(','); | |||
camelia | ( no output ) | ||
FROGGS | m: say a b c> ==> map({"d"} ) ==> join(','); | ||
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/Dh1zXj8IXjPreceding context expects a term, but found infix ==> insteadat /tmp/Dh1zXj8IXj:1------> say a b c> ==>⏏ map({"d"} ) ==> join(',');» | ||
FROGGS | m: say( a b c> ==> map({"d"} ) ==> join(',') ) | ||
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/MTzvYrStv_Preceding context expects a term, but found infix ==> insteadat /tmp/MTzvYrStv_:1------> say( a b c> ==>⏏ map({"d"} ) ==> join(',') )» | ||
FROGGS | gah | 13:03 | |
m: say( <a b c> ==> map({"d"} ) ==> join(',') ) | |||
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/so6iieiHI9Unable to parse expression in argument list; couldn't find final ')' at /tmp/so6iieiHI9:1------> say( <a b c> ⏏==> map({"d"} ) ==> join(',') ) expectin…» | ||
FROGGS | m: <a b c> ==> map({"d"} ) ==> join(',') ==> say | ||
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/o_rnHzqEsxUnsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argumentat /tmp/o_rnHzqEsx:1------> > ==> map({"d"} ) ==> join(',') …» | ||
FROGGS | meh ;o) | ||
ibo2perl6 | m: say ( <a b c> ==> map({"d"} ) ==> join(',') ) | 13:04 | |
camelia | rakudo-moar ce9507: OUTPUT«d,d,d» | ||
FROGGS | ohh | ||
13:05
mr-foobar left
13:07
rindolf joined
13:21
akaseki joined
13:23
PZt joined
13:24
Salai left
|
|||
timotimo | .o( gittip is now called gratipay. cute. ) | 13:26 | |
[Coke] | S05-transliteration/trans.rakudo.moar aborted 56 test(s) | ||
^^ moar with jit and without | |||
S17-supply/start.t 9 - did we get the other original value | |||
^^ moar sans jit | |||
parrot is now failing 248 tests. | 13:27 | ||
ibo2perl6 | I am seeing problems with the built-in readline in the perl6 line-by-line interpreter. When I enter uf8 chars the text cursor is not anymore where the input happens but shifted to the right. This is reproducible in linux debian amd64 in konsole, xterm and uxterm. | 13:30 | |
[Coke] | ibo2perl6: what version of rakudo? | ||
ibo2perl6 | This is perl6 version 2014.08 built on MoarVM version 2014.08 | 13:31 | |
13:32
JimmyZ joined
|
|||
JimmyZ | ibo2perl6: I think it's NYI | 13:32 | |
timotimo | ibo2perl6: yes, "line noise" is responsible for this and it kind of sucks at it :( | ||
JimmyZ | see rakudo.org/2014/08/30/announce-raku...e-2014-08/ # interactive readline that understands Unicode | ||
github.com/fperrad/ljlinenoise # Linenoise in pure LuaJIT, if someone rewrite it in Perl6 :P | 13:36 | ||
*wants to | |||
13:53
Ven joined
|
|||
Ven | m: <a b c> ==> map({ "d" }) ==> say() # timotimo , tadzik | 13:54 | |
camelia | rakudo-moar ce9507: OUTPUT«d d d» | ||
Ven | also, timotimo , WRT your "catch the warn and mix some role", do you know about common lisp's exceptions? | ||
13:54
abraxxa joined
|
|||
abraxxa | i have problem getting panda to work with rakudo 2014.08 | 13:55 | |
i'm running into github.com/tadzik/panda/issues/96 | |||
[Coke] | m: 3 ==> say() <==4 | ||
camelia | rakudo-moar ce9507: OUTPUT«43» | ||
abraxxa | the second error but regardless of the proxy env vars | ||
timotimo | Ven: oooh, of course! | ||
Ven | :) | ||
else it's trying to parse it as <words> | 13:56 | ||
[Coke] | oh, hey, that's my bug. | ||
abraxxa | [Coke]: yes | ||
Ven | timotimo: c2.com/cgi/wiki?CommonLispConditionSystem look at that | ||
abraxxa | what's also quite annoying about the stacktrace is that the path are relative and I can't copy'n'paste them quickly to look at the files | 13:57 | |
timotimo | abraxxa: i agree! | 13:58 | |
the problem is that the source files may not be installed any more when we run into such an error | |||
[Coke] looks at RT#122769 and thinks, "uhoh" | |||
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122769 | |||
timotimo | or you may have received precompiled modules from someone else's computer | 13:59 | |
abraxxa | timotimo: does the interpreter know if a source file exists or not? | ||
[Coke]: did you find a workaround? | 14:00 | ||
14:01
mr-foobar joined
|
|||
[Coke] | I have the luxury of having a laptop that is occasionally on an open network with no proxy | 14:01 | |
14:02
JimmyZ left
|
|||
abraxxa | [Coke]: as I said I get the error without any env *_proxy var set too | 14:02 | |
JSON::Tiny line 51 reads | |||
return $o.ast; | |||
[Coke] | perhaps you have a bad copy of the file cached? | 14:03 | |
abraxxa | which file? | ||
[Coke] | ISTR that there was another issue (separate ticket?) where a local empty projects file would cause issues. | ||
timotimo | abraxxa: the error message sounds like the json parse failed without giving a good error message | 14:04 | |
abraxxa | i'll try rakudo-star instead of rakudo | ||
14:05
jepeway_ left
|
|||
abraxxa | timotimo: i guess that's because panda created an empty json file, failed to download its contents because of the proxy and didn't delete it | 14:06 | |
timotimo | that could be the case, yeah | ||
it's /home/timo/perl6/install/languages/perl6/site/panda on my local machine | 14:07 | ||
abraxxa | omg | 14:08 | |
projects.json contains the proxy auth required html | |||
timotimo | m) | ||
figured something like that | |||
Ven | well, you'll read it if you want to | 14:09 | |
14:10
jerrycheung joined
|
|||
Ven is fine with with stealing from lisp :) | 14:10 | ||
they got a nice part of the fire of the gods anyway | |||
abraxxa | timotimo: thanks! | 14:12 | |
timotimo | Ven: lisp syntax still feels a bit foreign to me, so i can't really spot what i should be looking at in particular | ||
abraxxa | i'd like to extend DBIish for Oracle support | 14:13 | |
any advise where to start? | 14:14 | ||
Ven | timotimo: basically, you define "conditions" (give them a name and some param(s)), then when you're in some function, you create a ... block that'll have a handler for that "exception"/condition | ||
14:14
leont left
|
|||
Ven | timotimo: and then, you can use `invoke-restart` to re-enter the proc in some ways | 14:15 | |
These way have been defined with `RESTART-CASE` | |||
you see that "high-level-code" does something several time: (one for each case in the example) : it sets up a handler for ON-ZERO-DENOMINATOR, execute (determine-infinity) in it | 14:16 | ||
Then you see that DETERMINE-INFINITY uses RESTART-CASE to define "failure handling modes": RETURN-ZERO, RETURN-VALUE, RECALC-USING | 14:17 | ||
which one of these is executed is determined by the INVOKE-RESTART used in the set up handler (the one in HIGH-LEVEL-CODE) | 14:18 | ||
timotimo | ah, hm | ||
Ven | so basically, DETERMINE-INFINITY/RECIPROCAL-OF has the code for the function *PLUS* the possible handlers | ||
and the code calling it (here, HIGH-LEVEL-CODE) just has to trap that "condition"/exception and to "call" one of these cases (with INVOKE-RESTART) | 14:19 | ||
it's very powerful because, unlike exceptions, you don't have only one place to "expect" exceptions and to handle them. | |||
timotimo | you have more than one place to expect/handle exceptions, too | 14:20 | |
14:20
ibo2perl6 left
|
|||
timotimo | exceptions travel up the stack | 14:20 | |
Ven | no, not in that way. | ||
[Coke] | oh, wait. no, I don't think I ever got panda working. | 14:21 | |
Ven | You can place exception at one place. Wherever (almost) you want it, but the code trapping the exception is at the same place as the code "trying again" with different parameters | ||
Which is often not what you want -- the function that failed contains so logic, so it seems normal to have the "restart" logic (which is basically the same, often, or at least in the same domain) be near it | |||
14:22
jerrycheung left
|
|||
Ven | not near the code calling the function, which might be doing something else entirely | 14:22 | |
Whew, I'm spammy... | |||
timotimo | ah | ||
i think i get it now | |||
so from the catch block you can "goto" any of the restart-cases | |||
Ven | yes | 14:23 | |
[Coke] | how does one re-install panda? | ||
Ven | that's basically it :). | ||
and these can re-invoke the function, invoke another one, return some value, tear up the world, ... | |||
Of course, if you don't want to use the modes the function has provided, you just can decide NOT to use "invoke-restart". | 14:24 | ||
[Coke] | (I accidentally installed one with some debug code. I've removed the debug code, but now I cannot do anything without triggering the debug code. | 14:26 | |
ah, reboot. (must have typed "panda rebootstrap!") | 14:27 | ||
14:28
spider-mario joined,
spider-mario left
14:29
denis_boyun left
|
|||
[Coke] | ... and I'm stuck again. | 14:29 | |
14:29
denis_boyun joined
|
|||
[Coke] | abraxxa: yes, I gave up, it seems. can't install anything with panda at the moment. | 14:30 | |
abraxxa | [Coke]: ;( | ||
Ven gave up on panda long ago... except with r* | |||
14:30
[Sno] left
|
|||
abraxxa | [Coke]: rakudo-star includes NativeCall so I should be good without it for the moment | 14:30 | |
jnthn | evening, #perl6 | ||
abraxxa | how are you installing modules then? by hand? | 14:31 | |
jnthn: hi! | |||
Ven | o/, jnthn . | ||
abraxxa reads docs.oracle.com/cd/E11882_01/appdev...LNOCI16209 | |||
C is so absolutely unreadable for me | 14:32 | ||
[Coke] | tadzik: hellllp meeeeeee :) | ||
Ven | abraxxa: bad C is :p | ||
abraxxa | my motivation to add Oracle support to DBIish just went down the drain | ||
jnthn is staying at a hotel with Butterfly in its name, which feels appropriately Perl 6-y :) | 14:33 | ||
abraxxa | I can even find the function the OCI docs say that have to be called to establish a connection in DBD::Oracle | 14:34 | |
14:36
spider-mario joined
|
|||
nine | jnthn: I think you're gonna like this :) github.com/niner/Inline-Perl5/blob.../inherit.t | 14:37 | |
tadzik | [Coke]: 'sup? | 14:38 | |
14:38
kaare_ left
|
|||
nine | abraxxa: when you asked about advice where to start I was very tempted to suggest getting a couple of beers... | 14:39 | |
abraxxa | nine: beer gives me headache, nothing else | ||
timotimo | ohai jnthn | ||
nine | abraxxa: but so does Oracle usually... | ||
abraxxa | i don't think I will ever learn C in this life, looking at it for 10 minutes is enough to turn me off every time I tried in the last 15 years | ||
Ven | nine++ | 14:40 | |
abraxxa | nine: Oracle works since about the same time without a single hickup | ||
Ven | abraxxa: C really is easy. It's very basic. So people do all kind of stupid stuff with it | ||
abraxxa | don't know why so many people bash it | ||
timotimo | jnthn: i'm facing a situation where i want to untap an async socket in response to a more'd "bytes_supply"; i probably cannot ensure no data is lost in between closing it and re-tapping, right? | ||
abraxxa | Ven: besides having more weird characters all over the place then perl | ||
Ven | abraxxa: uuuh... no | ||
abraxxa | even splitting up the definition of a function and its body in separate files is @#$ &(#$ &@%T | 14:41 | |
Ven | is necessary for linking and stuff. Right. | ||
abraxxa | what is linking? | ||
jnthn | timotimo: yeah, there's a risk of that... | ||
Ven | abraxxa: reusing code from libraries and stuff | 14:42 | |
You need to tell the compiler "I expose this and that function" | |||
[Coke] | tadzik: panda bug github.com/tadzik/panda/issues/96 | ||
Ven | else it'd mean Windows'd have to give out its code so people could use its api ;) | ||
jnthn | timotimo: Best avoid re-tapping. Just take bytes consistenlty if you want to work at that level, then just decode the bufs | ||
[Coke] | both abraxxa and I are stuck. | ||
jnthn | m: <a b c> ==> map({ "d" }) ==> say() | 14:43 | |
camelia | rakudo-moar ce9507: OUTPUT«d d d» | ||
abraxxa | Ven: and why can't it figure that out from the .c file? why an extra .h file? | ||
Ven | abraxxa: because it *doesn't* have a C file. | ||
libraries don't give out their source code. They just tell the compiler "you'll have access to that" | |||
abraxxa | i mean the Oracle instantclient has 29 .h files, how should I know which of those are needed for NativeCall? | 14:44 | |
[Coke] is going through it again to make sure. if I set the proxy, and rebootstrap, that seems to get me a panda.. | |||
Ven | abraxxa: docs | ||
abraxxa: were those .c files, you'd need docs too | |||
[Coke] | ... nope. on "reinstalling" step, I get the second error (no such method ast) | ||
jnthn | nine: Very nice! Now "just" wants some meta-programming bits to make it work out with "is" and not need the fallback :) | ||
abraxxa | Ven: the link i pasted before are the docs | ||
Ven | abraxxa: I'm not saying the docs are good. I'm saying you're attacking the wrong thing | 14:45 | |
[Coke] | ... remove the empty projects.json that had gotten installed, re-rebootstrap... | ||
14:45
treehug88 joined,
ajr_ left
|
|||
[Coke] | and it fails again, again have an empty projects.json | 14:46 | |
14:46
treehug88 left,
guru joined,
treehug88 joined
|
|||
abraxxa | Ven: so i need to read the docs, find the corresponding function in any of the .h files to find out its parameters? | 14:46 | |
14:47
guru is now known as Guest33852
|
|||
Ven | abraxxa: if they don't want to give out their source, yes. | 14:47 | |
14:47
Guest33852 is now known as ajr_
|
|||
Ven | Like in any other languages. | 14:47 | |
nine | jnthn: cygx already suggested github.com/niner/Inline-Perl5/issues/4 which looks like a nice start. I don't know enough Perl 6 to tell if the suggestion is good though. | ||
abraxxa | so the main Oracle library file is called libclntsh.so but there is no libclntsh.h, why? | ||
Ven | the .so is the "blob" of it all | ||
nine | abraxxa: AFICT NativeCall does not need .h files. You have to tell NativeCall what functions are there and what parameters they expect yourself. Is a bit of tedious work, but saves you all the trouble with finding the correct .h files and compiler settings. | 14:49 | |
abraxxa | nine: but how can i find the required functions and their params without the h files? | 14:50 | |
nine | abraxxa: this looks like what you need: docs.oracle.com/cd/E11882_01/appdev...tm#i556149 | ||
abraxxa | is that sufficient/the same as in the h file? docs.oracle.com/cd/E11882_01/appdev...tm#i556149 | ||
hm, must be a smith, returns a sword ;) | |||
nine | abraxxa: from what I see yes | ||
abraxxa: and I'm usually only bashing the parts of Oracle DBs that suck. Like it's deviation from standards and overcomplicatedness at times. It's certainly a powerful and stable system. | 14:52 | ||
abraxxa: oh and of course, that it's closed source ;) | |||
abraxxa | so why is the first parameter marked as OUT? is it the return value? | ||
[Coke] | tadzik: figured out my version of this problem. | 14:54 | |
nine | abraxxa: the function returns a sword (whatever that is in this context). It may also modify the variables pointed to by the envhpp and usrmempp pointers. | ||
[Coke] | abraxxa, you're on your own. :) | ||
abraxxa | i thought one * is a pointer, what are two **? | ||
[Coke] | tadzik: when I go through the proy, I'm getting an html page that asks me to pick an image off a list to prove I'm human. | ||
nine | abraxxa: a pointer to a pointer :) | ||
[Coke] | I would recommend that if the result of that initial download of projects.json is not json, panda dies, letting the user know. | 14:55 | |
abraxxa | what advantage does that have besides requiring additional memory? | ||
nine | abraxxa: let foo be a pointer. If you pass &foo (a pointer to foo) to the function, it can modify foo. | ||
[Coke] | maybe provide a way for me to pull down that file manually. | ||
nine | abraxxa: it's C's way of allowing multiple return values. | ||
abraxxa | nine: i see | 14:56 | |
and is that an OpaquePointer in NativeCall? | |||
nine | abraxxa: it's exactly the same in Perl: my $a = 'foo'; modify_it(\$a); # $a may now have changed | ||
abraxxa | but passing the pointer is enough | 14:57 | |
nine | abraxxa: yes, every pointer maps to an OpaquePointer. I suggest you declare your own data types mit repr('CPointer') though to keep them apart. | ||
abraxxa | to be able to modify it | ||
nine | abraxxa: to be able to modify wherever the pointer points to, not the pointer itself | ||
timotimo | and you can also nativecast a pointer to something else | 14:58 | |
nine | abraxxa: parameters in C are always passed by value, i.e. copied. | ||
abraxxa | how do I find out the mapping of C library data type to NativeCall data type? | 14:59 | |
timotimo | you can model a class PoP is repr('CStruct') { has OpaquePointer $inner } | ||
nine | abraxxa: github.com/jnthn/zavolaj#passing-a...ing-values | 15:01 | |
abraxxa | nine: those are the native C types, but the Oracle library defines its own ones | ||
ub4 for example | 15:02 | ||
which seems to take a constant | |||
nine | ub4 sounds like unsinged bytes 4 which I'd guess is an uint32 | ||
abraxxa | but how do i find out for sure? | 15:03 | |
nine | Seems like I'm right: www.oracle.com/pls/db112/search?rem...mp;partno= | ||
To know for sure you could search the header files for it's definition. | 15:04 | ||
abraxxa | this one? docs.oracle.com/cd/E11882_01/appdev...#ADFNS1409 | ||
hoelzro | o/ perl6 | 15:05 | |
nine | abraxxa: looks good | 15:06 | |
abraxxa | oratypes.h is seems | ||
i guess it makes sense to keep these names and alias them in the NativeCalls module | 15:07 | ||
nine | certainly | ||
15:08
denis_boyun left
|
|||
abraxxa | so that would be int32 in NativeCall? can/do i have to specify if it's signed or unsigned? | 15:10 | |
TimToady | unsigned is uint32 | ||
oh, nine said that already | 15:11 | ||
abraxxa | TimToady: the NativeCall README doesn't mention those | ||
const void *ctxp is a pointer, but why the const and void? | 15:13 | ||
TimToady | void* is guaranteed to be the widest pointer type, if they vary, I believe | ||
abraxxa | and const means that the pointer can't be changed or the thing it points to? | 15:14 | |
TimToady hasn't backlogged yet, so is saying things without much context | |||
abraxxa | that's all basic C stuff I don't understand so should be fine ;) | 15:15 | |
nine | abraxxa: the thing it points to may not changed by the function | ||
PerlJam | TimToady: random question -- Is there a particular reason that "perl -v" says "copyright Larry Wall" instead of "copyright The Perl Foundation"? | 15:16 | |
abraxxa | nine: i see. can i define that for NativeCall too? | ||
Ven | PerlJam: historical reasons :o) | 15:17 | |
ENOLARRY | |||
diakopter | eh | ||
nine | abraxxa: I don't know. At least you don't need to. It's mostly a guarantee to you as the users that the function will not change the value and a hint to the compiler that you as a function author don't want to write to so it can tell you if you violate that. Also the compiler may use this information for optimization. | 15:18 | |
PerlJam | Ven: Sure, I was just wondering if there were perhaps other reasons why the P5 copyright was not assigned to TPF (as most (all?) of the P6 copyrights seem to be) | ||
abraxxa | nine: ok, thanks | 15:19 | |
15:19
FROGGS left
15:20
anocelot_ left
15:21
virtualsue left
|
|||
nine | abraxxa: maybe you'll learn C after all :) | 15:21 | |
abraxxa | nine: i don't want to! who cares about memory management | 15:22 | |
TimToady | .oO(people who interface to native C code?) |
15:23 | |
Ven | PerlJam: I'm kidding anyway haha | ||
abraxxa | maybe I'm understanding what's required now that my stomach is filled | 15:24 | |
TimToady | PerlJam: there was never any particular reason to do that | ||
PerlJam | ok, thanks. | ||
TimToady | and Perl 5 is not the "community rewrite" of Perl :) | 15:25 | |
timotimo | oh, tony-o == segomos | ||
that's good to know | |||
.seen segomos | |||
yoleaux | I saw segomos 22 Jul 2014 20:47Z in #perl6: <segomos> m: say s:g/'perl5'/'perl6'/.so; | ||
abraxxa | ah yes....const void *(*malocfp) (void *ctxp, size_t size), | ||
so those are three params but for some reason they are not separated by , | 15:27 | ||
timotimo | huh? | 15:28 | |
nine | abraxxa: that's only one parameter, it's a function pointer | ||
timotimo | that's a single parameter, which refers to a function with two arguments returning a void pointer | ||
what's the cool program called that interprets such syntax? cdecl? | |||
abraxxa | those docs list them are three params: docs.oracle.com/cd/E11882_01/appdev...tm#i556149 | ||
nine | abraxxa: &malocfp(OpaquePointer, int --> OpaquePointer) in NativeCall | 15:29 | |
timotimo | the docs just fail to mention that ctxp and size are arguments expected by the function you pass as a function pointer | ||
abraxxa | why would I pass a function and its params to another function instead of just calling it before and passing it's return value to the other function? | 15:30 | |
timotimo | you don't pass the function's parameters | ||
you only pass the function; the function you pass the stuff to will call the function by itself and give it whatever parameters it feels like | |||
welcome to "learning higher order functions without any explanation" | |||
abraxxa | i why do i need to specify the functions params? | 15:31 | |
Ven | well then, friday o/ | ||
15:31
Ven left
|
|||
timotimo | what makes you think you do? | 15:31 | |
nine | abraxxa: in Perl5 a call would probably look like: my $foo = OCLenvCreate(\$envhpp, $mode, \&malocfp, \&ralocfp, \&mfreefp, $xtramemsz, \$usrmempp); | ||
abraxxa | timotimo: so it's only the docs which duplicates the malocfp function params here instead of just linking to its docs? | 15:32 | |
abraxxa looks at the head file | |||
nine | abraxxa: so the compiler can complain if you pass a pointer to a function that does not want exactly those parameters. It can keep you from making mistakes :) | ||
abraxxa | nine: ah, because the compiler doesn't know which pointer to one of the elsewhere defined functions might be passed in there | 15:34 | |
timotimo | abraxxa: it can't really "link to its docs" | 15:35 | |
because you're expected to supply the implementation | |||
nine | abraxxa: yep | ||
abraxxa | but that's optional to help finding errors at compile time? | ||
nine | abraxxa: no it's absolutely neccessary | ||
abraxxa | and for the Perl interface it doesn't matter, it only gets a pointer to a function | 15:36 | |
15:36
woolfy left,
lizmat_ joined,
woolfy joined
|
|||
abraxxa | but NativeCall doesn't have a way to specify and check it too? | 15:36 | |
nine | abraxxa: it's part of the function's definition (the one having function pointers as parameters). The function's declaration contains code that will call the passed function and the compiler needs to know which parameters with which types are passed. | ||
15:37
kaleem joined
15:38
lizmat left
|
|||
abraxxa | it can also look at the declaration of that function to find out which params are passed and what types they are, it just wouldn't know if the types match | 15:38 | |
so possible runtime error instead of compile time error | |||
tadzik | [Coke]: ah, heh | 15:39 | |
abraxxa | is size_t a native C data type? | ||
nine | abraxxa: yes, standardized in C99. It's an int basically | 15:40 | |
15:41
we is now known as bcode
|
|||
abraxxa | oratypes.h has the line # define MINSIZE_TMAXVAL (size_t)4294967295 which made me think it's a uint32 | 15:41 | |
tadzik | [Coke]: well, "failed to resolve host name" doesn't sound like a panda problem :) | 15:42 | |
15:43
molaf joined
|
|||
nine | abraxxa: yes, uint is more precise. It's _usually_ the same as uint32_t on a 32 bit architecture and uint64_t on 64 bit archs. | 15:43 | |
abraxxa | so int in NativeCall? | 15:44 | |
uint | |||
nine | yes | ||
lizmat_ | TimToady: about expressing eagerness in reification | 15:45 | |
TimToady | we haven't (yet?) actually made any guarantees that the "int" type in Perl 6 is the same size as the "int" type in C | ||
lizmat_ | wouldn't it make sense to use a dynamic variable for thet, e.g. $*EAGER | 15:46 | |
? | |||
TimToady | nope, wrong hammer | ||
lizmat_ | whenever you want a stack to be eagerly done, you do: | ||
15:46
lizmat_ is now known as lizmat
|
|||
abraxxa | nine: typedef signed int sword; #define SWORDMAXVAL ((sword) INT_MAX) #define SWORDMINVAL ((sword) INT_MIN) #define MINSWORDMAXVAL ((sword) 2147483647) #define MAXSWORDMINVAL ((sword) -2147483647) | 15:46 | |
nine: means int32 in NativeCall, right? | 15:47 | ||
15:47
muraiki left
|
|||
abraxxa | ah, no | 15:47 | |
minimum a 32bit signed int, maximum what the platform supports, right? | |||
15:47
muraiki joined
|
|||
abraxxa | so int in NativeCall | 15:47 | |
15:48
zakharyas left
|
|||
lizmat assumes this has been discussed to death already, to deserve such an answer | 15:48 | ||
TimToady | no, nobody's mentioned dynvars yet in this regard, but it's just not the direction we need to go | ||
PerlJam | lizmat: even if only by the voices in TimToady's head ;) | 15:49 | |
15:49
kaleem left
|
|||
lizmat | it seemed like a simple solution to me... | 15:49 | |
TimToady | and dynvars have the problem that they have to be unset in places too | ||
which is why they're also the wrong solution to 'use fatal' | |||
dalek | rl6-roast-data: fe7abd1 | coke++ | / (6 files): today (automated commit) |
||
lizmat is not seeing when you would want / need to unset dynvars | 15:50 | ||
just leaving the scope where you did 'my $*EAGER = True" would be enough? | |||
TimToady | for instance, the outside of a for loop might be eager, but we still have to evaluate its list lazily | ||
nine | abraxxa: you're obviously much more diligent than me ;) I just used Int everywhere in Inline::Perl5. But I guess it might be good to have another look at them. | ||
abraxxa | nine: that's just being careful because I'm not really knowing what i'm doing... ;( | 15:51 | |
TimToady | list policy really needs to be renegotiated at each level | ||
lizmat | ok, I'll take your word for it :-) it seemed like a simple and elegant solution to me | 15:52 | |
[Coke] | can we move projects.json to a standard HTTP port? | ||
TimToady | one of the major points of the GLR is that we not renegotiate this at every gimme/reify | ||
PerlJam | GLR? | ||
[Coke] | ah, nevermind. | ||
PerlJam | oh! | ||
heh. | |||
TimToady | but dynvars don't work anyway, because policy needs to be negotiated between the user and producer, and the user is not necessarily even in the same dynamic scope (remember we're using coroutines here) | 15:53 | |
PerlJam wonders if it's worth adding GLR to S99 since it's going to happen soon anyway | |||
right?!? ;) | |||
15:53
molaf left
|
|||
[Coke] | tadzik: working to get the URL classified so that I don't have to get the captcha. | 15:54 | |
TimToady | it has been my primary goal for the last month | ||
most of rest of what I've done is side effects of trying to feel my way into the GLR | |||
but yeah, I hope to make the term obsolete pretty soon | |||
dalek | ecs: 7d07bff | (Elizabeth Mattijsen)++ | S99-glossary.pod: Add GLR lemma |
||
TimToady | so sorry I'm a bit morning-snippy, but I have been thinking about this a lot... | 15:55 | |
and someone just asked me to do their PHP homework! | 15:56 | ||
lizmat | .oO( silence descended on the channel ) |
15:57 | |
15:58
ajr_ left
15:59
guru joined
|
|||
nine | That was a joke wasn't it? | 15:59 | |
diakopter | maybe write it in the Perl subset of PHP | ||
15:59
guru is now known as Guest59280
|
|||
TimToady | alas, no | 15:59 | |
15:59
Guest59280 is now known as ajr_
|
|||
TimToady | my reply: I am curious why you would think the creator of Perl (not PHP!), would spend his precious time doing your homework for you? | 15:59 | |
diakopter | The more people you ask.. | 16:00 | |
lizmat | .oO( bounce the mail to Rasmus ) |
||
PerlJam | Because Perl people are super smart and can solve any problem, of course! :) | ||
TimToady considered it :) | |||
16:01
pmurias joined
|
|||
TimToady | but I'm sure Rasmus deals with this too | 16:01 | |
pmurias | TimToady: you should send him the answer in Perl 6 ;) | ||
TimToady | even among Perl-folk, so many people want to have a personal relationship with me, and I can only spread myself so thin... | 16:04 | |
I do not have enough time to be friendly with all my friends, alas. | 16:07 | ||
[Coke] | You're the most famous person I talk to on a regular basis. I can see where it would make some people all weird. | ||
PerlJam feels weird just talking to "regular" folk most times. | 16:08 | ||
[Coke] | (bacon #: 4) | ||
PerlJam++ true | |||
(bacon - though I have never heard of the other 3 shows in the chain to bacon, so that can't be good) | 16:09 | ||
TimToady should publish something with his son Aron in order to acquire an Erdős number | 16:10 | ||
TimToady used to work with an Erdős #1 | 16:11 | ||
[Coke] | Nice! | 16:13 | |
TimToady | so I coulda been an Erdős #2, if I'd been into factoring large numbers :) | 16:17 | |
Ulti | if I get in a movie with my PhD supervisor I will have an Erdős-Bacon number of 5 | ||
TimToady | John Schieffer offered my a cameo in his movie Algorithm, but the scheduling didn't work out | 16:18 | |
Ulti | getting a low combined number is fairly tricky :) | ||
TimToady what would your bacon number have been? | 16:19 | ||
TimToady | noclooney | 16:20 | |
it appears there is also a colony of ants that wishes to have a personal relationship with me... | 16:21 | ||
huf | well, they can have a very personal relationship that lasts the rest of their life... | 16:22 | |
although it would be the opposite of fulfilling | 16:23 | ||
TimToady ponders committing insecticide... | |||
huf | think of it as breeding more sensible ants | 16:24 | |
ones that stay out of sight :) | |||
TimToady | "Think of it as evolution in action." --Niven & Pournelle | 16:25 | |
16:25
FROGGS[mobile] joined
|
|||
TimToady | from that book I can never remember the name of... | 16:27 | |
Timbus | nwc10, sorry i only just backscrolled. i know lists are slow and why, i was more wondering what the refactor actually means. its cool to muse about them being faster, but what is actually involved, internally | 16:28 | |
to make them faster | 16:29 | ||
TimToady | 1) don't keep deciding things over and over | ||
Timbus | lists took a very long time just to work properly after all | ||
TimToady | 2) don't use object dispatch where function dispatch will work | ||
[Coke] | TimToady: mote? earthfall? | ||
TimToady | no, the one with the arcology | 16:30 | |
3) make better use of the policy information we know to set up minimal supply chains | |||
Timbus | ah. 3 is what i was interested in | 16:31 | |
TimToady | 4) figure out how to acquire more information about demand | ||
5) figure out better when we have pure code that can work ahead without side effects | |||
6) delay decisions until first handshake of supply and demand | 16:32 | ||
7) rewriting eager gather/take into normal loops and pushes | |||
8) chopping out the middleman where possible (deforesting, in Haskell terminology) | 16:33 | ||
9) avoiding multiple copies of the data | |||
10) ??? | 16:34 | ||
11) Profit!!! | |||
nine | Profit! | ||
Timbus | heh | ||
TimToady | I guess 3 and 8 are roughly the same idea | 16:36 | |
16:36
[Sno] joined,
akaseki is now known as Salai
|
|||
Timbus | with 7, do you mean, write eager code paths manually, or just generate faster code | 16:37 | |
TimToady | I mean taking code that is written as gather/take, and internally rewriting it to my @batch; ... @batch.push: $x | 16:38 | |
which is not just for eager code, but lazy code that is trying to work in batches because it knows the code is pure somehow | 16:39 | ||
perhaps by examination, perhaps by declaration | |||
Timbus | yeah this seems like quite a refactor | ||
16:40
dayangkun left
|
|||
TimToady | understanding different batching strategies like slow-start | 16:40 | |
16:40
Rotwang left
|
|||
TimToady | so, for instance, you're doing initializing something you don't know the size of with pure-thunk() xx * | 16:41 | |
on the one hand, you don't want to call pure-thunk 100000 times to initialize an array that's 10 elements | |||
on the other hand, if you're initializing an array with 1000000 elements, you don't want to have a batch size of 10 | 16:42 | ||
Timbus | yeah, so start small and double it or so | ||
TimToady | that's the idea | ||
oh, another notion, which fights that one: when you use a constant batch size, re-use the array, don't reallocate and re-extend every batch | 16:43 | ||
consider a pragma that changes the default list policy from lazy to any of eager, batched, hyper, etc. | 16:45 | ||
16:45
brrt joined,
ajr_ left
|
|||
TimToady | oh, and break as few eggs as possible to make the new omelette :) | 16:46 | |
nine | TimToady: I guess the struggle to get lists working at least left lots of tests that will help now? | ||
16:46
ajr_ joined
|
|||
TimToady | yup, we have that in our favor | 16:46 | |
16:47
akaseki joined
|
|||
abraxxa | nine: can you please explain how I should call the OCIEnvCreate function in my Perl6 module similar to docs.oracle.com/cd/E11882_01/appdev...LNOCI16209 ? | 16:48 | |
16:49
Salai left,
brrt left
16:50
akaseki is now known as Salai,
xinming_ joined
|
|||
nine | abraxxa: I don't know yet if and how one can use OUT parameters with NativeCall. I'd probably write a little C wrapper. But maybe someone else has an idea. | 16:52 | |
16:53
xinming left
16:54
ajr_ left,
pmurias left
16:56
Rotwang joined
17:03
treehug88 left
|
|||
timotimo | out parameters? are those not simply pointers? | 17:12 | |
for those I would suggest a CArray | |||
17:13
gfldex joined
17:15
grondilu_ joined,
Woodi_ joined
|
|||
abraxxa | timotimo: why a CArray? | 17:18 | |
17:18
Woodi left,
BenGoldberg joined
17:19
grondilu left
|
|||
timotimo | because that gives you a memory location in which you can have space for a value or multiples | 17:19 | |
abraxxa | even if I only need one pointer? | 17:20 | |
timotimo | my $a = CArray[TypeOfThing].new(); $a.push: TypeOfThing | ||
yes, you need a location C can write to | 17:21 | ||
CArray is easiest AFAICT | |||
abraxxa | i'm not that far to understand what you mean | 17:25 | |
currently I'm trying to pass username, password and the database name as UTF-16 to Oracle | |||
it also needs the length in bytes for those three | |||
doc.perl6.org/routine/encode#class_Str says that .encode('UTF-8') returns a utf8 object but I can't find the docs for such an object | 17:26 | ||
i guess i always get a Buf object back and the correct method is .elems | 17:28 | ||
BenGoldberg | r: "abc".encode('utf-16').WHAT.say | 17:31 | |
camelia | rakudo-{parrot,jvm,moar} ce9507: OUTPUT«(utf16)» | ||
abraxxa | should utf-16 not always be 2 bytes per char? | 17:35 | |
nine | abraxxa: no, utf-16 is a variable length encoding | 17:36 | |
hoelzro | abraxxa: utf-16 can also have 4 bytes for some chars | ||
BenGoldberg | Correct. Each char is encoded as a multiple of two bytes. | ||
abraxxa | ok, so "Bar✌".encode('UTF-16').elems returning 4 is correct? | ||
BenGoldberg | m: "Bar✌".encode('UTF-16')[*].say | 17:37 | |
camelia | rakudo-moar ce9507: OUTPUT«66 97 114 9996» | ||
BenGoldberg | .u ✌ | ||
yoleaux | U+270C VICTORY HAND [So] (✌) | ||
abraxxa | m: "Bar✌".encode("UTF-16").say | 17:38 | |
camelia | rakudo-moar ce9507: OUTPUT«Buf:0x<42 61 72 270c>» | ||
abraxxa | so aren't this five bytes? | ||
BenGoldberg | A Buf isn't always bytes. | 17:39 | |
It could be bytes, or shorts words, or long words, or long long words, etc. | |||
Or bits. | |||
Or nibbles. | |||
abraxxa | BenGoldberg: doesn't read like it: doc.perl6.org/type/Buf | 17:41 | |
BenGoldberg | "In the abstract it is just a list of integers" | 17:42 | |
abraxxa | ah, not int8 | 17:43 | |
so how do i get the number of bytes from a Buf? | |||
nine | Fun fact from Wikipedia's UTF-16 article: Python 3.3 no longer ever uses UTF-16, instead strings are stored in one of ASCII/Latin-1, UCS-2, or UTF-32, depending on which code points are in the string, with a UTF-8 version also included so that repeated conversions to UTF-8 are fast | 17:44 | |
Because obviously just using UTF-8 would have been too easy... | |||
17:44
Px12 joined
|
|||
TimToady | hey, it "works" for Perl 5 :) | 17:44 | |
17:44
FROGGS joined
|
|||
TimToady | but I wouldn't exactly call it easy... | 17:45 | |
nwc10 | Timbus: then I guessed the wrong interpretation of the question that you asked. I'm glad that TimToady answered, because I did not know any of the details, and it was very interesting. | ||
BenGoldberg | m: TypedArray.new.say | 17:47 | |
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/OS26z5VJeOUndeclared name: TypedArray used at line 1» | ||
BenGoldberg | The graph on doc.perl6.org/type/Positional.html suggests the existance of a TypedArray class, but it doesn't seem to exist? | ||
colomon | nine++ # added Inline::Perl5 to ecosystem! | 17:48 | |
hoelzro | nine++ | 17:49 | |
BenGoldberg | 9++ ? | ||
Timbus | nwc10, ah. that's fine. and yeah it was a good response. it's a bit beyond me on how to implement the ideas, though | 17:52 | |
abraxxa can't find a way to get the number of bytes of a Buf | |||
BenGoldberg | A Buf isn't made of bytes. Its just a list of integers. | 17:53 | |
abraxxa | so i need to get the number of bytes a String has in a specific encoding | ||
colomon | m: "Bar✌".encode("UTF-8").say | 17:55 | |
camelia | rakudo-moar ce9507: OUTPUT«Buf:0x<42 61 72 e2 9c 8c>» | ||
BenGoldberg | You need two things: How many integers the string encodes two in a specific coding, and how many bytes per integer in that encoding. | ||
colomon | m: "Bar✌".encode("UTF-8").elems.say | ||
camelia | rakudo-moar ce9507: OUTPUT«6» | ||
colomon | m: "Bar✌".encode("UTF-16").elems.say | ||
camelia | rakudo-moar ce9507: OUTPUT«4» | ||
BenGoldberg | 4 integers, and two bytes per integer... but how to dynamically find out that "two bytes per integer"? | 17:56 | |
colomon | m: "Bar✌".encode("UTF-16").max.say | ||
camelia | rakudo-moar ce9507: OUTPUT«Buf:0x<42 61 72 270c>» | ||
colomon | m: "Bar✌".encode("UTF-16").list.max.say | 17:57 | |
camelia | rakudo-moar ce9507: OUTPUT«9996» | ||
BenGoldberg | m: "Bar✌".encode("UTF-16")[0].WHAT.say | 17:58 | |
camelia | rakudo-moar ce9507: OUTPUT«(Int)» | ||
colomon | m: say 9996.base(16) | ||
camelia | rakudo-moar ce9507: OUTPUT«270C» | ||
BenGoldberg | m: "Bar✌".encode("UTF-8")[0].WHAT.say | ||
camelia | rakudo-moar ce9507: OUTPUT«(Int)» | ||
colomon | …. no, this line of thinking is wrong. | ||
I think | |||
BenGoldberg | Is there some sort of Encoding module for querying meta-data about specific encodings? | 17:59 | |
abraxxa | i'd appreciate a bytes method on the Buf objects | ||
colomon | BenGoldberg: I dunno, but it sounds like what is needed here. | ||
oh! | 18:00 | ||
m: say "Bar✌".encode("UTF-8") ~~ bug8 | |||
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/NnZZR7WfuFUndeclared routine: bug8 used at line 1» | ||
colomon | m: say "Bar✌".encode("UTF-8") ~~ buf8 | ||
camelia | rakudo-moar ce9507: OUTPUT«False» | ||
colomon | m: say "Bar✌".encode("UTF-8") ~~ buf16 | ||
camelia | rakudo-moar ce9507: OUTPUT«False» | ||
BenGoldberg | bug8 was closer ;) | 18:01 | |
japhb | blob8 or utf8, IIRC | ||
colomon | I think those last two should work, according to perlcabal.org/syn/S32/Containers.html#Buf | ||
japhb goes to check | |||
colomon | m: say "Bar✌".encode("UTF-8") ~~ Buf | ||
camelia | rakudo-moar ce9507: OUTPUT«False» | ||
colomon | or not | ||
BenGoldberg | m: say "Bar✌".encode("UTF-8") ~~ blob8 | ||
camelia | rakudo-moar ce9507: OUTPUT«True» | ||
BenGoldberg | Thanks, japhb :) | ||
colomon | m: say "Bar✌".encode("UTF-16") ~~ blob8 | 18:02 | |
camelia | rakudo-moar ce9507: OUTPUT«False» | ||
FROGGS | m: say "Bar✌".encode("UTF-8") ~~ utf8 | ||
camelia | rakudo-moar ce9507: OUTPUT«True» | ||
colomon | m: say "Bar✌".encode("UTF-16") ~~ blob16 | ||
camelia | rakudo-moar ce9507: OUTPUT«True» | ||
colomon | yeah, there you go | ||
japhb | BenGoldberg: np. :-) | ||
colomon | japhb++ | ||
18:03
FROGGS[mobile] left
18:05
SamuraiJack joined
|
|||
BenGoldberg | m: say "Bar✌".encode("UTF-16").blob8 | 18:06 | |
camelia | rakudo-moar ce9507: OUTPUT«No such method 'blob8' for invocant of type 'utf16' in block <unit> at /tmp/c6JIjWnlGb:1» | ||
BenGoldberg | Where is Blob docu-ed? | ||
18:07
brother| left,
brother joined
|
|||
timotimo | what makes you think that we have any docs at all? | 18:08 | |
:S | |||
BenGoldberg | m: say blob8.new("Bar✌".encode("UTF-16")) | 18:09 | |
camelia | rakudo-moar ce9507: OUTPUT«Buf:0x<42 61 72 0c>» | ||
abraxxa | m: say blob8.new("Bar✌".encode("UTF-16")).elems | ||
camelia | rakudo-moar ce9507: OUTPUT«4» | ||
abraxxa | ARGH | 18:10 | |
BenGoldberg | I'd expected it to be at doc.perl6.org/type/Blob.html , but that's a 404 not found. | ||
abraxxa | without the html, but still the same | ||
the buf8 just takes the last 8 bits of each element | 18:13 | ||
TimToady | m: <a b c> ==> map({ "d" }) ==> say() | ||
camelia | rakudo-moar ce9507: OUTPUT«d d d» | ||
TimToady | timotimo: ^^ that's what ibo2perl6 wanted | ||
and one of the motivations for distinguishing say() from say | 18:14 | ||
feed operators are currently the only way to add extra list args outside of parens | 18:15 | ||
std: say(): 1,2,3 | |||
camelia | std 53b3ca6: OUTPUT«ok 00:01 124m» | ||
TimToady | STD allows this syntax for that though | ||
std: say() <== 1,2,3 | 18:16 | ||
camelia | std 53b3ca6: OUTPUT«ok 00:01 123m» | ||
TimToady | means roughly the same as that, but feeds may imply pipelining between threads | ||
jaffa4 | m:<a b c> ==> map({ $_ x 2 }) ==> say() | 18:17 | |
TimToady | space after : | ||
jaffa4 | m: <a b c> ==> map({ $_ x 2 }) ==> say() | ||
camelia | rakudo-moar ce9507: OUTPUT«aa bb cc» | ||
BenGoldberg | m: say(): 1, 2, 3; | 18:18 | |
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/oLGnuPveuCTwo terms in a rowat /tmp/oLGnuPveuC:1------> say()⏏: 1, 2, 3; expecting any of: postfix infix stopper infix or meta-infix…» | ||
TimToady | oh, I see Ven++ made the same say() suggestion | ||
timotimo | TimToady: yup, a bit later in the backscroll someone pointed that out as well, i think it was ven++ | 18:20 | |
dalek | Heuristic branch merge: pushed 20 commits to nqp/cglobal by FROGGS | ||
TimToady | I just said that :) | ||
18:20
dwarring joined
|
|||
jaffa4 | m: say : 1,2,3; | 18:20 | |
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!=== Error while compiling /tmp/eqBAs1qZMEUnsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argumentat /tmp/eqBAs1qZME:1------> say ⏏: 1,2,3; …» | ||
timotimo | sorry, i was still in backscroll :P | ||
moritz | \o | 18:22 | |
timotimo | ohai moritz | 18:23 | |
abraxxa | DBDish isn't installable with rakudo-star-2014.08, says that pir isn't a known compilation target | 18:24 | |
timotimo | that's when you have a moarvm rakudo star, eh? | 18:25 | |
abraxxa | yes | ||
timotimo has to build a rakudo afresh to check it out | 18:26 | ||
oh, it has a makefile | 18:27 | ||
that's not so awesome | |||
FROGGS | abraxxa: DBIish is included is rakudo star... why do you want to build it? | ||
and, normally you would not use the Makefile but just do: panda install . | 18:28 | ||
timotimo | ah | ||
so easy :) | |||
FROGGS | and since panda does not support Makefiles it should work out :o) | 18:29 | |
18:30
rindolf left
|
|||
abraxxa | FROGGS: i'm trying to adding Oracle support | 18:30 | |
FROGGS | abraxxa: I see, but still, just use panda to install it :o) | 18:31 | |
abraxxa: it will pick up added modules, run tests and generally do the right thang | |||
I still have to smile about the php homework *g* | 18:32 | ||
abraxxa | FROGGS: thanks | ||
FROGGS | abraxxa: you're welcome | ||
abraxxa | why not remove the makefile? | ||
FROGGS | abraxxa: that's what I wanted to ask moritz right now :o) | ||
moritz: ^^ | |||
moritz: do you mind removing DBIish's Makefile? | |||
moritz | do it, just also patch the README accordingly | ||
FROGGS | meh :P | 18:33 | |
ohh, I even can do it | |||
dalek | Iish: f23e1d9 | (Tobias Leich)++ | README (2 files): rename README to README.pod, so github formats it nicely |
18:34 | |
abraxxa | still doesn't format it | 18:35 | |
dalek | Iish: 3511bdb | (Tobias Leich)++ | README.pod: formatting tweaks |
18:36 | |
FROGGS | abraxxa: but now | ||
abraxxa | yes, what did you change? | ||
ah, see | 18:37 | ||
how can i run a specific test? is there something like prove? | 18:38 | ||
moritz | abraxxa: PERL6LIB=lib prove -e perl6 t/the/file.t | 18:39 | |
abraxxa | Connect failed with error Unknown type uint32 used in native call. | ||
nine: seems there are no unsigned types in NativeCall | |||
moritz: thanks, looks like it wants an alias | |||
nine | abraxxa: ok, you can usually get by without them though. | 18:40 | |
dalek | Iish: b87c5c0 | (Tobias Leich)++ | README.pod: mention installation using panda |
||
abraxxa | nine: so what should i use instead? Just int32? | ||
nine | abraxxa: yes | ||
abraxxa | t32 | ||
nine | abraxxa: it only makes a difference for values > MAXINT/2 | 18:41 | |
dalek | Iish: e59df94 | (Tobias Leich)++ | Makefile: remove Makefile, long live panda The Makefile only supported Parrot anyway. |
18:42 | |
abraxxa | FROGGS++ | ||
18:42
gtodd left
|
|||
abraxxa | site comes after lib in the include order? | 18:46 | |
panda installs to site, rakudo-star comes with DBIish installed in lib which is loaded before the version installed in site | 18:48 | ||
jaffa4 | Can this "class TopWindow is repr('CPointer')" inherit classes? | ||
18:52
Sqirrel joined
|
|||
nine | jaffa4: I don't know but also cannot see how that would be possible since it cannot even have attributes. | 18:54 | |
jaffa4: so I guess it might inherit from other CPointer classes | 18:55 | ||
PerlJam would guess that too | |||
japhb | Is it expected that panda fails its own t/ecosystem.t on r-p? | 18:56 | |
FROGGS | japhb: there is a regressions since a few days I think | 18:57 | |
japhb | Bah. | ||
OK, thanks. Only r-p, or all Rakudos? | |||
FROGGS | japhb: only r-p | ||
18:58
darutoko left
|
|||
japhb | OK, then I'll turn r-p off for now. | 18:58 | |
FROGGS | japhb: does it complain about VMThreads? | ||
japhb | t/ecosystem.t .. use of uninitialized value $state of type Any in string context in block at lib/Panda/Ecosystem.pm:28 | ||
use of uninitialized value of type Any in string context in any at gen/parrot/BOOTSTRAP.nqp:87 | |||
No such method 'chars' for invocant of type 'Any' | |||
FROGGS | ahh, this one | ||
japhb | And then a backtrace | ||
FROGGS | I tried to debug it, but probably not hard enough | 18:59 | |
jaffa4 | I can see there is such things as sub input_box() returns Str is encoded('utf8').. what encoding are supported? | ||
abraxxa | utf8, utf16 and ascii | 19:00 | |
jaffa4: see github.com/jnthn/zavolaj/#passing-...ing-values | |||
19:01
guru joined
|
|||
PerlJam | S32/Str:index # test | 19:01 | |
jaffa4 | utf16 is which by BE nad LE? | ||
19:01
guru is now known as Guest15402,
Guest15402 is now known as ajr_
|
|||
TimToady | jaffa4: it's either, but if you don't specify it generally defaults to your current arch | 19:04 | |
that being said, I wonder if we're assuming an archecture when we shouldn't | 19:05 | ||
*architecture | |||
19:06
telex left
|
|||
abraxxa | how can i find out where the error 'Native call expected object with CPointer representation, but got something else' comes from? | 19:08 | |
19:08
telex joined
|
|||
TimToady | some kind of recursive grep on the source | 19:09 | |
or are you talking about a stack trace? | 19:10 | ||
abraxxa | yes, that would be fine to be sure | ||
TimToady | there's something mysterious that prevents some stack traces in some cases; not sure what's causing that yet | 19:11 | |
agree that it's higly irritating to just get an error message, with not even a line number to look at | 19:12 | ||
abraxxa | ok | 19:13 | |
TimToady | moarvm in particular is prone to a lot of identical error messages that could come from different spots, but it doesn't bother to report which spot | ||
but this message looks like it comes from NativeCall | 19:14 | ||
abraxxa | it does | ||
TimToady has never looked inside that | 19:15 | ||
abraxxa | problem is I don't even know which part of *my* code triggers it | ||
BenGoldberg | m: say "Bar✌".encode("UTF-16-LE"); # how do i do this? | ||
camelia | rakudo-moar ce9507: OUTPUT«Unknown string encoding: 'utf-16-le' in method encode at src/gen/m-CORE.setting:6948 in block <unit> at /tmp/GwlP4Yz_Ov:1» | ||
TimToady | what I did when I had the problem was annotate the messages in the source to figure out which one was being triggered | ||
then I put an explicit backtrace in | |||
moritz | abraxxa: you can try to catch the error with try { }, and then print $!.backtrace.full | 19:16 | |
TimToady | BenGoldberg: moar doesn't know those encodings yet | ||
BenGoldberg | p: say "Bar✌".encode("UTF-16-LE"); | ||
camelia | rakudo-parrot ce9507: OUTPUT«encoding #-1 not found in method encode at gen/parrot/CORE.setting:6956 in block <unit> at /tmp/fTIQeHES2p:1» | ||
BenGoldberg | Encoding #-1 ?? | ||
abraxxa | when i add a warn to my code the line number is a bit of | ||
TimToady | p: say "Bar✌".encode("UTF-16LE"); | 19:17 | |
camelia | rakudo-parrot ce9507: OUTPUT«encoding #-1 not found in method encode at gen/parrot/CORE.setting:6956 in block <unit> at /tmp/oVz8PIaEtM:1» | ||
moritz | error message LTA | ||
TimToady | j: say "Bar✌".encode("UTF-16LE"); | ||
camelia | rakudo-jvm ce9507: OUTPUT«Unknown encoding 'utf-16le' in method encode at gen/jvm/CORE.setting:6930 in block <unit> at /tmp/sPU08etR8A:1» | ||
moritz | my theory is that pir::findencoding translates unknown encodings into -1 | 19:18 | |
and we don't catch that error, and pass that on to whatever handles the encoding, which then dies with this weird error message | |||
abraxxa | i have no idea why it spits out that error | ||
nine: do you have an idea? | |||
i'm trying to call that function docs.oracle.com/cd/E11882_01/appdev...tm#i562098 | 19:19 | ||
i've created OpaquePointer variables for each of them and passing them by reference to get a pointer to a pointer | |||
19:24
treehug88 joined
|
|||
jaffa4 | Is there do/include file in Perl 6? | 19:29 | |
moritz | abraxxa: you can abuse one-element CArrays to get a pointer to something | 19:31 | |
abraxxa | moritz: just found that out by looking at the sqlite module | ||
timotimo told me that before but I didn't understand | 19:32 | ||
19:34
rurban left
|
|||
abraxxa | still the same error ;( | 19:35 | |
19:36
BizarreCake left
19:39
zakharyas joined
|
|||
timotimo | what's your code look like? | 19:39 | |
abraxxa | what's the prefered pastebot in here? | 19:40 | |
nine | abraxxa: you're just passing different parameters to a function call than you declared. | ||
abraxxa: gist.github.com | 19:41 | ||
abraxxa | paste.scsys.co.uk/423118 | ||
timotimo | we like gist, non-private gists can be directly executed by camelia | ||
abraxxa | ok, next time | 19:42 | |
timotimo | where does it explode? | ||
abraxxa | the example in the docs passes 0 instead of pointers though: docs.oracle.com/cd/E11882_01/appdev...LNOCI16209 | ||
timotimo: at the call to OCIEnvNlsCreate | 19:43 | ||
nine | abraxxa: that code does not seem complete. Where do OCI_THREADED and $ctxp come from for example? | ||
abraxxa | :1 | ||
timotimo | huh, malocfp, ralocfp and mfreefp are IN parameters | ||
[Coke] | timotimo: did that get fixed? ISTR gistEVAL was borked for a long time | ||
abraxxa | nine: yeah, those are constants I've defined | 19:44 | |
timotimo: does that mean i don't need a CArray or OpaquePointers? | |||
timotimo | oh? | ||
i thought it just doesn't like private gists?! | |||
abraxxa | cause I interpreted that void *(*malocfp) does mean pointer to a pointer because of the two * | 19:45 | |
timotimo | hold on. | 19:46 | |
cdecl gives me a syntax error :( | 19:47 | ||
abraxxa | timotimo: see docs.oracle.com/cd/E11882_01/appdev...tm#i562098 | 19:48 | |
timotimo | i think it's a single pointer | 19:50 | |
abraxxa | i had tried that before | ||
timotimo | well, it's a function pointer, so it'll want special attention | ||
abraxxa | and do i need to pass those memory allocation functions or does 0 mean undefined? | 19:51 | |
timotimo | that's something the documentation should tell you | 19:52 | |
(but apparently it doesn't tell you) | |||
abraxxa | the error is now Connect failed with error Native call expected object with CArray representation, but got something else | 19:53 | |
but i only have two CArray params now | |||
$envhpp and $usrmempp | 19:54 | ||
timotimo | did you see above how to declare a function pointer argument? | ||
19:55
BenGoldberg left,
Ben_Goldberg joined
|
|||
abraxxa | where above? in the docs or the scrollback? | 19:55 | |
timotimo | scrollback | ||
abraxxa | CArray[OpaquePointer] $envhpp, ? | 19:56 | |
timotimo | no, hold on | ||
172922 nine │ abraxxa: &malocfp(OpaquePointer, int --> OpaquePointer) in NativeCall | 19:57 | ||
abraxxa | i don't have a user defined memory allocation function to pass it | ||
timotimo | you may still have to give it the right type, no? | 19:58 | |
abraxxa | why would it complaint about a CArray when i've defined it as OpaquePointer? | 19:59 | |
but be one of the two params defined as CArray[OpaquePoniter] | |||
20:00
gaussblurinc_ joined
|
|||
dalek | volaj/cglobal: ac770b5 | (Tobias Leich)++ | lib/NativeCall.pm6: cglobals are made available by a sub instead of trait This way we can bind a proxy to a variable (jnthn++) instead of declaring a subroutine that feels wrong for such a task. We already can read from global C variables, but we still need the correct primitive to write to a memory location. |
20:00 | |
FROGGS | timotimo: do we already have something that let me write to a piece of mem? | 20:03 | |
(might be just that I'm tired or that my brane doesnt work) | 20:04 | ||
timotimo | not sure ... what happens if you nativecallcast an int to a pointer? :) | ||
20:04
SamuraiJack left
|
|||
FROGGS | timotimo: it will complain that the source is not a pointer :o) | 20:05 | |
timotimo | but ... that's the point of casting?! | ||
can you create an ObjAt from an integer? | |||
m: ObjAt.new(1024); | |||
camelia | rakudo-moar ce9507: OUTPUT«Default constructor for 'ObjAt' only takes named arguments in method new at src/gen/m-CORE.setting:924 in block <unit> at /tmp/3jzV0QPgAw:1» | ||
FROGGS | star-m: say OpaquePointer.new(1234) | 20:06 | |
camelia | star-m 2014.04: OUTPUT«===SORRY!=== Error while compiling /tmp/azRHbRixG4Undeclared name: OpaquePointer used at line 1» | ||
FROGGS | star-m: use NativeCall; say OpaquePointer.new(1234) | ||
camelia | star-m 2014.04: OUTPUT«Default constructor for 'OpaquePointer' only takes named arguments in method new at src/gen/m-CORE.setting:846 in block at /tmp/TDmN5_QtiT:1» | ||
moritz | timotimo: by boxing a string | ||
timotimo | maybe an OpaquePointer gets created with box_I? | ||
FROGGS | no, that star is just too old | ||
moritz | m: say nqp::box_s(ObjAt, '1024') | ||
camelia | rakudo-moar ce9507: OUTPUT«Cannot unbox a type object in block <unit> at /tmp/5Te_tdnY9f:1» | ||
timotimo | why the F would you box a *string* for an address? | 20:07 | |
FROGGS | though, what I did would create a pointer pointing to 1234 | ||
timotimo | also, i think the string comes first in box_s | ||
m: say nqp::box_s('1024', ObjAt) | 20:08 | ||
camelia | rakudo-moar ce9507: OUTPUT«1024» | ||
moritz builds a newer star for camelia | 20:09 | ||
FROGGS | moritz++ # :o) | ||
if I wasn't that tired I'd implement OpaquePointer.alloc and .free | 20:12 | ||
and then make a list of things JNA has and we don't | |||
err, JNI | |||
well, J-something anyway | |||
abraxxa | so is there something i could do or won't that work with the current NativeCall features? | 20:13 | |
FROGGS | many stuff works... I am currently binding libxml2 | 20:14 | |
abraxxa | am i'm doing something wrong? | 20:15 | |
FROGGS | I dunno, I didn't backlog | ||
moritz | now I noticed that I haven't built parakudo in a very long time | 20:18 | |
hoelzro | m: role R { ... } ; class C does R { } | 20:20 | |
camelia | rakudo-moar ce9507: OUTPUT«===SORRY!===None of the parametric role variants for 'R' matched the arguments supplied.Cannot call ''; none of these signatures match:» | ||
hoelzro | should that give a more intesting error message? | ||
FROGGS | ohh yes please :o) | ||
hoelzro | ok, that's a LHF I can put on my TODO list =) | 20:21 | |
<!> always fails, right? so [ <foo> <!> || <bar> ] will always try to match <bar>, right? | 20:24 | ||
moritz | I think so, yes | 20:25 | |
and will terminate LTM | |||
hoelzro | is there a way I can fail the foo branch, even if foo succeeds, but not run the bar branch if foo succeeds? | 20:29 | |
20:29
zakharyas left
|
|||
hoelzro | basically, I want to alter a token to fail entirely, but to provide as much diagnostic information as I can | 20:29 | |
moritz | I think there are backtracking control primitives specced for that, but rakudo doesn't implement them | 20:30 | |
:, :: and ::: | |||
and I think :: is what you want | |||
hoelzro | that's what I was thinking | 20:31 | |
but I noticed that they aren't used in Rakudo itself, which made me nervous | |||
apparently rightfully so | 20:32 | ||
20:32
vendethiel- left
|
|||
moritz | woah, rakudo-p setting compilation is REALLY slow | 20:34 | |
200s for stage parse | |||
where moar is below 50s | |||
FROGGS | mine takes about 105s when moar takes 33s | 20:35 | |
but perhaps the amount of RAM matters here too | 20:36 | ||
moritz | m: say 105 / 33 | ||
camelia | rakudo-moar ce9507: OUTPUT«3.181818» | ||
20:40
cooper_ joined
20:41
cognome left,
vendethiel joined,
cognome joined
|
|||
abraxxa | i pushed my work to github.com/abraxxa/DBIish/commit/f...ef5c192765 | 20:45 | |
dalek | kudo/nom: 34cf7a9 | (Elizabeth Mattijsen)++ | src/core/ (2 files): Add some comments about eager candidates |
||
timotimo | wow, much code | ||
abraxxa: you misspelt "DBI" as "DBD" in the explanation at the way bottom | 20:46 | ||
abraxxa | timotimo: it started as a copy of Pg.pm6 | 20:47 | |
moritz | abraxxa: there's some copy/pasto in the test file that still assumes postgres | 20:48 | |
timotimo | and the end of the paragraph refers to the "Mini" part of the name, that may be supposed to read "Ish" instead? | ||
moritz | abraxxa: basically the whole pod block at the end | ||
abraxxa | moritz: yeah | 20:49 | |
i didn't want to invest time in docs as long as not even the most basic call works | 20:50 | ||
nine | abraxxa: what does your current version look like? | 20:51 | |
abraxxa | nine: what i pushed to github | ||
nine | abraxxa: URI? | ||
abraxxa | nine: github.com/abraxxa/DBIish/commit/f...ef5c192765 | 20:52 | |
moritz | abraxxa: IMHO it's better to simply cut away the docs than keep them when they are wrong | 20:55 | |
abraxxa | moritz: agreed | 20:56 | |
moritz | abraxxa: btw, you're welcome to develop in perl6/DBIish directly (in a branch if you want) | 20:58 | |
abraxxa | moritz: thanks, I'll gladly do that as soon as that starts to work | ||
nine | abraxxa: looks quite sane to me. What's the status? Pity that I can't test myself. | 20:59 | |
moritz | (invitation sent) | ||
abraxxa | nine: Connect failed with error Native call expected object with CArray representation, but got something else | 21:00 | |
moritz: thanks, accepted | |||
itz | seems a little faster today compared with a day or so ago | 21:01 | |
nine | I wonder if developing DBIish actually makes much sense since it's not meant to be a long term solution but a simple reimplementation of DBI. We could use the real DBI now instead and work on the next gen database interface. | ||
abraxxa | nine: but isn't the interface to the various C libraries via NativeCalls still needed? | 21:02 | |
nine | Though having working database driver code in Perl 6 certainly can help with the latter. | ||
abraxxa: yep, that's what I meant right now. | |||
abraxxa | nine: any idea what triggers the error? | 21:06 | |
nine | abraxxa: no. I went through your code line by line but everything looks correct. Can you find out if it's the OCIEnvNlsCreate or OCILogon2 call? | 21:08 | |
21:09
jaffa4 left
|
|||
timotimo | sprinkle say statements %) | 21:15 | |
or use the debugger | |||
abraxxa | nine: seems to be the first one | 21:24 | |
nine | abraxxa: I'd replace the two CArray parameters by something else (both in declaration and all) and try if it changes the error message. It'll probably segfault, but at least we then know if it's the parameters or something else. | 21:27 | |
abraxxa | nine: thanks | ||
21:29
ClarusCogitatio left
21:31
ClarusCogitatio joined
21:37
cognome_ joined
21:38
[particle] joined,
ClarusCogitatio left
21:39
Alina-malina left
|
|||
dalek | p: a3e805a | (David Warring [email@hidden.address] | examples/rubyish/rubyish.nqp: [examples/rubyish] improved handling of package constants |
21:39 | |
21:40
cooper__ joined,
Alina-malina joined,
tinita_ joined,
grondilu joined
21:41
baest_ joined,
ClarusCogitatio joined
21:42
ChoHag left,
ChoHag joined,
Exodist left,
Exodist joined
21:43
cognome left,
grondilu_ left,
[particle]1 left,
tinita left,
cooper_ left,
baest left,
geekosaur left,
geekosaur joined
21:44
ggherdov left
21:45
timotimo left,
synopsebot left,
Psyche^ left,
Psyche^ joined,
Ben_Goldberg left
21:46
BenGoldberg joined,
synopsebot joined,
Px12 left
|
|||
nine | sleep & | 21:47 | |
21:48
mberends joined,
ggherdov joined
21:49
gaussblurinc_ left
21:55
abraxxa left
21:59
treehug88 left
22:00
cognome_ left
22:01
cognome joined
22:06
cognome left
22:11
spider-mario left
22:12
japhb_ joined,
isacloud____ left
22:13
vendethiel- joined
22:14
nwc10_ joined,
jlaire_ joined,
yogan_ joined,
isacloud_____ joined,
Timbus_ joined
22:15
sivoais_ joined,
petercom1and joined
22:16
dj_goku_ joined,
eternaleye_ joined
22:17
nebuchad` joined
22:18
ggherdov_ joined,
vike joined,
Psyche^_ joined,
ggherdov left,
Psyche^ left,
bjz left,
Timbus left,
esaym153 left,
labster left,
sivoais left,
renormalist left,
petercommand left,
Celelibi left,
yogan left
22:19
cooper__ left,
ggherdov_ is now known as ggherdov,
sivoais_ is now known as sivoais,
esaym153 joined
22:20
sivoais left,
sivoais joined,
bjz joined,
bcode_ joined
22:21
timotimo joined
22:24
renormalist joined
22:25
DarthGandalf left,
mst_ joined,
bcode left,
bcode_ is now known as bcode,
esaym153 left
22:26
esaym joined,
lizmat_ joined,
kuroseki joined
22:27
Rotwang left
22:28
DarthGandalf joined,
petercom1and left,
ChoHag left,
grondilu left,
telex left,
gfldex left,
slavik left,
grondilu joined
22:29
dj_goku_ left,
japhb_ left,
Alina-malina left,
avuserow left,
ingy left,
Colby` joined,
bloonix_ joined,
Psyche^_ left,
Salai left
22:30
petercommand joined,
ggoebel1111114 is now known as 17SAA7ZD9,
muraiki left,
lizmat left,
\00 left,
17SAA7ZD9 left,
firnsy left,
daxim left,
mtj_ left,
Pleiades` left,
silug left,
Colby` is now known as Pleiades`,
telex joined
22:31
japhb_ joined,
slavik joined,
guru joined,
guru left,
cognome joined
22:32
vendethiel left,
colomon left,
eternaleye left,
nebuchadnezzar left,
bloonix left,
vike1 left,
jlaire left,
betterworld left,
robinsmidsrod left,
_sri left,
go|dfish left,
dj_goku left,
mst left,
nwc10 left,
japhb left,
eternaleye_ is now known as eternaleye
22:33
cognome left,
cognome joined,
bcode_ joined,
nwc10 joined,
pochi joined
|
|||
retupmoca | t/09-nativecast.t ...... Failed 8/10 subtests # :( | 22:34 | |
22:37
betterworld joined,
cognome left
22:38
timotimo left,
bcode left,
vike left,
nebuchad` left,
ggherdov left,
yogan_ left,
nwc10_ left,
geekosaur left,
baest_ left,
ajr_ left,
xinming_ left,
woolfy left,
xfix left,
pochi_ left,
Akagi201 left,
oetiker left,
Guest42178 left,
ivanshmakov left,
bcode_ is now known as bcode
22:39
labster_ joined
22:41
bjz left,
xfix joined,
xfix left,
xfix joined,
breinbaa1 joined,
arnsholt joined,
ggoebel1111116 joined,
mtj_ joined,
breinbaas left,
arnsholt_ left,
jercos left
22:42
telex left,
BenGoldberg left,
noganex_ joined,
Akagi201 joined,
Psyche^ joined,
xragnar left,
pmichaud left,
ivanshmakov joined,
DELLtra joined
22:43
grondilu_ joined,
ingy joined,
vendethiel- left,
ashleydev left,
gfldex joined,
ilbot3 left,
Tene_ joined,
Tene_ left,
Tene_ joined,
itz left,
fling left
22:44
noganex left,
hugme left
|
|||
DELLtra | o/ | 22:44 | |
22:44
BenGoldberg joined,
_sri joined,
kst left,
jtpalmer left,
robinsmidsrod joined
22:45
ggherdov_ joined,
thilp_ left,
itz joined,
bjz joined
|
|||
DELLtra | o/ | 22:45 | |
hi | |||
I need help with this scritp not understand fpaste.org/133306/10556906/ | 22:46 | ||
22:46
vendethiel joined
22:47
avuserow joined,
xragnar joined
22:48
Tene left,
betterworld left,
japhb_ left,
Pleiades` left,
grondilu left,
djanatyn left,
mst_ left,
eternaleye left,
zoosha left
22:50
djanatyn joined,
japhb joined
22:52
geekosaur joined
22:53
eternaleye joined
22:54
firnsy joined,
jtpalmer joined,
Pleiades` joined,
mst joined,
Pleiades` left,
Pleiades` joined,
firnsy left,
firnsy joined
22:55
betterworld joined,
jercos joined,
Celelibi joined,
xinming joined,
go|dfish joined
22:57
gfldex left,
fling joined
22:58
baest joined,
colomon joined
22:59
ClarusCogitatio left
23:00
cognome joined
23:02
oetiker joined
23:06
vendethiel left,
itz left,
arnsholt left,
hugme joined,
arnsholt joined,
ChanServ sets mode: +v hugme
23:08
telex joined,
[particle] left,
bloonix_ left,
fling left
23:09
exixt left
23:10
skarn joined,
skarn is now known as Guest49163,
go|dfish left,
awwaiid left
23:11
ivanshmakov left
23:12
djanatyn left
23:13
hugme left
23:14
Akagi201 left,
MilkmanDan left,
xragnar left,
MilkmanDan joined,
MilkmanDan left,
MilkmanDan joined
23:15
sivoais left
23:16
Akagi201 joined,
grondilu_ left,
avuserow left,
esaym left,
grondilu joined
23:17
hugme joined,
ChanServ sets mode: +v hugme,
ClarusCogitatio joined
23:20
eternaleye left
23:21
eternaleye joined
23:22
camelia left
23:27
bloonix joined
23:31
vendethiel joined
23:33
xragnar joined,
djanatyn joined
23:34
pmichaud joined
23:36
muraiki joined
23:37
go|dfish joined
23:38
dj_goku joined,
ChoHag joined,
ilbot3 joined,
woolfy joined,
JTAAFVNA joined,
camelia joined
23:39
telex left,
ilbot3 left
23:41
ilbot3 joined,
ashleydev joined,
zoosha_ joined,
timotimo joined,
yogan_ joined
23:42
nebuchadnezzar joined
23:44
lizmat joined,
\00 joined,
daxim joined,
silug joined,
lizmat left
23:45
itz joined
23:50
xenoterracide joined
23:54
telex joined,
fling joined,
sivoais joined,
esaym153 joined,
awwaiid joined,
vike joined,
sivoais left,
fling left,
telex left,
Tene_ is now known as Tene
23:55
telex joined,
sivoais joined,
fling joined,
itz left
23:56
itz joined
23:58
isacloud_____ left,
isacloud_____ joined,
ChanServ sets mode: +v camelia
23:59
ggherdov_ left,
ggherdov_ joined
|