Parrot 3.9.0 "Archaeopteryx" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 19 October 2011.
00:02 rfw joined
bacek_at_work dukeleto, erm. I'm at work right now :) 00:24
Coke bacek_at_work: добро пожаловать 00:38
bacek_at_work Coke, спасибо :)
Coke ooh, I actually KNOW that word. ;) 00:39
(though I didn't know that's how it was spelled. ;) 00:40
whiteknight I didn't get to mention it at #parrotsketch today because my computer was the fail, but there's a semantic analysis program called coccinelle that might be worth looking at 00:50
for fixing things like NULL/STRINGNULL, etc
bacek_at_work github.com/bjpop/berp/ "Python 3 implementation in Haskell" 00:59
01:13 jsut joined 01:15 benabik joined
cotto whiteknight: I thought of that but I never got over the hump of actually setting it up. 01:17
whiteknight I read about it a long time ago, and haven't really thought about it since
cotto same here 01:18
whiteknight apparently it's been used to make non-trivial edits to the linux kernel, so that's reassuring
cotto yes
that's what got me to look at it in the first place 01:19
and the lwn article
The reason I suggested a test is because something useful could be written with <10 lines of Perl 5. 01:22
full-on static analysis would be nice though 01:23
01:27 nbrown joined 02:34 GodFather joined 02:35 GodFather joined
cotto 'evening 02:47
How is berp's performance? 02:50
nm. It doesn't seem to be especially complete. Asking about performance would be premature. 02:51
still pretty cool 02:52
02:53 Tene joined
japhb Feature request: a backwards-searching variant of the find_not_cclass op. Having to fake it is slowing certain string trim operations in Rakudo considerably. How does one go about requesting it officially? 03:37
Coke open a RFE ticket on github? 03:42
OOC, couldn't you prototype the op in perl6.ops?
bacek_at_work japhb, with 'utf-8' internally encoded strings it will be slow even on parrot level 04:28
04:31 zpmorgan joined 04:45 TonyC joined 04:52 nopaste joined 05:03 Khisanth joined
japhb bacek_at_work, yes, but it is currently ~6x slower to trim-trailing than to trim-leading, mostly due to the fact that finding the end of leading whitespace is a single pir op, while finding the start of trailing whitespace is a loop. 05:22
(And that's after I optimized the loop)
Coke, OK, will look there. 05:23
05:46 wagle joined 06:05 wagle joined
dalek p/bigint: 6426a56 | moritz++ | src/ (2 files):
nqp_bigint_bool op (checks != 0)
07:14
08:08 alin joined 08:39 mj41 joined
dalek p/bigint: 1db0ea8 | moritz++ | src/ (2 files):
fix a few ops, moritz--
08:51
09:14 lucian joined 09:43 mj41 joined
dalek kudo/bigint: fb5b1b9 | moritz++ | / (2 files):
start to switch to bigint ops

This breaks spectest horribly, and I do not understand the failure mode It says "get_boxed_ref could not unbox for the given representation" in sub infix:<->, but when I test infix:<-> in isoluation, I cannot reproduce that failure mode
10:22
10:58 alvis joined 10:59 ambs joined 11:06 particle joined 11:07 nbrown joined 11:20 jsut_ joined 11:31 Khisanth joined 11:32 schmooster joined 12:11 Psyche^ joined 12:26 bluescreen joined 12:49 alin joined
dalek kudo/bigint: 88158ac | moritz++ | src/core/Int.pm:
a few fixes, still completely broken
13:23
13:27 whiteknight joined
whiteknight good morning, #parrot 13:28
13:47 alin joined
mls hi whiteknight! How are you doing? 13:58
14:02 benabik joined
benabik o/ #parrot 14:04
mls \\o benabik! 14:05
(afk for a while) 14:11
whiteknight good morning, mls. I'm doing well. you? 14:15
14:17 man_in_shack left
dalek kudo/bigint: 513f055 | moritz++ | src/core/Int.pm:
switch more ops to bigint
14:17
14:22 NotFound_b joined
dalek nxed: c70cc2e | NotFound++ | winxedst1.winxed:
improve constant propagation in string concatenations
14:24
14:58 jsut joined
moritz en.wikipedia.org/wiki/Tim_sort might be interesting 15:25
whiteknight I was looking at implementing it for parrot, but ran out of tuits at the time 15:33
but yes, it does look very interesting
dalek nxed: 0561450 | NotFound++ | winxedst1.winxed:
simplify the construction of string literals during optimization
15:39
benabik Visual explanation of TimSort: corte.si/posts/code/timsort/index.html 15:53
dukeleto ~~ 16:24
whiteknight hello dukeleto 16:39
dalek nxed: fdf75e0 | NotFound++ | winxedst1.winxed:
optimize a bit int, float and string initializers
16:48
p/bigint: 302cc17 | jnthn++ | src/ (2 files):
Merge branch 'bigint' of github.com:/perl6/nqp into bigint
dukeleto whiteknight: wazzup 16:55
whiteknight dukeleto: everything and nothing all at once. you? 16:56
dukeleto whiteknight: conf calling and attempting to fill out IRS forms. I finally got the info I need about PaFo to fill out the w9 17:03
whiteknight yeah, I saw that this morning. awesome 17:04
dalek nxed: 4f1c542 | NotFound++ | / (4 files):
update NEWS and generated files
17:21
rrot: 1ee1c09 | nine++ | t/fullharness:
Fix job concurrency in fulltest
17:27
rrot: de1cf6d | nine++ | / (4 files):
Merge branch 'master' of github.com:parrot/parrot
rrot/threads: 6912133 | nine++ | src/thread.c:
Don't exit a thread if alarms are still active, fixing sleep

Currently does a busy wait till alarms expire. Full implementation will sleep until notified by the main thread.
rrot/threads: e034889 | nine++ | / (3 files):
Fix sleep in threads

Only up to 4 threads are now created. These threads are stored in a threads array and get notified on alarms by the main thread writing a byte to the notifier pipe of the thread.
TODO: implement on Windows TODO: only write to the pipe if the thread is actually waiting for alarms
rrot/threads: 1ee1c09 | nine++ | t/fullharness:
Fix job concurrency in fulltest
rrot/threads: 6b23e73 | nine++ | t/fullharness:
Merge branch 'master' into threads
whiteknight nine++ 17:28
dalek rrot: c7fd2f9 | NotFound++ | ext/winxed/ (2 files):
update winxed snapshot to 4f1c542189:

  - better compile time evaluation of builtins
  - minor fixes and optimizations
17:31
17:32 bluescreen joined
nine whiteknight: had a somewhat productive trip to a Rammstein concert in Zagreb ;) Though I wasted much time trying to store interpreters in a ResizablePMCArray which the GC didn't like 17:33
tadzik Zagrzeb, maybe?
nine tadzik: en.wikipedia.org/wiki/Zagreb 17:35
whiteknight I would love to go to a rammstein concert one day 17:39
tadzik oh, yeah, we call that "Zagrzeb" :)
nine tadzik: how do you pronounce that? 17:43
tadzik erm, "Zagrzeb"? :P
the same as "Zagżeb" :>
nine tadzik: ah, of course :)
tadzik did you see the Brzęczyszczykiewicz video?
cotto ~~ 17:48
tadzik ~~
nine tadzik: no 17:53
tadzik nine: www.youtube.com/watch?v=ftrqO-jkMpE 18:01
tl;dr: don't ask a Polish guy how to pronounce stuff :P
dalek kudo/bigint: 7b75f75 | jnthn++ | src/core/Int.pm:
Remove accidental boolification.
18:02
nine tadzik: epic 18:05
tadzik most of the old Polish comedies are awesome
18:57 mj41 joined
dalek nxed: b3a0908 | NotFound++ | t/basic/01initialize.t:
test initializers
18:59
nxed: 1a6730a | NotFound++ | winxedst0.cpp:
improve mixed type initializers in stage 0
19:22 bluescreen joined 19:27 rfw joined 19:35 contingencyplan joined 19:37 mj41 joined 19:51 plobsing_ joined
dukeleto msg NotFound any help with github.com/letolabs/parrot-libgit2/issues/8 would be really appreciated. Really stuck. 19:57
aloha OK. I'll deliver the message.
benabik Hm. Installing libgit2 prior to trying to build parrot-libgit2 might be useful. 20:10
homebrew++ # easy dependencies
Hm. And rosella. 20:13
20:14 whiteknight joined
dukeleto woot. Parrot was accepted into GCI this year! 20:18
benabik: yeah, sorry about that
benabik: bundling rosella with parrot-libgit2 kind of failed
benabik: i almost added it as a git submodule 20:19
benabik: if you have tuits to do that, i would surely accept the patch :)
benabik dukeleto: I barely have the tuits to do what I'm doing. ;-)
dukeleto: I don't mind installing dependencies, I just forgot that it would be needed. 20:20
Big surprises were that I needed to change the libgit2 paths (/usr/local/lib/libgit2.dylib on OS X) and that parrot seems to have skipped using libffi and I don't know why.
Although I note that parrot-libgit2 seems to rebuild everything on every invocation of make. (I think because it always rebuilds the .nci file.) 20:21
dukeleto benabik: ooh, nice catch. parrot-libgit2 is still very alpha :)
benabik: i use winxed setup.winxed build
benabik: i only use the Makefile for updating the nci file (for new versions of libgit2/etc) 20:22
benabik: but yes, the build system is confusing :)
benabik Ahhhhh… I tend towards make when available. You could do whiteknight's trick of just using make to call setup.winxed.
dukeleto benabik: the setup.winxed came after the Makefile, and does almost everything (accept the nci file generation)
except, rather 20:23
stupid languages
benabik How does parrot detect libffi? 20:25
Ah. OS X puts ffi.h in ffi/ffi.h 20:26
tadzik dukeleto: yay! \\o/ 20:27
whiteknight benabik: I have a quick alias "mj" for "make -j3" on my system. So the decision was either to update that alias to search for a setup.[pir|nqp|winxed] file and call that, or just create a simple makefile to pass through the command 20:36
in terms of total keystrokes and firing braincells, the makefile was easier 20:37
benabik whiteknight: It also makes my "oh look a Makefile" habit work, so I appreciate it. :-D
whiteknight :) 20:39
urg, every time I see a cursor in sql code, I weep a little
benabik ?
Ah. I have ffi/ffi.h, libffi.dylib, but no libffi.pc. Apple-- 20:40
whiteknight if somebody asked me: Andrew, what's the most tacked-on, ugly, poorly implemented feature in any programming language you know of? I would have to say SQL cursors
benabik adds Configure.pl voodoo to find libffi. Whee. 20:42
I've never dealt with SQL cursors. This sounds like a goodness. 20:44
whiteknight benabik: if you had to track the status of an item in an ecommerce system, how would you do it? 20:45
statuses like "purchased", "shipped", "returned", etc
benabik whiteknight: Probably have a status_id column in the item table and reference that to either a Status table or an enum. 20:46
whiteknight right. That's the same answer I said when my boss asked me that question.
benabik \\o/
whiteknight The guy before me did it exactly differently: He used a bitfield where each item had bits set for the current status AND all previous statuses 20:47
benabik Uhhhhh.....
whiteknight so when you go to update all PURCHASED items in an order to SHIPPED, you have to loop over all rows in the set looking for all of them that have the PURCHASED bit set but NOT the SHIPPED or RETURNED bits
benabik I guess that can be useful if you have some items skip some steps, but that sounds like it really wants another table so you can do SELECTs on it... 20:48
Bitfields don't play well with SELECT.
whiteknight so, in pure SQL mind you, he loops over all status bits looking for compatible ones, forms a bitmask from them, loops over rows with a cursor applying the bitmask. Then he deletes all the compatible rows, combines them together into a new insert with the new bitfield which is an OR of all individual bitfields 20:49
benabik ...
whiteknight srsly
tadzik eww
nine Well at least in PostgreSQL you should be able to simple use bitwise AND in your where and even to create an index on that. 20:50
benabik I mean, if your RDBMS supported bitwise operations in WHERE and UPDATE, it might not be so bad.
But, srsly?
whiteknight I complain about Parrot code sometimes, but I've never seen code-written-for-free that's as bad as some code I've seen that was written for pay 20:51
tadzik :) 20:52
benabik Speaking of bad parrot code: apparently ops2c doesn't know things like `case 'b'` or casting to unsigned char. (jnthn mentioned this on #perl6) 20:53
whiteknight I wouldn't call that bad code. ops2c features a parser that is known to only handle a subset of C
benabik wants ops2c to burn in a fire, but also doesn't want/have the time to create a replacement for it.
whiteknight ops2c was previously written in perl5
I seem to remember cotto complaining about the quality of the older version, but I don't know first hand 20:54
if anybody wants to put together a replacement, I would be +1 to that
benabik I think it's scheduled for replacement in mythical M0-land. :-/
whiteknight yeah, we'll work on that right after we're done feeding the unicorn, the griffin, and the sphynx 20:58
benabik :-D
cotto The code is better, but it's still no a compiler. 21:06
*not
NotFound_b dukeleto: ping 21:10
benabik dukeleto: re: parrot-libgit2 issue 8. Winxed's error is correct. Git2.Index doesn't have a ptr attribute. 21:16
whiteknight cotto: The problem is that we don't want to write a C compiler, yet somehow we're stuck writing so much code in a needs-to-be-parsed dialect of almost-C 21:21
21:21 ambs joined
whiteknight M0 is supposed to be a language that we can write in that has the same capabilities as C, but isn't C 21:22
also, anything that ops2c can't parse should probably be written in a separate function and called from the op instead of inlined into the op directly
let the compiler do the inlining, and spare ops2c the heartache
blah blah blah but GCC doesn't do inlining between compilation units blah blah blah 21:24
anyway, it's time for me to go. Later
dukeleto NotFound_b: pong 21:31
NotFound_b dukeleto: setup build does not build all files 21:32
dukeleto NotFound_b: what does it leave out?
NotFound_b Git2/Cache and Git2/RefCache 21:33
dukeleto NotFound_b: are you on the latest commit on master? 21:40
NotFound_b dukeleto: I've cloned just now
dukeleto NotFound_b: you are using setup.winxed or the Makefile ? 21:43
NotFound_b setup.winxed
dukeleto interesting video about IonMonkey: www.youtube.com/watch?v=dPlpjJikL-A 22:05
dalek p/bigint: bb5f116 | jnthn++ | src/ops/nqp_bigint.ops:
bigint variant of the nqp radix op.
22:09
bacek_at_work ~~ 22:37
Coke hio. 22:43
dalek rrot: 7f1fc69 | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
Accept single char in C<case> of C<switch> statement. Closes #196
22:52
cotto hi, bacek_at_work 23:01
bacek_at_work aloha, cotto
23:46 alin joined
dukeleto bacek_at_work: fancy seeing you here 23:48
23:55 whiteknight joined
dukeleto whiteknight: can you think of any easy way to parallelize the Rosella compile stage? 23:58
whiteknight dukeleto: Rosella uses distutils to build. Parallelize distutils, get paralellized Rosella build 23:59
of course, that's not "easy". Parrot doesn't have threads yet