Parrot 4.4.0 "Banana Fanna Fo Ferret" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 15 May 2012.
dalek nxed: 3f6b2ef | NotFound++ | winxedst0.cpp:
drop const optimization of operators '<<' and '>>' from stage 0
00:10
nxed: ac56203 | NotFound++ | winxedst0.cpp:
clean up and delete some unuseful checks
00:31
00:42 eternaleye joined
whiteknight alvis++ 00:54
dalek nxed: 3ae7534 | NotFound++ | winxedst2.winxed:
improve constant optimization in array initializers
00:57
whiteknight reimplementing readline in a clean way is going to be a big hassle 00:59
allowing for arbitrary encodings and user-specified terminators, in a way that doesn't violate the encapsulation of the various sub-subsystems is a trick 01:04
dalek nxed: cc9d4ab | NotFound++ | winxedst1.winxed:
fix and improve command line in stage 1:

  - Output file name '-' means stdout
01:07
nxed: 4f1fbbb | NotFound++ | t/ (2 files):
clean and move to basic throw test
01:20
nxed: b6e861c | NotFound++ | t/advanced/02varcast.t:
more test of var cast builtin
01:32
rrot/whiteknight/io_cleanup1: ad30bec | Whiteknight++ | src/io/ (3 files):
Start refactoring readline logic. Sketch out the new algorithm, which is going to be more neatly broken down into encapsulation-preserving subroutines. Add a routine to add a new vtable to the list, for user-defined types. Several other cleanups, changes and refactors.
01:41
p/qbootstrap: 996ac93 | diakopter++ | src/QRegex/NFA.nqp:
trash my crappy quant NFA generator (lots of bad code); replace with one that works and handles % (and %%)
02:04
02:09 JimmyZ joined
dalek p/qbootstrap: d05da7c | diakopter++ | src/QRegex/NFA.nqp:
fix off-by-two error; JimmyZ_++ spotted it. This means %/%% are in fact not yet working. diakopter-- diakopter--
02:21
nxed: c742d2f | NotFound++ | winxedst (2 files):
simplify a bit the getnumber routine
03:19
nxed: cfefcab | NotFound++ | winxedst (2 files):
stop storing the comment's text, we are not going to use it for anything
04:00 perlite joined 06:42 zby_home joined 07:30 JimmyZ joined 08:00 isBEKaml joined
isBEKaml ~.~, #parrot! 08:01
moritz ~o~ isBEKaml 08:03
dalek kudo/nom: 47f26e7 | moritz++ | src/core/ (2 files):
typed exception from failed .+ dispatch

also prepare exception for returning form exhausted routine
isBEKaml moritz++ #active multitasking
moritz I'm annoyed that I'm still not done with my excpetions grant 08:05
isBEKaml I can't say for anyone here, I'm here way out of my depth. :| been trying to tackle #276, on and off as time permits me. 08:06
I'm surprised windows uses prefixed type information variables. Eg., a processor type that's a DWORD is prefixed with 'dw', as in 'dwProcessorType' and 'lpMinimumApplicationAddress' for a long pointer. :) 08:15
s/variables/field names/
All in SYSTEM_INFO 08:16
08:23 benabik left, benabik joined
dalek kudo/nom: decb0a5 | moritz++ | src/core/ (2 files):
typed exception for private method not found
08:24
sorear They call them DWORDs but these days they're actually half-words
isBEKaml hmm, I don't know for sure since I don't program in Windows. I got this info from msdn. :) 08:27
08:27 benabik left 08:28 benabik joined
benabik MS totally missed the point of Hungarian notation. 08:28
isBEKaml benabik: o/ 08:29
benabik www.joelonsoftware.com/articles/Wrong.html
It's early enough here that I'm just commenting on random things. I should go to bed. 08:30
isBEKaml benabik: well, good night from a lazing-in-the-afternoon guy. :) 08:31
From what joel says (I know he tends to exaggerate), did Hungarian notation really spread like XML did? 08:40
benabik It's extremely common in MSland 08:41
isBEKaml that's what I keep seeing everywhere I look in MSDN. I was asking more about other companies following suit. XML was bandied about as a solution to all data problems until everyone regretted. 08:43
benabik I haven't seen it outside of Windows APIs. From what I've heard, it's also common in companies that mostly write Windows code. When it's baked into the API, it becomes contagous. 08:45
isBEKaml Yeah, I wanted to include a bit of information for cpu info and looking at it, I'm not even sure I want to keep that part of mainland code. I'm now considering about hiding that code behind some function following parrot's naming conventions. 08:47
benabik We do generally try to abstract away platforms.
isBEKaml this windows code sticks out like a sore thumb.
Okay - here's the plan of action: 1. Move all of uname lookups to platform/generic/misc.c from interp/api.c 2. for windows (esp under MSVS compilers), special case code to handle all that uname lookup does. 3. define interface in platform_interface.h. Do anybody see anything off here? 09:27
For 2. that would be in platform/win32/misc.c. I just found that uname lookups work under cygwin/gcc or mingw32 compilers 09:28
dalek kudo/nom: 5f81da3 | moritz++ | src/ (3 files):
refactor binding exceptions
09:35
kudo/nom: 3003279 | moritz++ | src/core/IO.pm:
more consistent exception for IO.copy

also remove unnecessary special case that could lead to race conditions
09:39
p/qbootstrap: acdaae4 | jnthn++ | src/QRegex/NFA.nqp:
Revert diakopter++'s NFA changes.

Unfortunately, they break various NQP tests and the Rakudo build.
10:14
p/qbootstrap: 689b820 | jnthn++ | src/QRegex/P6Regex/Grammar.nqp:
Workaround separator/NFA bug for now; gets us able to parse \\x[...] and \\o[...] in regexes again.
10:18 crab2313 joined
dalek kudo/nom: a4c09d1 | moritz++ | src/core/ (3 files):
stylistic exception updates

no functional changes
10:20
kudo/nom: 493adbf | moritz++ | src/core/ (2 files):
typed exceptions for temp and let on non-containers
10:51 PacoAir joined 10:55 whiteknight joined
dalek p/qbootstrap: 16654ba | jnthn++ | src/HLL/Actions.pm:
Complete guess-fix for the \\c[...] issue.
10:58
whiteknight good morning, #parrot 11:16
moritz good am, whiteknight
isBEKaml hello, whiteknight 11:18
whiteknight good morning moritz, isBEKaml. How are you two doing this morning? 11:19
moritz not bad, hacking a bit 11:20
will soon prepare asparagus for lunch :-)
isBEKaml whiteknight: just added a bit of CPU info to be made available from win32 systems, from cotto++'s comment.
whiteknight isBEKaml: nice!
moritz (we live in an area where that stuff grows, and we like it :-)
isBEKaml moritz: I always thought asparagus was inedible grass. :/
whiteknight moritz: We bought asperagus last weekend for the grill, but it's been raining every day and we haven't had a chance to use it 11:21
moritz isBEKaml: well, if you take the white asparagus and don't know that you have to peel it (happened to a Chinese friend of mine :-), then you'd get that impression :-)
isBEKaml whiteknight: still some way to go, I'm thinking of moving all uname lookups to platform/generic. Will wait until I hear back after my last push to #280. 11:23
moritz: :-) Reminds me of a time when I chewed on raw bittergourd. (it was so chewy.. ) :P
11:26 brrt joined
whiteknight moritz: I've actually never eaten white asperagus. I would like to some day but it doesn't grow here and the market doesn't always have great selection of those kinds of things 11:34
Maybe next year I'll plant some in my garden and see what happens
11:35 kjs joined
moritz whiteknight: or just visit me next spring :-) 11:37
whiteknight moritz: Extremely tempting offer :)
dalek p/qbootstrap: cf4bf1f | jnthn++ | src/QRegex/NFA.nqp:
Make <alpha> LTM-declarative.
11:39
kudo/qbootstrap: c297695 | jnthn++ | src/Perl6/Grammar.pm:
Don't capture comments.
kudo/qbootstrap: 9653a4d | jnthn++ | src/Perl6/Grammar.pm:
Fix a case of variable interpolation. Resolves S05-interpolation/regex-in-variable.t failures and probably S05-modifier/ignorecase.t too.
whiteknight blah, this readline logic is a rats nest 11:41
though, the nest is not unnecessary. The requirement to read complete codepoints into a string makes a lot of the logic much more complicated 11:55
The best I may be able to do is make it a little bit more transparent and readable
12:18 lucian joined
dalek p/qbootstrap: 5db4340 | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
Don't disregard backtrack modifiers directly placed on atoms. This was why assertions.t failed in Rakudo.
12:24
: 31b7907 | (kj, kjs)++ | m1 (11 files):
various cleanups and refactoring. still chasing a bug
12:37
12:40 kid51 joined 12:51 brrt joined
dalek kudo/qbootstrap: 2ad64fa | jnthn++ | src/Perl6/Grammar.pm:
Fix parse-o spotted by tadzik++. (Really want to figure out how STD avoids needing this, though.)
13:01
: 084d442 | (kj, kjs)++ | m1_ (2 files):
fix bug. note to self: when checking a union member, first check for union's selector to check for right field.
13:03
nxed: e39b70b | NotFound++ | winxedst (2 files):
fix several wrong Expr ownership transmision
13:05
13:07 Psyche^ joined
dalek d_parrot: 496333a | (Bart Wiegmans)++ | / (6 files):
Added some cgi variables to the arguments
13:26
brrt pindg whiteknight 13:28
13:37 brrt joined 13:38 crab2313 joined
dalek nxed: 39bdcb0 | NotFound++ | winxedst (2 files):
rename parameter start in Literal constructors, no functional changes
13:40
nxed: 00bf675 | NotFound++ | winxedst (2 files):
fix and improve IntegerLiteral:

