Camelia, the Perl 6 bug

IRC log for #parrot, 2012-08-26

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:44 MikeFair joined #parrot
02:00 whiteknight moritz: did you run an entire Rakudo spectest on that branch?
02:00 benabik ~~
02:00 whiteknight I haven't had a chance to do it yet
02:00 whiteknight hello benabik
02:01 benabik Note for GSoC students: You can now submit code samples on melange.  Go to your project, hit update, and it'll accept a file at the end.  I just submitted a big .diff from git.
02:14 * MikeFair waves.
02:34 * sorear waves to MikeFair
02:35 * MikeFair finishes reading up on M0.
02:35 sorear (you were asking about niecza the other day.  hi.)
02:35 MikeFair sorear: Yes I was, indirectly though, but I was just really encouraged by the thought of having Perl6 on top of Java and .Net
02:36 MikeFair sorear: Niecza might also be just the project I need to help me with another project I was building up to but might be able to get started earlier on
02:38 MikeFair sorear: Would Niecza make exposing all the other .Net assemblies on the machine a realtively easy thing?
02:38 MikeFair Like could they automatically casted as modules and referenced?
02:39 benabik IIRC, there have been people referencing Gnome assemblies in Niecza.
02:40 MikeFair Perhaps something like:  use .Net/System;
02:40 * MikeFair shrugs.
02:41 MikeFair I guess it would be: use DotNet::System;
02:42 benabik MikeFair: https://github.com/sorear/niecza/​blob/master/examples/gtk-clock.pl
02:42 MikeFair ok then, yeah that looks like it would work...
02:45 MikeFair But it looks like we have to look up the gac details first
02:46 MikeFair I was hoping for something a bit more transparent, but I'm sure something could be written if it was worth it.
02:46 MikeFair sorear: What's your relationship to niecza
02:47 MikeFair benabik: thanks for the pointer...
02:48 MikeFair The project I'm looking to building up to is to creating a HyperCard/SuperCard clone
02:49 MikeFair Currently a company "Revolution" www.runrev.com has been evolving their platform for years and done some really amazing stuff
02:49 MikeFair The use a scripting language they call LiveCode
02:50 MikeFair But I think there are some features in Parrot that could make that even better
02:51 MikeFair Well the Parrot Compiler ToolChain
02:57 sorear MikeFair: I started niecza and wrote 95% of the code in it
02:57 * MikeFair bows to sorear.
02:58 sorear it's also by far the largest/oldest thing I've ever done
02:58 sorear (not couting large things that I've submitted the occasional patch to)
02:59 * MikeFair nods.
03:00 sorear I would love more transparent access to clr libs
03:01 sorear but there are a lot of places where judgement calls have to be made
03:03 MikeFair I bet
03:04 MikeFair It seems that it might be possible to carve out the 'CLR' module as a special name
03:04 MikeFair like if I tried to load "CLR::System" it could do something different than the ordinary perl modul search
03:06 MikeFair Why the name niecza
03:12 MikeFair sorear: The whole concept is quite impressive, I had wondered if Perl could be done on top of the CLR but didn't go hunting for it
03:12 sorear It already does that
03:12 sorear the 'CLR' module is auto-loaded, and you can run statements like CLR::System::Environment.OSVersion.Platform.Str without any imports
03:12 sorear ...but it only works for types in corlib
03:13 sorear accessing types in other assemblies, like gtk-sharp, is where it gets significantly fiddlier
03:13 MikeFair sorear: That's still pretty cool I think ... I'm sure you'll get there
03:14 MikeFair sorear: Well they say use gacutil -l to find the info
03:14 sorear as for the name, I couldn't think of one, so I asked Carl Mäsak for help
03:14 MikeFair in the comment I read
03:15 MikeFair The using Reflection you might be able to auto-build?
03:15 sorear we exchanged a bit and came up with this
03:16 sorear "The using Reflection you might be able to auto-build?" what file is that in?
03:16 MikeFair Doesn't gacutil -l give you the file name?
03:16 sorear another part of the fiddliness is that Perl 6 is a fairly dynamic language but the CLR loves static binding
03:16 sorear isn't gacutil Mono-only?
03:17 MikeFair nope
03:17 MikeFair At least I've used it on my Windows boxes when trying to troubleshoot why I couldn't reference one of my assemblies
03:18 MikeFair The GAC as I understand it is a CLR thing
03:18 MikeFair Global Assembly Cache IIRC
03:19 MikeFair I just understand it as "The repository for installed .Net modules"
03:19 MikeFair Well I guess CLR modules would be a more accurate statement
03:20 MikeFair Each version has its own GAC
03:21 MikeFair As for binding, I would expect that if I used a CLR module my Perl would end up being very picky because I had to conform to the CLR rules
03:22 MikeFair That's the price I'd expect to pay for laziness, if I don't want that, then I need to use some non-CLR based module
03:23 MikeFair I would likely end up with a lot of runtime errors if I tried to do something the CLR didn't like
03:23 MikeFair even if it would be valid Perl
03:24 MikeFair Something like Accessing an Array as a Scalar to get the count for instance
03:24 MikeFair (though in that case I suppose something could be done)
03:25 sorear hold on, I'm having some crazy ideas on how to redo niecza's name binding mechanism so 'use gtk:from<clr gtk-sharp>' Just Works
03:25 * MikeFair grins broadly.
03:26 sorear generally speaking in Perl 6 contexts are just methods.  also, there is no "use as a scalar"
03:26 * MikeFair nods.
03:26 sorear when you say '0 + @arrray' the + operator notices that @array is an object of type Array, which does not do the Numeric role, so it calls @array.Numeric()
03:27 sorear by convention coercion methods are named the same as the to-type
03:27 sorear the Array class has a .Numeric() method which behaves the same as .elems()
03:27 MikeFair Or .Count on the CLR side
03:27 sorear yes.
03:28 sorear there is currently as fairly small set of methods that are treated specially by Niecza's interop layer
03:28 sorear for instance .Str() is mapped to .ToString() so that stringification Just Works
03:29 * MikeFair nods.
03:29 sorear no reason we couldn't add a Numeric->get_Count mapping for IList
03:30 MikeFair exactly, I've noticed that CLR does an amazing job of reusing just handful of its basic interface types to make everything work
03:30 sorear seeing as how this conversation is relevant to perl 6 but irrelevant to parrot, I wonder if we should move it to irc.freenode.net #perl6, I'm there too
03:30 * MikeFair nods.
03:30 MikeFair I'm also there
04:26 moritz msg whiteknight I did a complete spectest of rakudo + smoke run of modules on top of the io_cleanup branch. No regressions.
04:26 aloha OK. I'll deliver the message.
05:58 fperrad joined #parrot
08:18 Psyche^ joined #parrot
09:19 nine msg rurban I'll be offline till 2012-09-09. Merge threads at will.
09:19 aloha OK. I'll deliver the message.
09:19 nine msg whiteknight I'll be offline till 2012-09-09. Merge threads at will.
09:19 aloha OK. I'll deliver the message.
09:37 perlite joined #parrot
09:39 simcop2387 joined #parrot
09:40 mj41 joined #parrot
09:50 JimmyZ joined #parrot
09:52 ttbot joined #parrot
09:55 dalek rakudo/nom: d21d35d | masak++ | t/spectest.data:
09:55 dalek rakudo/nom: [spectest.data] added macros-d2.t
09:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d21d35d04d
09:56 he joined #parrot
10:21 cosimo joined #parrot
11:02 cosimo joined #parrot
11:40 whiteknight joined #parrot
11:59 whiteknight good morning, #parrot
12:02 dalek rakudo/nom: f7ec305 | masak++ | t/spectest.data:
12:02 dalek rakudo/nom: [spectest.data] chased macro test files rename
12:02 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f7ec305a7b
12:05 lucian joined #parrot
12:07 whiteknight moritz++
15:35 whiteknight weird, I'm getting an ICU segfault
16:22 rurban_mobile joined #parrot
16:23 rurban_mobile So it looks like we should merge io_cleanup1 and threads soon. I think we'd need a test on Win32 before.
16:38 rurban_mobile whiteknight: io_cleanup1 fails now on linux like this: http://smolder.parrot.org/app/​projects/report_details/30789 t/pm/filehandle.t 30 and t/pmc/io.t 34
16:40 rurban_mobile threads do look better: http://smolder.parrot.org/app/​projects/report_details/30790 All PASS
16:41 rurban_mobile dukeleto: around?
16:51 contingencyplan joined #parrot
17:16 benabik joined #parrot
17:27 benabik !!
17:44 tadzik \o/
17:47 benabik tadzik: ?
17:47 tadzik threads PASS and stuff ;)
17:47 benabik If threads and io_cleanup both merge this week, that would be awesome.
18:10 dalek rakudo/nom: bd23ad4 | moritz++ | src/core/ (2 files):
18:10 dalek rakudo/nom: rename an exception class
18:10 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bd23ad4609
19:23 contingencyplan joined #parrot
19:35 dalek rakudo/uncool-iterable: c7e1713 | moritz++ | src/ (3 files):
19:35 dalek rakudo/uncool-iterable: Iterable should not inherit from Cool
19:35 dalek rakudo/uncool-iterable:
19:35 dalek rakudo/uncool-iterable: while that might be cool for core classes, it is not in the general case
19:35 dalek rakudo/uncool-iterable: review: https://github.com/rakudo/rakudo/commit/c7e1713eb1
19:35 dalek rakudo/uncool-iterable: c6fac5b | moritz++ | src/core/Nil.pm:
19:35 dalek rakudo/uncool-iterable: Nil is Cool
19:35 dalek rakudo/uncool-iterable: review: https://github.com/rakudo/rakudo/commit/c6fac5b63f
19:50 whiteknight Nil is also "rad" and "awesome"
19:50 rurban_mobile joined #parrot
19:51 dalek nqp: a886a77 | (Arne Skjærholt)++ | src/ops/nqp_dyncall.ops:
19:51 dalek nqp: Properly handle non-Sixmodel objects in dyncall ops.
19:51 dalek nqp:
19:51 dalek nqp: Two issues:
19:51 dalek nqp: - decontainerize in nqp_dyncall.ops was out of sync with decontainerize in
19:51 dalek nqp:   sixmodelobject.c (didn't consider possibility of non-SMO arguments)
19:51 dalek nqp: - unmarshalling code (to int/float types) need to dispatch to VTABLE_get_* in
19:51 dalek nqp:   case of non-SMO arguments.
19:51 dalek nqp:
19:51 dalek nqp: FROGGS++ for uncovering the problem.
19:51 dalek nqp: review: https://github.com/perl6/nqp/commit/a886a77147
20:09 lucian joined #parrot
20:24 perlite joined #parrot
20:27 dalek Heuristic branch merge: pushed 30 commits to nqp/toqast by jnthn
21:44 dalek nqp/toqast: 9b48c83 | jonathan++ | src/QAST/Operations.nqp:
21:44 dalek nqp/toqast: Don't re-use the result register of the protected region in handle op for being the overall result.
21:44 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/9b48c831ed
21:44 dalek nqp/toqast: 442c735 | jonathan++ | src/NQPQ/ (2 files):
21:44 dalek nqp/toqast: Update try, CATCH and CONTROL for QAST.
21:44 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/442c73573f
21:44 dalek nqp/toqast: c2b37e4 | jonathan++ | t/nqp/44-try-catch.t:
21:44 dalek nqp/toqast: Eliminate a bogus test, plus some other updating to the exception tests.
21:44 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/c2b37e456e
21:44 dalek nqp/toqast: 62dddd0 | jonathan++ | src/QAST/ (2 files):
21:44 dalek nqp/toqast: Fix register allocation bug involving handlers and resumable exceptions.
21:44 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/62dddd09fa
22:00 rurban_mobile joined #parrot
22:17 dalek nqp/toqast: 8d4da1b | jonathan++ | src/NQPQ/Actions.pm:
22:17 dalek nqp/toqast: Fix closure interpolation.
22:18 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/8d4da1ba6a
22:45 whiteknight ah, I think I've got this issue figured out, the one rurban++ pointed out
22:47 whiteknight and I'll say this again: readline+encodings is a huge pain in the backside
22:49 whiteknight as far as readline is concerned, the buffer is effectively empty if (1) it contains 0 bytes, (2) it contains fewer bytes than the delimiter, or (3) it contains fewer bytes than the maximum bytes per codepoint of the encoding
22:49 whiteknight (3) is what I was missing
22:52 whiteknight The reason this test was passing before is because I was just filling the buffer on every readline, which is a big hit for performance and is absolutely wrong for sockets
22:52 whiteknight so when I fixed that issue, this one was exposed
22:52 whiteknight I like getting things tightened up
22:56 dalek parrot/whiteknight/io_cleanup1: 1cf4aa9 | Whiteknight++ | / (2 files):
22:56 dalek parrot/whiteknight/io_cleanup1: Comments and small cleanups to .h files. No functional changes
22:56 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/1cf4aa9818
22:56 dalek parrot/whiteknight/io_cleanup1: e493fae | Whiteknight++ | src/io/utilities.c:
22:56 dalek parrot/whiteknight/io_cleanup1: As far as the readline engine is concerned, the buffer is effectively empty if (1) there are zero bytes in the buffer, (2) there are fewer bytes in the buffer than are in the delimiter string or (3) there are fewer bytes in the buffer than the maximum number of bytes per codepoint for the given encoding. In any of these three cases (#3 was missing), we need to make sure we fill the buffer to avoid missing characters spread
22:56 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/e493faeb70
23:03 whiteknight When I started io_cleanup1, I was expecting it to be a 2-4 week project
23:03 whiteknight my abilities to estimate software development schedules is poor
23:03 whiteknight also, my subject/verb agreement is poor
23:17 lucian joined #parrot
23:20 whiteknight If rurban++ can confirm the fix, I'll merge the branch
23:24 benabik whiteknight++ # persistence
23:41 whiteknight It occurs to me that if sprintf is using a StringBuilder internally, that doing something like push(sb, sprintf(...)) is awfully redundant
23:42 whiteknight the sprintf engine should be able to append to an existing StringBuilder

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced