Parrot 4.6.0 "Wild Parrots of Telegraph Hill" | parrot.org/ | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 19 August 2012.
00:04 kid51 joined
dalek sella/commandline_2: e5e7481 | Whiteknight++ | src/commandline/ (2 files):
[CommandLine] Rewrite Arguments to take arg defs in a better format, and to parse them in a more sane way.
00:53
sella/commandline_2: fe54f54 | Whiteknight++ | s (4 files):
[CommandLine] Factor out some of the argument definition processing logic to a separate class.
sella/commandline_2: c3c7fc2 | Whiteknight++ | src/commandline/ (3 files):
[CommandLine] move get_description logic from Arguments to ArgumentDef, with some refactoring.
sella/commandline_2: bf5bbe3 | Whiteknight++ | / (2 files):
[CommandLine] Rearrange functions in Arguments for cleanliness. Fixup Argument.t tests (mostly stubs) to account for the new architecture
sella/commandline_2: 4a9cdba | Whiteknight++ | / (2 files):
[CommandLine] Lots more tests for argument processing
00:59 MikeFair joined 01:00 woosley left
dalek sella/commandline_2: 868ea2a | Whiteknight++ | t/commandline/Arguments.t:
[CommandLine] Add a test for being able to parse flags/positionals in any relative order. This was a major shortcoming of the old implementation
01:02
01:05 lucian joined, MikeFair joined
dalek sella/commandline_2: e69e868 | Whiteknight++ | src/commandline/Program.winxed:
[CommandLine] Start rearranging Program logic
01:23
01:26 benabik joined
MikeFair Question: If I have this: www.jaedworks.com/hypercard/scripts...k-bnf.html 03:23
How difficult does it become to write this up as a language parrot can execute?
The Formal Syntax description is about 25% of the way down 03:24
sorear shouldn't be too hard to write that up as an NQP grammar 03:26
being ware of the differences between LALR(1) and LL(infinity) methodology 03:27
MikeFair ok, I can't recall, is there a simple description between those differences to be aware of? 03:30
MikeFair thought his compilers lessons might come back, but got nothing.
LL is left linear IIRC 03:32
?
has to do with backtracking to understand the meaning of the current token? 03:33
MikeFair sighs.
sorear try to design the simplest algorithm you can think of to parse a BNF grammar 03:35
what you get will be LL(0) 03:36
MikeFair It means that it can be read in straight and all information needed to parse/understand the current stuff has come before it right? 03:40
Is there a .deb repository for parrot? 03:54
My Kubuntu install has version 3.6
I suspect that since 4.7 is the latest release, I should probably update it
04:10 contingencyplan joined
sorear I don't _think_ so 04:17
06:04 fperrad joined
MikeFair sorear: Is there many differences between PAST and QAST? 07:02
sorear: Or is it that QAST is simply a more direct format for NQP to use 07:03
sorear: I mean are the classes all pretty much equivalent?
07:08 brrt joined
dalek kudo/uncool-iterable: a7630e5 | moritz++ | src/core/Exception.pm:
fix error message, diakopter++
07:30
07:44 woosley joined 07:45 rurban_mobile joined 07:57 schmoo joined
dalek kudo/uncool-iterable: f51260e | moritz++ | src/core/List.pm:
guard List.splice against out-of-range arguments
08:11
08:23 Psyche^ joined 08:29 walter joined
dalek p/toqast: 6f633c7 | jonathan++ | src/ (5 files):
Fix multi-method dispatch.
08:32
p/toqast: 0fa77cc | jonathan++ | t/nqp/45-smartmatch.t:
Foss some tests that haven't been run for a long time.
08:55
p/toqast: 1ec37cb | jonathan++ | src/NQPQ/Actions.pm:
Fix compilation of positional captures in regexes.
p/toqast: 567beb2 | jonathan++ | src/ (2 files):
Fix pointy and circumfix:<{ }> closure semantics.
p/toqast: b7111e8 | jonathan++ | src/NQPQ/Actions.pm:
First pass at updating multi-subs. They get the same code object and signature handling as multi-methods now. Passes the tests, though some known incompleteness.
09:17
p/toqast: b4e9e8a | jonathan++ | src/NQPQ/ (2 files):
Toss some now dead code.
kudo/nom: 7b6b230 | moritz++ | src/core/List.pm:
guard List.splice against out-of-range arguments
09:37
kudo/nom: 47e455e | moritz++ | src/ (4 files):
Iterable should not inherit from Cool

while that might be cool for core classes, it is not in the general case
kudo/nom: acc9484 | moritz++ | docs/ChangeLog:
update ChangeLog
kudo/nom: 0be5872 | moritz++ | src/core/Exception.pm:
fix error message, diakopter++
kudo/nom: 39cc71e | moritz++ | src/ (3 files):
type-check fail if a macro application does not return an AST
p/toqast: 51d8b87 | jonathan++ | src/ (5 files):
Fix attribute initialization for NQP on QAST. We no longer do viviself stuff on attribute lookups, meaning some extra initialization bits should be done.
09:53
10:47 JimmyZ joined
dalek p/toqast: 5398ace | jonathan++ | t/serialization/0 (3 files):
Correct a wrong signature in serialization tests.
11:33
p/toqast: 54db77d | jonathan++ | src/NQPQ/Actions.pm:
Cleanup fallback handling a bit.
p/toqast: 41133c0 | jonathan++ | src/NQPQ/Actions.pm:
Fix vivification when binding into a nested package.
p/toqast: 8d1afcf | jonathan++ | src/NQPQ/Actions.pm:
Contextual lookup falls back to looking in GLOBAL. With this, all of t/nqp passes again.
p/toqast: 1ec5f69 | jonathan++ | src/QAST/Operations.nqp:
Make next/last/redo in for loops. Means we pass t/qregex and t/p5regex again.
11:55
p/toqast: aa8b245 | jonathan++ | t/qast/qast.t:
Replace a pirop with an NQP op.
12:10 benabik joined, lucian joined
dalek kudo/nom: 4539e90 | moritz++ | src/Perl6/Actions.pm:
improved error message for macro application
12:11
p/toqast: 93072ff | jonathan++ | src/NQPQ/Actions.pm:
More closure fixups.
p/toqast: 53ee6a0 | jonathan++ | src/NQPQ/ (2 files):
Fix a couple of pir:: bits.
12:21
p/toqast: 29dd16d | jonathan++ | src/NQPQ/Actions.pm:
Update pir::const:: handling for QAST.
12:25
p/toqast: 783f35b | jonathan++ | src/ (9 files):
Fix a bunch of pir:: that miss signatures; also replace some pir:: with nqp::.
12:46
p/toqast: b7921a9 | jonathan++ | src/ (2 files):
Hopefully final round of pir:: fixes.
12:53
kudo/nom: 79e226c | moritz++ | tools/build/NQP_REVISION:
bump NQP revision to get nativecall fixes
13:02
p: 17118c5 | pmichaud++ | docs/nqp-overview.txt:
Add nqp-overview, a base file describing various
13:05
p/toqast: 0668780 | jonathan++ | src/NQPQ/Actions.pm:
Fix an issue that busted compilation of the meta-objects.
13:06
p/toqast: 8ad9ff8 | jonathan++ | src/ (2 files):
Fix compilation of .REPR.
p: 7962999 | pmichaud++ | docs/nqp-overview.txt:
Update nqp-overview a bit.
13:07
13:10 whiteknight joined
whiteknight good morning, #parrot 13:11
JimmyZ good morning, whiteknight 13:12
moderator Parrot 4.7.0 "Hispaniolan" | parrot.org | Log: irclog/perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC 13:12
whiteknight good morning JimmyZ 13:12
JimmyZ ;)
whiteknight I'm testing io_cleanup1 on windows now. If that passes and if rurban confirms my fixes from yesterday, I'm merging it 13:21
Then I can focus on threading for a while 13:22
brrt hi #whiteknight
whiteknight good morning brrt
brrt++ for passing GSOC with flying colors
brrt yay! tshirts all round 13:23
:-)
tadzik \\o/
brrt++ # congratulations!
brrt thanks
whiteknight We're one very very big step closer to mod_perl6 with his work 13:24
a good, maintainable, performant, extensible mod_perl6 13:25
moritz \\o/
brrt that ought to be doable
13:25 bluescreen joined
brrt especcialy if i get the magic sauce that binds perl6 to work 13:25
w/o a segfault
:-)
whiteknight segfaults are good for you. they build character
dalek p/toqast: d8ac7e5 | jonathan++ | src/QAST/Operations.nqp:
Add missing newtype/setwho nqp ops.
p/toqast: b98fe61 | jonathan++ | src/ (4 files):
A few more missing pir:: op sigs.
p/toqast: 4e91335 | jonathan++ | src/how/NQPClassHOW.pm:
Avoid a void.
brrt true, and they are debuggable by gdb
better than your average memory corruption issue
benabik Better than memory corruption.
whiteknight luckily, memory corruption happens rarely because our GC is pretty good about management stuff
brrt btw, do you know anything about the 'publishing a code sample' thing? 13:29
whiteknight i haven't heard anything. Checkout the google-melange site now to see if they have anything posted 13:37
I think I saw benabik mention that he posted a huge git diff or something
tadzik last year there was a git command you had to issue to get a log, then make it a .tar.gz and send them
brrt hmm
tadzik something along "git log -p but authored by me and during the coding period" 13:38
brrt git archive makes a zip
s/zip/tarball/
pmichaud exit 13:47
dalek p/toqast: 100439a | jonathan++ | src/how/NQP (6 files):
Fix up various bits of the NQP MOP that relied on Parrot Undef to break some circularities.
14:01
whiteknight You ever have one of those days where you could just PUNCH YOUR COMPUTER IN THE FACE because you're so angry at it? 14:40
brrt no, i have many times that i just want to fall asleep in front of one though 14:44
k
whiteknight whiteknight/io_cleanup1 passes all tests on win64 14:49
brrt yay!
why where you so angry then? 14:50
whiteknight++
whiteknight brrt: I've got a few acronyms that are conspiring against me: WCF, SOAP, XML, WSDL 14:52
these are things that are supposed to work, but nothing is working 14:53
And I think the clown at the other end of the pipe is using the wrong xml namespaces because it's a bad copy+paste job 14:54
14:54 contingencyplan joined 14:57 dmalcolm joined 15:03 benabik joined
dalek p/toqast: 3d5fdf6 | jonathan++ | src/QRegex/Cursor.nqp:
Avoid compilation error in QRegex when building it with NQP on QAST.
15:07
brrt oh, actual windows development 15:10
whiteknight brrt: yeah, dayjob is not the wonderland that opensource is 15:12
brrt hey folks.. i'm wondering about the following 15:36
suppose we are happy python programmers
and we call some perl(6) function / routine/ class /whatever
and we get a p6String back
and we evaluate this in boolean context
what will happen is
the evaluation will be wrong w/regards to python semantics 15:37
i.e.
happy perl programmer returns "0" and thinks this means false
happy python programmer will evaluate it and it will be false (PerlString -> get_bool returns false0 15:38
but python programmer will inspect the string
and it Should Not be false according to his idea of what false is
dalek p/toqast: bf8a3fc | jonathan++ | src/ops/nqp.ops:
Improved diagnostics.
15:39
p/toqast: ba8c901 | jonathan++ | src/NQPQ/ (2 files):
Some grammar compilation fixes.
p/toqast: 6b3ef4b | jonathan++ | src/HLL/Compiler.pm:
A few tweaks to get HLL::Compiler to compile.
brrt cue angry disgruntled python programmer
dalek p/toqast: 2763317 | jonathan++ | src/NQPQ/Actions.pm:
Fix nibbler assertion compilation.
brrt same in reverse
PerlJam brrt: Why would it not be false for the happy python programmer? 15:43
brrt: or do you mean that it would not be False (i.e. python's explicitly false value)?
brrt: oh ... I see. You mean the perl programmer returned a string literal "0" (I took that as meta for some reason) 15:45
brrt: I think that's a case for the documentation (and that the perl programmer was slightly confused about what he really wanted to return. No perl programmer worth his salt does C<return "0";> just to return a false value IMHO) 15:47
dalek p/toqast: 832dbf4 | jonathan++ | src/QAST/Operations.nqp:
Tweak to QAST to get it to not explode when loaded.
brrt PerlJam: well, true, but there are Many Confused programmers out there 15:48
moreover
there are many programmers who think a quick fun hack like that doesn't hurt anybody
brrt is one such programmer
15:49 alester joined
brrt until it does 15:49
whiteknight brrt: two options: First, the python people can build a wrapper around the perl6 module, or the python programmer can be aware of the underlying datatype and realize that Perl6Str != PythonString 15:51
you don't just start performing operations on a type until you know what the semantics of that type are
brrt thats uhm, anti-ducktyping
whiteknight If you have an object that is not a PythonString, you can't expect it to behave like a PythonString 15:52
PerlJam exactly
whiteknight Perl6 strings have their own, well-defined semantics
So you can use those semantics as-is, or wrap/translate the data
brrt right 15:53
i think using the one guys semantics in the other guys enviroment will be confiusing and annoying
whiteknight but in either case, it's not the job of the perl6 compiler devs to make sure the python people are happy, and vice-versa
brrt: At least parrot makes those annoyances possible, in theory
brrt :-)
that is true
how does the CLR solve this, by just having one type hierarchy? 15:54
whiteknight sort of, for C# and VB.NET they're basically the same exact semantics but with different syntax 15:55
with C# being the correct syntax, and VB.NET being the incorrect one :) 15:56
IronRuby and IronPython are always going to have to do some kind of a dance with operator overloads and subclasses and whatever
brrt yeah, i guess 15:57
the same thing with jruby
PerlJam brrt: msdn.microsoft.com/en-us/library/a2c7tshk.aspx 15:58
brrt is off for food 16:01
16:01 brrt left 16:09 alester joined 16:23 Khisanth joined 16:57 tuxit joined 17:33 rurban_mobile joined 17:34 schmoo joined 18:32 rurban_mobile joined
dalek p/toqast: b089723 | jonathan++ | src/NQPQ/Actions.pm:
Update a bunch of commented out code.
18:44
p/toqast: eff62f7 | jonathan++ | src/NQPQ/ (2 files):
Update initializations.
p/toqast: c3e4578 | jonathan++ | src/how/NQPClassHOW.pm:
Disable SC write barrier for updating mixin cache in NQP.
p/toqast: c9846f8 | jonathan++ | src/NQPQ/World.pm:
Fix syntax fail.
rurban_mobile smoking new io_cleanup1 19:08
19:08 sivoais joined 19:09 brrt joined, brrt left
whiteknight rurban++ 19:18
rurban_mobile whiteknight: all io_cleanup1 tests pass now on linux. should I test more platforms? I'm in norway 19:26
btw I tested with master merged into the branch. 19:29
whiteknight++ io_cleanup1 looks good to merge. all solaris tests pass also. I haven't tested win32. 19:35
solaris: smolder.parrot.org/app/projects/rep...ails/30804 19:36
whiteknight rurban_mobile: if everything looks good to you, I can merge tonight 19:37
rurban_mobile just testing windows now... 19:38
dalek p/toqast: beae563 | jonathan++ | src/ModuleLoader.pm:
Various module loader tweaks.
19:46
p/toqast: 108edef | jonathan++ | src/ModuleLoader.pm:
Fix thinko.
p/toqast: 0d79363 | jonathan++ | src/QRegex/NFA.nqp:
Simplify an our to a my.
rurban_mobile I am also benchmarking all pcc changes from the last years, since this was outlined as major performance bottleneck, and visual inspection of our calling convention confirms that this is a mess. Everything goes through the generic slow Parrot_ext_call??? All pmc methods? 19:55
dalek p: f53ead7 | (Elizabeth Mattijsen)++ | examples/json.nqp:
Recovered JSON example from bitrot
20:01
20:13 Apathy joined 20:17 smash joined
dalek p/toqast: e1d9225 | jonathan++ | / (4 files):
Split QAST nodes out from QAST compiler to resolve dependency issues.
20:23
whiteknight rurban: Either Parrot_ext_call or one of the Parrot_pcc_* varieties in src/call/pcc.c 20:28
rurban: but yes, that system is unified at a very deep level
I'm heading home now. io_cleanup1 merges tonight unless I hear differently between now and then 20:29
rurban_mobile win32 still smokes very slowly. no errors so far.
msg whiteknight cygwin passed all. io_cleanup1 ready to merge. 20:35
aloha OK. I'll deliver the message.
20:50 schmoo joined 21:02 dalek joined
dalek p: d895139 | (Elizabeth Mattijsen)++ | docs/serialization_format.markdown:
Fixed some spelling errors
21:09
p: 840d74f | (Elizabeth Mattijsen)++ | docs/serialization_format.markdown:
Some tiny clarifications
21:29
p/toqast: 6889a72 | jonathan++ | src/NQPQ/Actions.pm:
Fix attribute defaults.
21:44
p/toqast: 7375d16 | jonathan++ | src/HLL/CommandLine.pm:
Update HLL::CommandLine.BUILD to cope with post-vivibase world.
p/toqast: c138dfb | jonathan++ | src/NQPQ/Actions.pm:
Fix lookup of non-existent keys/indexes in hashes/arrays so it doesn't give back null.
p/toqast: 0001e13 | jonathan++ | src/ (3 files):
Few attribute fixes.
p/toqast: a6a15f4 | jonathan++ | src/NQPQ/Actions.pm:
Fix traits on protos.
p/toqast: 094eda3 | jonathan++ | src/HLL/World.pm:
Should not require a description in HLL::World's BUILD.
22:38
p/toqast: b23d950 | jonathan++ | src/ModuleLoader.pm:
Fix module loader.
p/toqast: 2e802b0 | jonathan++ | src/pmc/sixmodelobject.pmc:
Fail usefully in a bunch of places we could get a C-level stack overflow.
p/toqast: c4c84a3 | jonathan++ | src/QRegex/NFA.nqp:
A couple of NFA code tweaks.
p/toqast: ca01653 | jonathan++ | src/how/NQPClassHOW.pm:
Need to explicitly set defaults in the meta-objects, since we've eliminated use of Parrot Undef.
p/toqast: 16ccd1a | jonathan++ | src/QAST/Node.nqp:
Need to be explicit about lazy initialization of QAST::Node hash.
22:39 whiteknight joined
whiteknight good evening, #parrot 22:40
benabik o/ whiteknight
whiteknight hello benabik
wait for it... 22:42
WAIT FOR IT...
KEEP WAITING
22:42 rurban_mobile joined
benabik waits for it... 22:42
moritz holds his breath
dalek Heuristic branch merge: pushed 147 commits to parrot by Whiteknight
whiteknight yay!
moritz which one is that? io_cleanup1? 22:43
benabik Huzzah!
whiteknight io_cleanup1
moritz \\o/
whiteknight++
benabik whiteknight++
whiteknight now it's time to start on io_cleanup2
:)
moritz and I want socket.recv_bytes 22:44
and a ponie :-) 22:45
davidfetter how about a pynie? 22:48
whiteknight socket doesn't have a read_bytes method? 22:50
moritz whiteknight: there's a read_bytes method, but that's not the same 22:51
whiteknight why is it not the same?
moritz whiteknight: read_bytes takes a buffer length, and waits until that many bytes are available
whiteknight: recv does one read, and returns whatever it's there after that 22:52
whiteknight ah, I see. So you want a method that takes a buffer and fills in an arbitrary number of bytes as theyre available
moritz so it blocks less
whiteknight gotcha. I think I can set that up as .read_bytes() (with no param) instead of .read_bytes(x). good?
The logic for .read and .recv is the same all the way down, so this is a minor change 22:53
moritz yes, works for me
whiteknight ok, let me see what I can do 22:54
moritz (I generally don't care much how the stuff is spelled, since I use it through an indirection layer anyway)
whiteknight okay, I just want to make sure people understand that despite the different names the semantics are exactly the same 22:56
I don't want people to think they're getting something different
dalek p: 74c0172 | moritz++ | tools/build/PARROT_REVISION:
bump PARROT_REVISION to after the io_cleanup1 merge
23:01
sorear so you want to prevent users from doing "read at most N bytes"? 23:02
moritz that's not how I understood it 23:03
but I'm tired and can barely type 23:04
sorear whiteknight is talking about read_bytes not taking a parameter 23:05
so, the user can't tell it a maximum length
whiteknight I'm talking about it taking an optional parameter
where if you don't specify, it returns whatever
benabik But if you do give it N, does it wait to get N or does it get at most N immediately? 23:06
sorear ok. how would I ask for "at most 10 bytes, but if only 3 are available, that's fine too"?
whiteknight is that a common request? 23:07
sorear yes
whiteknight The current implementation, if you ask for X and X is relatively large, gives you everything from the buffer and performs exactly one read (or one recv) for the remainder
so .read_bytes(-1) or .read_bytes() with no parameter will probably do exactly that, with some generic chunk size filled in for the request 23:09
sorear: so is that what you want, or you want something even lazier?
moritz rakudo's socket layer simply has its own buffer
and keeps anything bigger than $max_wanted in that buffer 23:10
whiteknight like, whatever's in the buffer OR, if the buffer is empty, one recv with a generic chunk size
moritz that works fine for us
sorear whiteknight: I just resent environments that think they know better than me which combination of arguments to the low-level calls I'm likely to use 23:12
dalek kudo/nom: 71fc9c5 | moritz++ | / (3 files):
Adapt socket code to parrot's changes. Bump NQP_REVISION.
whiteknight sorear: right now we only have one combination of arguments. I'm trying to add more 23:15
sorear: so if you have a better suggestion, I'll implement whatever you need 23:16
my only goal is to make sure everything is exposed cleanly 23:17
right now my process is this: Moritz asks for something. I deliver. Repeat. I'm always happy to add more people to the loop 23:24