rename 'numval' to 'intval' fix some foreign access to internals ensure type conversions in initialization and getters
: ece9ef0 | (kj, kjs)++ | m1 (5 files):
fix another bug. might want to refactor constant and symbol handling. fix up if statement
13:41
: dd8b3bd | (kj, kjs)++ | if.m1:
first proper test file for if, printing ok..1 etc
: 61085f0 | (kj, kjs)++ | m1_gencode.c:
fix if statement; if no else block still need to generate a goto endlabel isntr
13:45
: 642470f | (kj, kjs)++ | m1_gencode.c:
slightly more efficient code for small integer number loading
13:53
: 12a18a8 | (kj, kjs)++ | while.m1:
print stuff in while loop test
13:56
: dc46939 | (kj, kjs)++ | dowhile.m1:
print stuff in dowhile test
13:57
kjs thinks he knows how to implement vtables 13:59
isBEKaml kjs: m1 seems interesting - it's a drop in replacement for PIR now ? 14:01
kjs isBEKaml: no not at all
well i dont think so
M1 aims to provide an easy , C-like interface to the M0 interpreter. M0 being the virtual machien that runs Parrot's Next Generation implementation. 14:02
if things go to plan. they might not :-)
isBEKaml kjs: wait, what? M1 will be tougher to integrate when things go to plan? :) 14:03
kjs I believe "rewrite" is the magic word 14:04
moritz we rakudo folks work furiously on reducing our PIR footprint (among other things)
isBEKaml kjs: the way I see it from the README I just looked up - it's a code generator, you don't have to change m0 to get there. 14:05
moritz and we'll be happy when we have a nice API to generate bytecode directly :-)
kjs a code generator for what?
moritz of the two big remaining subsystems that are still written in PIR, one is being replaced this very hour (the regex engine) 14:06
isBEKaml kjs: well, we spit out m1, pass it down to github/m1, which spits out m0. Am I right? (My wording might be a bit confusing)
moritz: that's QAST?
moritz isBEKaml: that's the second replacement (for PAST, which is written in pir) 14:07
kjs isBEKaml: the way I see it, is that we get rid of C code in Parrot, except for some components that don't have control or data interaction with parrot languages
but perhaps I misunderstood
isBEKaml kjs: :O - that's... huge.
kjs well maybe i misunderstood, but that's how i understood it from reading the docs and blog posts on M0
and yes that is not trivial 14:08
moritz kjs: I don't think you misunderstood
kjs the problem is the interaction between C code and parrot byte code, as far as control and data
moritz the key is that you can only do a good JIT compiler if you don't constantly hop between high-level code and custom C code
kjs control = function calls from PIR-> C and vice versa
so, there's an M0 virtual machine 14:09
and M1 is the language that spits out M0
isBEKaml kjs: that's what I thought at first - I'm surprised we hadn't done that yet.
kjs done what? 14:10
isBEKaml kjs: PIR->C interaction kept down or none at all.
kjs the issue is that some built-in PMCs are written in C
and extending etc such classes therefore has that crossing of the c-pir boundary
isBEKaml I see - if we can produce a better layer for rakudo to consumer, it wfm. :) 14:11
s/consumer/consume/ 14:12
kjs it might take quite a while before we're at that stage :-) 14:13
M1 is coming along nicely though :-)
isBEKaml great, you have a roadmap doc somewhere? 14:14
kjs uh
i have a todo list :-)
come to think of it, ther'e's a few items i can cross out now i think :-) 14:15
isBEKaml \\o/ :) 14:16
dalek : 6ac2bc6 | (kj, kjs)++ | TODO.txt:
2 things fixed. needs testing, hence the ?
14:17
whiteknight brrt: pong 14:20
dalek Heuristic branch merge: pushed 112 commits to nqp by moritz 14:33
Heuristic branch merge: pushed 26 commits to rakudo/nom by moritz 14:34
kudo/nom: 5cff505 | moritz++ | docs/ChangeLog:
note some qbootstrap changes in ChangeLog
14:38
kudo/nom: cceca68 | jnthn++ | docs/ROADMAP:
Remove two completed ROADMAP items.
14:39
whiteknight I *think* if I setup the buffer so that it never attempts to return a partial codepoint for a STRING read, and instead normalize and refill the buffer in a loop, most of this logic can go away 14:40
14:43 brrt joined
dalek : a55f121 | (kj, kjs)++ | m1_gencode.c:
implement var initialization
14:43
whiteknight brrt: ping 14:46
brrt whiteknight: pong
whiteknight brrt: you pinged? 14:47
brrt yes
then i lost internet connection, and now i'm back :-)
just hard to recall what my question was
oh, yes
whiteknight talk fast, a thunder storm just started and I may lose my connection soon too :)
brrt i need to get a HLLCompiler in winxed by langauge
language 14:48
much like Parrot_api_get_compiler
but in winxed
whiteknight the compreg function
moritz there's a 'compreg' opcode
whiteknight var compiler = compreg("Compiler Name")
brrt oh, that will do
whiteknight brrt: you may also need to use the load_language opcode, to make sure the libraries are loaded
brrt there was a syntax for pir statements in winxed 14:49
whiteknight github.com/Whiteknight/Rosella/blo...winxed#L13
That function loads the winxed compiler in, with the load_language op and the compreg op
you should be able to copy most of that logic if you want, avoiding the hard-coded winxed name
brrt ... yes, thats very much what i was looking for :-)
oh, there was another thing 14:50
whats stdin called in winxed?
whiteknight I actually stole most of that code from the winxed program itself. It looks for a winxed library that contains the compiler
getstdin()
and there's also getstdout(), getstderr()
brrt you are a huge help :-) 14:51
whiteknight or, if you want to play with things at the interp level, there's getinterp().stdin_handle(), which takes an optional parameter to override it
14:51 particle joined
brrt hmm, that is really not so bad an option 14:51
considering how i'm still planning to write a custom apache io handle 14:52
oh, and another thing 14:55
i was thinking, it might be possible to test mod_parrot via mod_perl
via Test::Apache modules and the like
which can mock request_req structures
might simplify testing
what do you think? and, do we want to bring such a tight binding to the apache api to parrot as the mod_perl guys did? 14:56
also, so much to do :-) 14:57
14:57 schmooster joined
whiteknight brrt: if you thnk you can get that working, power to you 15:00
take a couple hours to play with it. if it looks good, use it. If it's going to break your schedule, don't
brrt will do 15:01
but i think my schedule is not looking so bad right now : -) 15:04
dalek : 05119a4 | (kj, kjs)++ | m1_gencode.c:
for loop implementation. need testing
15:12
brrt still here? I have one more question, about Parrot_api_string_import_binary 15:38
what does the encoding parameter signify?
whiteknight let me look 15:39
dalek rrot/whiteknight/io_cleanup1: 294f056 | Whiteknight++ | / (7 files):
Finally get the read-STRING logic under control.

Add some buffer-related helpers to read characters out of the buffer, and refuse to return incomplete codepoints. This simplifies read logic at the higher levels substantially. Use these and some other new features to (re-)implement Parrot_io_read_s and Parrot_io_readline_s. As always, a few other miscellaneous cleanups peppered throughout
brrt nm, have the function at hand
whiteknight STRING* in parrot always have an encoding. The binary encoding just says "don't treat this STRING like normal text data"
so that function turns an arbitrary buffer of data into a STRING header with the given encoding (specified by name) 15:41
moritz it's a bit like p5's Encode::decode() function 15:44
brrt i see, i needed binary :-) 15:45
15:46 mtk joined
whiteknight Parrot supports "ascii", "fixed8", "utf8", "utf16", "latin1", "ucs2" and "ucs4" encodings 15:50
and "binary"
well, it supports all those things if you have ICU installed. Otherwise, far fewer 15:51
dalek kudo/nom: 305e5ae | moritz++ | src/core/Str.pm:
change some pir:: to nqp:: opcodes
15:59
kudo/nom: 6555ab1 | moritz++ | src/core/ (2 files):
typed exception when trying to mix in non-composable types
kudo/nom: 5c9c02d | moritz++ | src/core/ (3 files):
stylistic changes to throwing exceptions

