Camelia, the Perl 6 bug

IRC log for #parrot, 2013-10-02

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:11 rurban1 joined #parrot
00:12 Psyche^ joined #parrot
00:19 TonyC joined #parrot
00:35 dalek nqp: 69c6085 | coke++ | t/docs/opcodes.t:
00:35 dalek nqp: Add first pass at docs tester
00:35 dalek nqp:
00:35 dalek nqp: Currently verifies that every opcode in docs/ops.markdown
00:35 dalek nqp: has a corresponding entry in nqp-jvm (and vice versa).
00:35 dalek nqp: review: https://github.com/perl6/nqp/commit/69c608530d
00:38 dalek nqp: b4c094e | coke++ | docs/ops.markdown:
00:38 dalek nqp: remove (for now) docs for ops not in JVM.
00:38 dalek nqp: review: https://github.com/perl6/nqp/commit/b4c094eac5
01:26 dalek nqp: f59ce6e | coke++ | / (2 files):
01:26 dalek nqp: Update doc formatting, track with test.
01:26 dalek nqp: review: https://github.com/perl6/nqp/commit/f59ce6eeff
01:26 dalek nqp: 0cbaefe | coke++ | docs/ops.markdown:
01:26 dalek nqp: document more I/O opcodes
01:26 dalek nqp: review: https://github.com/perl6/nqp/commit/0cbaefe4d0
01:26 dalek nqp: 7129541 | coke++ | docs/ops.markdown:
01:26 dalek nqp: document more opcode variants
01:26 dalek nqp: review: https://github.com/perl6/nqp/commit/712954118f
01:26 dalek nqp: 9259f8e | coke++ | t/docs/opcodes.t:
01:26 dalek nqp: ignore empty opcodes
01:26 dalek nqp: review: https://github.com/perl6/nqp/commit/9259f8e7c4
01:26 dalek nqp: deae10b | coke++ | docs/ops.markdown:
01:26 dalek nqp: document moar ops
01:27 dalek nqp: review: https://github.com/perl6/nqp/commit/deae10bc3d
01:46 FROGGS_ joined #parrot
01:58 rurban1 joined #parrot
02:01 benabik joined #parrot
02:10 kid51_ joined #parrot
03:04 preflex_ joined #parrot
04:09 dalek nqp: 6758931 | coke++ | docs/ops.markdown:
04:09 dalek nqp: document bitops, relocate a type check, add isprime
04:09 dalek nqp: review: https://github.com/perl6/nqp/commit/6758931d4d
04:09 dalek nqp: f06d02c | coke++ | docs/ops.markdown:
04:09 dalek nqp: add more opcodes.
04:09 dalek nqp:
04:09 dalek nqp: Also fix some previous entries suffering from cutandpaste
04:09 dalek nqp: review: https://github.com/perl6/nqp/commit/f06d02c428
04:12 dalek nqp: 8b7c688 | coke++ | docs/ops.markdown:
04:12 dalek nqp: fix typo. :(
04:12 dalek nqp: review: https://github.com/perl6/nqp/commit/8b7c688882
06:42 patspam joined #parrot
07:04 FROGGS joined #parrot
07:44 rurban1 joined #parrot
07:46 hdanak joined #parrot
08:44 rurban1 joined #parrot
09:46 rurban1 joined #parrot
10:12 mtk0 joined #parrot
10:46 rurban1 joined #parrot
10:56 dalek rakudo/nom: f6e11ba | (Elizabeth Mattijsen)++ | t/spectest.data:
10:56 dalek rakudo/nom: Make sure @a:exists and @a:delete tests are run
10:56 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f6e11bade6
11:47 rurban1 joined #parrot
12:47 rurban1 joined #parrot
13:08 PacoAir joined #parrot
13:48 rurban1 joined #parrot
14:05 bluescreen joined #parrot
14:39 Zefram Util: I've mailed you twelve further bug reports
14:39 Zefram I've also got two much more subjective items
14:40 Zefram I'll throw these open to the channel; welcome opinions on whether I should report these as bugs
14:42 Zefram firstly, the arbitrary default recursion limit of 1000.  seems like a bad choice of default, because it breaks function composition: in the general case a function call that works in one place won't necessarily work if called from inside a subroutine
14:42 Zefram secondly, I don't see any way to create an anonymous class, although there is a way to create an anonymous *sub*class
14:48 rurban1 joined #parrot
15:11 denisboyun joined #parrot
15:18 rurban1 joined #parrot
15:20 denisboyun joined #parrot
15:21 FROGGS joined #parrot
15:37 Util Zefram: /msg sent
15:37 Util Zefram: You should be able to change the recursion limit per-interpreter:
15:37 Util $P0 = getinterp
15:37 Util $P0."recursion_limit"(900000)
15:38 Util Or, do you mean that the initial value should be higher, even though you can change it in any given program? If so, how high?
16:05 Zefram I'm aware that it's changeable.  although I only know that through grepping the source: neither the limit itself nor its changeability are documented
16:05 Zefram if it were unchangeable I'd have made a bug report of a different character
16:06 Zefram my more subjective claim is that imposing a limit *by default* is a poor choice
16:06 Zefram I'm actually changing the limit to -1 in my code, which effectively removes the limit
16:07 Zefram I'm not sure what the limit is trying to achieve
16:08 Zefram it's not preventing you from running out of memory, because you're free to consume as much memory as you like as long as you do it iteratively, or via tailcalling, or if you disguise your recursion as tailcalling by using explicit continuation passing
16:08 Zefram the recursion limit seems to be just... training wheels, to prevent n00bs getting themselves confused by this newfangled recursion trickery
16:09 Zefram and as having a recursion limit breaks ordinary function composition semantics, I think the training wheels shouldn't be in place by default
16:10 Zefram I have no objection to it being a non-default option
16:13 Zefram clarifying: I have no objection to the training wheels being a non-default option
16:14 denisboyun joined #parrot
16:18 benabik joined #parrot
16:19 rurban1 joined #parrot
16:32 Util Zefram: I see your point, but I don't feel so strongly about it that I immediately agree with changing the default to -1.
16:32 Util The ameliorating factor for me is that (in our projected future)
16:32 Util most PIR/PASM code will be run via another (higher-level) language like Perl 6 or TCL,
16:32 Util and *those* languages will have already set the recursion limit to whatever they want.
16:32 Util Having a default max recursion limit in the base config allows Parrot to tell you about
16:32 Util infinite loops in your hand-crafted PIR, which is helpful to even non-beginners sometimes :)
16:32 Util Also, I am just scratching the surface of Haskell, and f.composition is not yet a primary idiom to me.
16:32 Zefram well, it's per-interpreter, not per-HLL
16:32 Util This is certainly worth a ticket, to allow ongoing discussion.
16:32 Zefram ok, I'll open a ticket
16:33 Zefram well, mail you the beginnings of one
16:33 Zefram what about anonymous classes?
16:34 Zefram I'm finding it inconvenient that some ops insist on writing into the namespace in addition to returning their result in a register
16:43 rurban recursion_limit needs to be documented at least
16:44 Util Zefram: Do you have an example of the "writing into the namespace in addition..."? Or was that one of the 12 bug reports?
16:44 Util I agree about documenting the r.limit.
16:45 Util re: anonymous classes; I need to look at the code before I speak to that.
16:45 Zefram I can put together an example if you want.  it's behaviour of the newclass op, which returns a class metaobject and also writes into the namespace using the name that it was given
16:46 Zefram the documentation has some mention of using the subclass op to get an anonymous subclass, but doesn't mention any way to get an anonymous class without providing a parent class
16:47 Zefram the newclass behaviour looks more like a deliberate design decision than a mistake, which is why I've classed this issue as subjective and needing opinions before proceeding with a ticket.  but the availability of anonymous subclasses (if that actually works) makes newclass look anomalous
16:48 Zefram unfortunately investigating just what gets written into the namespace is impeded by the typeof and isa anomalies that are somewhere in the twelve reports that I mailed to you
16:53 rurban but even anonymous classes need a parent
16:53 Zefram anonymous classes need a parent just as much as named classes, no more and no less
16:55 rurban in my case an empty parent uses the default Object as parent class. names should be just optional, yes. registering them into namespaces makes lexically scoped classes hard
16:57 Zefram exactly
16:58 rurban this needs a discussion on the mailing list
16:59 rurban but should be no problem to implement
16:59 Zefram guess I should open a ticket for it then
16:59 Zefram thanks
16:59 rurban p5-mop has exactly this very problem
17:00 Zefram yeah, it's really difficult to work around Perl 5's use of the name as a proxy for the class all over the place
17:00 benabik I occasionally wonder if Parrot's idea of a single global namespace is problematic in and of itself.
17:00 Zefram but Parrot does have class metaobjects
17:01 Zefram I think Parrot's built-in namespace is an abstraction inversion.  but not really *wrong* in itself
17:01 rurban names are needed for the general usecase, but should be optional for the simple, fast and small lexical case
17:01 Zefram you've just got to watch out for things *relying* on the namespace, which is where Perl 5 has a problem
17:02 benabik Well, Parrot's class mechanism is tied to its namespaces.
17:02 Zefram there are some Parrot doc notes about using namespaces to manage named methods, which has me a bit worried
17:02 Zefram does that imply that a class must have an absolute name?
17:02 benabik Probably.
17:03 rurban hmm...
17:03 Zefram if a class must have an absolute name, then you can't GC classes, because the namespace keeps a reference to some aspects of the class
17:03 benabik Yup.
17:03 Zefram if it's all managed through class metaobjects, otoh, you can GC classes perfectly well, and there's nothing to stop you naming a class (by storing the class metaobject in the namespace)
17:04 Zefram hence abstraction inversion to have the namespace come first
17:04 benabik Having to store methods in a namespace would also be less of an issue if the namespaces weren't global.
17:05 Zefram oh yes, there's no problem having an internal namespace for methods that just hangs from the class metaobject
17:05 Zefram that's all gcable
17:06 benabik The "natural" result (IMHO) is that you remove the global namespace and just have lexical outer ones.  Loading a modules returns a namespace that you can install into your own namespaces however you want.  (merge, name, leave anonymous, whatever.)
17:06 benabik But anyway...
17:23 denis_boyun__ joined #parrot
17:31 rurban1 joined #parrot
18:26 dalek nqp/cclass-backslash: 65c84f3 | (Arne Skjærholt)++ | t/qregex/rx_charclass:
18:26 dalek nqp/cclass-backslash: Add test for character class with space in it.
18:26 dalek nqp/cclass-backslash: review: https://github.com/perl6/nqp/commit/65c84f3043
18:26 dalek nqp/cclass-backslash: 401bc9e | (Arne Skjærholt)++ | src/QRegex/P6Regex/ (2 files):
18:26 dalek nqp/cclass-backslash: Refactor regex backslash handling to correctly handle character classes.
18:26 dalek nqp/cclass-backslash:
18:26 dalek nqp/cclass-backslash: Now, "\ " isn't incorrectly parsed as unspace (which is illegal in regexes).
18:27 dalek nqp/cclass-backslash: review: https://github.com/perl6/nqp/commit/401bc9ee04
18:32 rurban1 joined #parrot
18:41 darbelo joined #parrot
18:52 denis_boyun joined #parrot
19:02 dalek nqp: 65c84f3 | (Arne Skjærholt)++ | t/qregex/rx_charclass:
19:02 dalek nqp: Add test for character class with space in it.
19:02 dalek nqp: review: https://github.com/perl6/nqp/commit/65c84f3043
19:02 dalek nqp: 401bc9e | (Arne Skjærholt)++ | src/QRegex/P6Regex/ (2 files):
19:02 dalek nqp: Refactor regex backslash handling to correctly handle character classes.
19:02 dalek nqp:
19:02 dalek nqp: Now, "\ " isn't incorrectly parsed as unspace (which is illegal in regexes).
19:02 dalek nqp: review: https://github.com/perl6/nqp/commit/401bc9ee04
19:02 dalek nqp: a2a6cc8 | (Arne Skjærholt)++ | src/QRegex/P6Regex/ (2 files):
19:02 dalek nqp: Rerefactor backslash handling.
19:02 dalek nqp:
19:02 dalek nqp: Now, running regex and character classes don't share any code for handling
19:02 dalek nqp: backslash escapes. This means that there's some code duplication, but it'll
19:02 dalek nqp: make it easier to change character classes into something like skip lists
19:02 dalek nqp: later on.
19:02 dalek nqp: review: https://github.com/perl6/nqp/commit/a2a6cc82ea
19:35 rurban1 joined #parrot
19:55 dalek nqp: 879f8d1 | coke++ | docs/ops.markdown:
19:55 dalek nqp: meta docs
19:55 dalek nqp: review: https://github.com/perl6/nqp/commit/879f8d1f8d
19:55 dalek nqp: 02cf729 | coke++ | docs/ops.markdown:
19:55 dalek nqp: add more string opcodes
19:55 dalek nqp: review: https://github.com/perl6/nqp/commit/02cf729a04
19:55 dalek nqp: 2b8f9e3 | coke++ | docs/ops.markdown:
19:55 dalek nqp: fix typo, minor formatting
19:55 dalek nqp: review: https://github.com/perl6/nqp/commit/2b8f9e30e3
20:35 rurban1 joined #parrot
20:59 dalek rakudo/nom: 5a7979e | (L. Grondin)++ | src/core/List.pm:
20:59 dalek rakudo/nom: first attempt
20:59 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5a7979ee18
20:59 dalek rakudo/nom: 04e2541 | lizmat++ | src/core/List.pm:
20:59 dalek rakudo/nom: Merge pull request #211 from grondilu/combinations
20:59 dalek rakudo/nom:
20:59 dalek rakudo/nom: List.combinations and List.permutations
20:59 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/04e2541c54
21:10 dalek rakudo/nom: ae7ce99 | (L. Grondin)++ | src/core/List.pm:
21:10 dalek rakudo/nom: expand tabs
21:10 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ae7ce9953f
21:10 dalek rakudo/nom: a103418 | lizmat++ | src/core/List.pm:
21:10 dalek rakudo/nom: Merge pull request #212 from grondilu/combinations
21:10 dalek rakudo/nom:
21:10 dalek rakudo/nom: fixing indentation
21:10 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a1034184e9
21:29 hdanak joined #parrot
21:50 darbelo_ joined #parrot
21:54 rurban1 joined #parrot
22:55 rurban1 joined #parrot
23:16 rurban1 joined #parrot
23:57 FROGGS joined #parrot

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

Parrot | source cross referenced