no functional changes
16:09
d_parrot: bd9ed31 | (Bart Wiegmans)++ | / (6 files):
Read post data (doesn't work)
16:11
brrt leaves 16:12
16:12 brrt left
dalek nxed: 325be16 | NotFound++ | winxedst (2 files):
improve switch body parsing:

cleaner implementation
16:15
kid51 whiteknight: Here's something to sink your teeth into: github.com/parrot/parrot/issues/776 16:41
afk 16:42
whiteknight thanks, I'll look at it 16:43
aloha (parrot/parrot) Issues opened : 776 (t/compilers/imcc/syn/clash.t: FAILs under 'make testr' on some machines but not others) by jkeenan : github.com/parrot/parrot/issues/776 16:44
dalek nxed: 9c72602 | NotFound++ | winxedst (2 files):
simplify parsing of maybe empty lists
17:02
17:07 contingencyplan joined
dalek kudo/nom: 9452bf6 | moritz++ | src/core/Exception.pm:
typed exceptions for several uncaught control exceptions
17:16
nxed: 4fab288 | NotFound++ | winxedst1.winxed:
drop support for multi from stage 1
17:19
nxed: 9a03c56 | NotFound++ | winxedst1.winxed:
drop support for extern function from stage 1
17:32
kjs cotto: ping 17:44
cotto kjs, pong 17:54
(taking off real soon though) 17:55
kjs hi cotto.
ok
I'll be breif
i'm looking into function calls. the /calling/ part is easy :-)
the returning is complex, and I don't quite understand it.
it would be very helpful if there's a simple example of a call/return in M0, simpler than the poke example. 17:56
cotto The trouble is that the poke caller example is fairly minimal, as hairy as it is. I'll try paring it down to the bare minimum though.
kjs yes well I'm not sure what happens where, and also why 17:57
cotto do the comments not help much?
kjs eh. they do help but theyre not all very clear 17:58
it's more the what, but i'm interested also in the why
i'll probably translate it into M1, manually, and see what it does
cotto alright. I'll work on describing the motivation later today.
I'm out now, but if you mention my name I'll see it when I backscroll. 17:59
kjs ok, thanks.
18:08 crab2313 joined
benabik whiteknight++ # bloggin 18:41
19:27 brrt joined
dalek d_parrot: 3cd7371 | (Bart Wiegmans)++ | mod_parrot (2 files):
Fix POST data reading
19:35
19:35 brrt left 19:47 PacoAir joined
dalek kudo/nom: 50d40a6 | moritz++ | src/core/ (2 files):
throw a typed exception for non-conformant qualified method calls
20:08
nxed: 41662de | NotFound++ | / (2 files):
build the non installed driver with stage 1 instead of 0
20:17
nxed: 577cdc4 | NotFound++ | winxedst0.cpp:
drop support for operators '<<' and '>>' from stage 0
nxed: 77eebb7 | NotFound++ | / (3 files):
drop support for new string-literal from stage 0
nxed: e355959 | NotFound++ | / (4 files):
simplify support for new in stage 1:

No new with variables or string const No functions called new
kudo/nom: e7d4e87 | moritz++ | src/core/ (2 files):
typed exceptions from pack and unpack
20:31
whiteknight I love seeing brrt++'s commits showing up here 20:34
it's good to see that GSOC has started 20:35
moritz anyone with a github repo can set up notifications for #parrot 20:36
it's no magic :-)
whiteknight yes, but I specifically like seeing GSOC-related commits 20:44
That and some fresh melon is what summer is all about :)
moritz don't forget the sun :-) 20:45
21:13 kjs joined 21:28 kurahaupo joined
dalek : fc4ec68 | (kj, kjs)++ | m1. (2 files):
add M0 instructions
21:37
: dfcebc6 | (kj, kjs)++ | m1_ (4 files):
various
: c250618 | (kj, kjs)++ | m1 (3 files):
enable array constructor in array declaration
21:52
: 69d26de | (kj, kjs)++ | / (3 files):
various
22:02
p: 32a0cf1 | jnthn++ | src/QRegex/Cursor.nqp:
A bit of scope-flattening optimization, as suggested by pmichaud++.
22:17
nxed: d173aa7 | NotFound++ | winxedst (2 files):
cosmetic fixes and changes
22:18
22:32 brambles joined
dalek : 02db8a6 | (kj, kjs)++ | m1_gencode.c:
fix || and && operators; these are implemented using short-cuts of evaluation
22:34
: a2d1866 | (kj, kjs)++ | / (2 files):
not, || and && operators fixed
22:45
: 1cdaa09 | (kj, kjs)++ | TODO.txt:
update todo list with status and some ideas
22:56
23:08 particle1 joined 23:14 kid51 joined 23:15 kid51 joined
dalek rrot: 3c44a3e | jkeenan++ | config/gen/makefiles/root.in:
Fix for github issue #776.

  *.pbc files created by the test suite in t/compilers/imcc/syn/*.t had not been
added to 'test-clean' target. Consequently, older files not removed during a customary 'make realclean' were affecting test results, specifically, test #11 in t/compilers/imcc/syn/clash.t under make testr.
23:38
aloha (parrot/parrot) Issues closed : 776 (t/compilers/imcc/syn/clash.t: FAILs under 'make testr' on some machines but not others) by jkeenan : github.com/parrot/parrot/issues/776 23:43