#parrot Parrot 2.2.0 "Like Clockwork" Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Priority: documentation sprint and pre-release testing for 2.3, fix line number annotations | Review and vote GSoC applications
Set by moderator on 13 April 2010.
chromatic Are you open to the idea of registering with your own RPA or Hash only for the case where you take a Perl 5 reference to a Parrot object? 00:02
sorear Can you elaborate? 00:03
chromatic The suggestion I mentioned earlier of keeping an RPA around and pushing every new callback onto it.
Limit its use.
Only add a callback to it where you have some magic CV or whatever in Perl 5 pointing to a callback. 00:04
When the refcount of that CV/RV/whatever reaches zero, remove the callback from the RPA.
sorear That has destruction order issues - what if the RPA dies before the CV does? 00:05
chromatic Two things. First, that RPA gets registered with Parrot's GC through Parrot_pmc_gc_register.
Second, we add a "Run this code before this interpreter's global destruction" mechanism by which you can unregister everything in that RPA. 00:06
I guess you won't need to unregister everything; only that RPA itself. 00:08
Coke make a global exit() handler.
sorear chromatic: It could work, but I don't think it will go far enough 00:09
kurahaupo Or make the P5Interpreter object behave like a container for all the references it holds, for the purposes of doing the GC marking?
sorear What are you going to do about the dlfree problem?
chromatic For that we do need ordered destruction, but I don't want to complicate ordered destruction and GCable registration. 00:10
sorear I still prefer my simplified ordered destruction proposal from earlier
Coke github.com/partcl/partcl/blob/maste.../tclsh.pir has a sample handler for dealing with .EXCEPT_EXIT
sorear If we have any kind of ordered destruction, this entire problem solves itself.
chromatic No, it doesn't.
sorear So there's no need for any RPA tricks if I can just get an assurance that the AddrRegistry will be collected after my scalars 00:11
Why not?
chromatic Because I'm going to reject any such patch.
sorear I said 'any kind'
not 'my kind' 00:12
you're going to reject any patch which adds ordered destruction to the GC?
chromatic I'm going to reject any patch which enforces any order of destruction on AddrRegistry.
Whiteknight chromatic: what do you mean by that? 00:16
chromatic AddrRegistry gets destroyed when it gets destroyed during interpreter global destruction, and if you need to rely on any particular ordering of its destruction relative to anything else, you're doing something wrong. 00:17
If you use Parrot_pmc_gc_register(), you're telling Parrot that you're in charge of managing that PMC's lifespan. 00:18
Whiteknight but during global destruction we walk the pool linearly. All bets at that point are off 00:19
sorear If a general mechanism for PMCs to depend on other PMCs is added, you say it will have no effect on AddrRegistry targets, or will not be added?
chromatic I will reject any patch which makes AddrRegistry a dependency for that graph traversal.
00:21 tewk joined
chromatic sorear, if you had an exit handler, could you call perl_free() on your P5 interpreter to clean up all of the SVs? 00:23
kurahaupo How much hacking of the "normal" P5 interpreter is reasonable to get P5-in-parrot working? 00:24
Should we be bending P5, or bending Parrot?
I assume the eventual outcome is to get P5 hosted on Parrot?
sorear kurahaupo: So far I've had to "bend" neither
All the contortions are in the glue layer 00:25
kurahaupo Basically I'm wondering about walking the P5 heap during the Parrot GC Mark phase... 00:26
sorear chromatic: Possibly. It would involve significant reorganization - P5Interpreters are currently objects, and Parrot can instantiate as many or few as it wants
s/object/PMC/
kurahaupo: that breaks semantics
Perl 5 uses a synchronous reference counting system for storage reclamation 00:27
and a lot of code relies on it
kurahaupo Not so it manages the P5 heap, but so it can look for references to Parrot objects (PMCs)
00:27 GodFather joined, GodFather_ joined
sorear that can be done, but it would be hell 00:27
kurahaupo It would still only sweep the Parrot heap, and leave the P5 alone
chromatic I really do think the best way to go is to finish one GC scheme completely before starting to finish the other. 00:28
sorear Perl 5 object layouts change every patchlevel, and are incredibly complicated
chromatic: What does "finish" mean here?
chromatic Let the embedded P5 interp call mg_free on everything applicable. After that, let Parrot_exit run. 00:29
sorear mm 00:32
00:32 mikehh joined 00:41 plobsing joined 00:45 ruoso joined
dalek rrot: r45728 | mikehh++ | trunk/runtime/parrot/library/distutils.pir:
fix pod syntax - missing =back
00:52
01:01 jrtayloriv joined
Whiteknight sorear: where are you doing your hacking? 01:24
sorear Whiteknight: github.com/jnthn/blizkost
Whiteknight ah, okay. That's what I thought
very cool project, that 01:25
sorear chromatic: What would you do if a P5Interpreter becomes unreachable and is collected before global destruction?
w.r.t. "Don't mix destruction phases" 01:26
Whiteknight you would have to register it globally to prevent that
or, the P5.destroy vtable would free all it's SVs
01:26 Mokurai1 joined
chromatic That all depends on what that P5Interpreter represents. 01:26
sorear P5Interpreter is a handle to the global aspects of Perl 5 01:27
it provides the ability to eval strings
eventually, it will also provide namespace hooks
01:28 rt7 joined
chromatic Does each one get a separate interpreter, in Perl 5 terms? MULTIPLICITY? 01:28
01:29 Andy joined
sorear yes 01:29
(however, this is not a critical part of the design - I could make it a singleton if sufficiently persuaded)
chromatic I wouldn't use a singletone. The interp-per-PMC approach seems easiest to manage. 01:30
singleton
purl somebody said singleton was just a glorified global variable for languages that don't have them
Andy A singletone is what Linda McCartney played. 01:33
chromatic If Parrot drives the process, and if all of the P5 interps clean up before Parrot global destruction, I think everything works out okay.
sorear it mostly does 01:38
just asking if you had any insight
chromatic The only problematic case I can see is if anything escaped that collected P5Interp back to Parrot, and if that escapee referred to anything within that interp that went away. 01:40
01:43 brooksbp joined 01:47 bubaflub joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33235), fulltest) at r45728 - Ubuntu 10.04 beta i386 (g++ with --optimize) 01:49
01:53 Andy joined
Andy I am luxuriating by the pool at the Hilton in Columbia, SC 01:53
spoiled only by the lite jazz playing 01:54
kid51_at_dinner Have you given your talk yet? 02:14
dukeleto can I replace all occurences of STRING in t/ with Parrot_String ? 02:17
cotto why?
dukeleto STRING_* functions seem to be getting deprecated 02:18
i am wondering if STRING has the same fate
chromatic No, and I'm not sure what you mean about deprecations. 02:19
dukeleto maybe I misunderstand the difference between STRING and Parrot_String
cotto functions named Parrot_string_bar will be changed to Parrot_str_foo. That's all.
dukeleto are STRING and Parrot_String on the same footing, or is one preferred over the other ? 02:20
cotto: STRING_is_null is deprecated in 2.4 and will be changing to Parrot_str_is_null, for example
also, I am talking from the perspective of the embed/extend interface 02:21
so my question should have s!t/!t/src/(embed|extend)\\.t!
chromatic There the answer is yes. 02:22
dukeleto chromatic: good. So STRING is fine in internals, but Parrot_String is what "outsiders" should use. As I expected.
dukeleto releases the hounds 02:23
chromatic Exactly. 02:24
dukeleto that question was related to me adding a bunch of tests for Parrot_ext_call 02:25
sorear next question: are dynpmc libraries considered "outsiders"?
dukeleto there are only tests for Parrot_ext_call returning integers, but PL/Parrot relies on returning PMCs, so I will write some tests for that
also, Parrot_compile_string does not populate the error string 02:26
for syntax errors, that is. it populates it if you given an invalid compiler, though
chromatic Dynpmcs are outsiders.
dukeleto that bug is causing my grief, because it coredumps postgres 02:27
s/my/me/
02:37 brooksbp joined 02:42 Mokurai1 joined
Andy kid51: yeah, I did, people liked it, it's on slideshare 02:50
kid51 Andy: This one? www.slideshare.net/petdance/what-sc...t-students 02:53
Andy yup 02:54
dukeleto: are you driving the immutable strings? 03:00
03:00 hercynium joined
Andy and is there a branch on it? 03:00
chromatic No and yes. 03:01
immutable_strings_part1
Andy who is driving? 03:02
purl it has been said that driving is bad! :P
chromatic bacek and I worked on it.
Andy is there a plan for it I don't see? 03:03
First i heard of it was on the lists
list
chromatic We plan to merge after the 2.3 release, then remove a lot of deprecated functions and ops. 03:04
Are you looking for more detail? 03:05
Andy whatever i can do in terms of scutwork
I see much consting on the C-level
chromatic Barring bacek brilliance on one opcode that may or may not do the right thing, it's technically ready to merge. 03:06
Const away as you see fit.
Andy at this point it's barfing on some opcodes
chromatic Your consting is?
Andy no, the fresh checkout
dgging a bit 03:07
dukeleto Andy: i don't think I am driving immutable strings. What do you mean?
Andy dukeleto: Nothing, chromatic steered me right.
dukeleto Andy: ah, i see, in backlogs there is light
Andy chromatic: Are the // comments in the *.ops intentional to break the build? 03:08
cotto bacek does that on purpose
Andy bah
breaks my build.
bacek arrives with flames and smoke 03:09
Andy and breaking my build!
waaaah!
dukeleto bacek: which editor do you use ? 03:10
03:10 dalek joined
bacek dukeleto, one which require only 10 fingers 03:10
Andy if you run configure with --cage, the build will barf on //
dukeleto wonders how easy it is to just make the damn editor replace // with /* 03:11
bacek Andy, yes. There is some glitches have to be cleaned.
Andy Can I change the // to /* */ or will that goof you up?
I'd really like to build with --cage
bacek dukeleto, :%s/\\/\\/\\(.*\\)/\\/* \\1 *\\//
Andy, letme check. Is it in ops? 03:12
Andy yes
chromatic I know it's in the substr_s_i_i_s op which is probably buggy.
Andy ack -Q // --cc
bacek let just remove this op as part of deprecation 03:13
chromatic Fine by me.
That was the culprit for the Rakudo failures though.
... so something's wrong in Parrot_str_replace.
bacek It need same approach as substr_s_s_i_i_s 03:14
Andy but the // in the ops are sad, too. 03:16
bacek Andy, it was on purpose :)
03:19 janus joined
bacek PGE bailed out without this op... 03:20
chromatic, I _do_ want introduce op C<replace> which will do replace only... 03:23
03:23 Andy joined
Andy I heard you missed us, we're back. 03:23
chromatic bacek, any objection to making the C++ comments into C comments with a token we can look for? 03:25
That'll let him const away, which is a good thing.
bacek in case of substr op this comment can go away.
Andy I'm already fixin' it 03:26
oh, ok
i'll get rid of the comment
committed 03:27
thanks
dalek rrot: r45729 | petdance++ | branches/immutable_strings_part1/src/ops/string.ops:
bacek already checked this, said that the comment can go away
Andy and the only two bits of functioanlity that are done only on the fly are length and hashval? 03:28
I'd think it would be practically free at instantiation time to save length, no?
bacek Andy, my idea was to pass only const STRING* around. "length" should be saved during creation of string. 03:29
chromatic Sounds right to me.
Andy OK, so the only time you might having a STRING * be non-const would be when figuring its hashval 03:30
chromatic Right.
bacek class String { volatile uint32_t hashval }
sigh... 03:31
Andy So one of the cool things is that I need to change some virt func typedefs
VTABLE_exists_keyed_str() for example
chromatic I know. A language with a real object system would be nice at this level.
bacek Andy, can you create "part2" branch from "part1"?
Andy sure
why? 03:32
bacek Too many changes for single branch (from my point of view).
03:33 diakopter joined
Andy so I create part2 and then what? 03:33
chromatic The consting represents too many changes?
bacek But if everyone is fine with merging such a big branch I will no object.
chromatic, yes. I would like to have fully mergeable branch with 4 HLLs fully functional on top of it. 03:34
Andy It'd gonna be a big branch anyway.
chromatic Consting shouldn't hurt this branch.
bacek (this is main reason why I didn't remove many ops, etc)
chromatic, than go for it.
chromatic Yeah, op removal is definitely part2.
Andy yes, I'd agree with that. 03:35
the huge benefit is that any function that takes a STRING * can turn that parm into const STRING * 03:36
unless it needs hashval. :-(
chromatic I *think* only src/hash.c needs writeable hashval, and that already casts from void *. 03:37
bacek We have to change Parrot_str_length to remove side-effects 03:38
Andy It casts from void *, but we shouldn't.
If we're modifying a const * target, then that's bad
because the compiler can make assumptions if it's const * and we're violating that contract 03:39
chromatic I'd like to have type-safe hashes too, but we don't and aren't going to for a while. 03:40
bacek template<typename T> hash { ... } 03:41
ah, sorry... We are implementing it in some kind of macro-assembler. 03:42
cotto What's keeping us from calculating the hashval when the string is initialed?
Andy speed
YAGNI
chromatic The belief that speed is important.
We haven't profiled it either way.
cotto chromatic++
Andy Right
In the case of length, we know that because we have to allocate memory. 03:43
bacek Andy, "length" isn't "byte-length". It's "char-length"
Andy oh, true
cotto Calculating the hashval will be cheaper when the string's still in the CPU's cache. 03:44
chromatic True.
Andy we think. 03:45
cotto we think.
chromatic We know a cache miss is expensive.
cotto worth profiling at least
Andy ooof, parrot_hash_get_bucket makes me cry 03:46
chromatic You're not the only one.
Andy what is hash->bs 03:47
ah, found it
cotto self-explanatory
Andy what else would we key off of in a hash if not a string?
kurahaupo Since a string is necessarily in cache when it's created, how much extra would it cost to compute the hash then? 03:48
chromatic A tight loop and a couple of math ops.
kurahaupo suspects the answer is "wait for the profiling"
bacek string is in cache. But string content isn't...
kurahaupo Where to its bytes come from then?
03:48 diakopter left
bacek Andy, "int", "cstring", "pmc" 03:49
kurahaupo, Memory_Block. It just separate pool for string (and buffer) content.
dalek rrot: r45730 | bacek++ | trunk/DEPRECATED.pod:
Add substr_s_i_i_s into deprecated.
rrot: r45731 | bacek++ | trunk/DEPRECATED.pod:
Add additional deprecation notice for inplace string ops.
rrot: r45732 | petdance++ | branches/immutable_strings_part1/src/sub.c:
use PMC_IS_NULL to check for null PMC *
Andy So the hash just somehow knows how to calculate a hash of an obvest that's passed in as a void * ? 03:50
that seems crazy
cotto How often do we have a hash with 4 or fewer elements?
chromatic Enough that that gave a measurable speed win for Rakudo.
cotto your doing? 03:51
chromatic About 10% of the time.
bacek Andy, "poor man polymorphism"
cotto I'll trust it then.
chromatic Oh sorry, read the wrong line.
40% of the time. 03:52
cotto coverage?
purl rumour has it coverage is cv.perl6.cz
cotto 212127928/109077760 03:53
purl 1.94474041271108
cotto 109077760/212127928
purl 0.514207445612725
Andy OK, I have much to do. 03:55
Starting with all the encoding funcs
We cant' change encodings in place, right? 03:56
chromatic Right.
Andy Gotta start the bottom and build back up 03:57
Let's take bets to see if the wifi holds on the way back to my room. 04:01
ok, but there are these functions called "become_encoding"
they're also unimplemented. 04:02
I think they oughta come out as part of this branch.
bacek Andy, also set_byte/set_grapheme. I removed plural versions already. 04:03
chromatic Sure, we can add them back in as part of NFG if we need them.
Andy NFG?
purl NFG is No Fscking Good! or grapheme normalization form (see docs/pdds/draft/pdd28_character_sets.pod)
Andy brb 04:04
bacek actually, set_grapheme isn't used and can be removed 04:05
chromatic Removing unimplemented things is fine for this branch. 04:06
bacek (it's C<set_codepoint>, not grapheme)
Andy yay 04:08
ok, so become_encoding, set_grapheme and set_byte can go 04:09
bacek Generally speaking - any "inplace" string update encoding/charset function can go 04:10
Andy ok
04:14 mikehh joined 04:22 brooksbp joined
dalek rrot: r45733 | dukeleto++ | trunk/t/src (2 files):
[t][cage] Convert STRING to Parrot_String in the embed/extend interface
04:22
rrot: r45734 | petdance++ | branches/immutable_strings_part1/include/parrot/charset.h:
removed unused macro CHARSET_SET_GRAPHEMES
rrot: r45735 | petdance++ | branches/immutable_strings_part1 (8 files):
become_encoding() makes no sense in a world of immutable strings
Andy What about all the unimplemented to_encoding() methods?
and actually, if we can't set_byte, we can't set_next, either 04:25
bacek to_encoding should stay. It creates new converted string
(set_next is on chopping block)
Andy on chopping block meaning it can go? 04:26
bacek Erm... set_next???
Where did you found it?
Ah. iter.set_and_advance. Clean it with fire! 04:28
Andy src/string/encoding/fixed_8.c
bacek :)
Andy and the iterator uses it
but set_and_advance is used
bacek hmm... 04:29
Andy but maybne you can pull that thread and see what we can kill
cotto dukeleto, ping 04:45
04:59 rurban_ joined
dalek rrot: r45736 | petdance++ | branches/immutable_strings_part1 (5 files):
consting args in the worker methods
05:13
Andy well, shoot, charset_cvt_ascii_to_binary expects to be able to do it in place 05:15
05:28 iblechbot joined 05:38 fperrad joined
dalek rrot: r45737 | petdance++ | branches/immutable_strings_part1 (2 files):
consting of STRINGs and CHARSETs
05:46
05:50 fperrad_ joined 06:44 theory joined 07:01 brooksbp joined 07:09 dalek joined 08:33 JimmyZ joined
bacek msg Andy charset_cvt_* doesn't update string in-place. It clones string and update clone. 09:17
purl Message for andy stored.
09:17 lucian joined 09:21 GodFather joined 09:36 gerd joined 09:39 lucian joined
moderator Parrot 2.3.0 will be released at 2020-04-20 10:00 UTC | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Priority: documentation sprint and pre-release testing for 2.3, fix line number annotations | Review and vote GSoC applications 10:00
dalek rrot: r45738 | bacek++ | branches/immutable_strings_part1/src/string/encoding/ucs2.c:
Un-consting iterator
10:11
rrot: r45739 | bacek++ | branches/immutable_strings_part1/src/string/charset/ascii.c:
Remove useless string reallocations
rrot: r45740 | bacek++ | branches/immutable_strings_part1 (2 files):
Get rid of side-effects in Parrot_str_length
10:43
rrot: r45741 | bacek++ | branches/immutable_strings_part1/t/op/string.t:
Remove skipped and outdated tests.
rrot: r45742 | bacek++ | trunk/DEPRECATED.pod:
Add substr_s_s_i_i_s into deprecation.
10:51 darbelo joined 10:57 Whiteknight joined 10:58 rurban joined
Whiteknight good morning, #parrot 11:00
11:00 joeri joined
darbelo Morning. 11:01
11:04 kurahaupo joined
bacek aloha lazybones 11:05
Whiteknight I have been lazy recently 11:06
darbelo It's an optimization. 11:07
dalek rrot: r45743 | chromatic++ | branches/immutable_strings_part1/src/hash.c:
[hash] Tidied code; no functional changes.
11:16
rrot: r45744 | chromatic++ | branches/immutable_strings_part1/src/string/charset/ascii.c:
[charset] Changed ascii_compare() to use memcmp() whenever the encoding of two

and faster than iteration.
rrot: r45745 | chromatic++ | branches/immutable_strings_part1/src/packfile/pf_items.c:
[pf] Made STRINGs thawed from packfiles set their external flags to avoid

themselves as STRINGs are immutable now. This improves Rakudo's startup time by 6.167%.
11:27 rurban joined 11:45 Maddingue joined 12:14 allison joined 12:19 Mokurai1 joined 12:20 JimmyZ joined
dalek rrot: r45746 | bacek++ | branches/immutable_strings_part1 (7 files):
Add op replace and rebuild native pbcs
12:22
rrot: r45747 | bacek++ | branches/immutable_strings_part1/t/op/string.t:
Update test for replace op.
rrot: r45748 | bacek++ | branches/immutable_strings_part1/src/ops (2 files):
Mark deprecated ops with :deprecated attribute
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33242), fulltest) at r45745 - Ubuntu 10.04 beta i386 (gcc with --optimize) 12:30
12:41 kid51 joined
mikehh bacek: getting some t/pmc/packfile*.t failures - also g++ does not build after some of the consting 12:41
rurban just smoking svn on cygwin: t/compilers/pge/03-optable.t .Dubious, test returned 1 (wstat 256, 0x100) Failed 37/37 subtests 12:42
bacek mikehh, I didn't expect packfile failures... 12:43
rurban t/op/string_enc.t, t/library/opengl.t fails also (opengl without my pacthes which I normally apply)
bacek rurban, is it on win32? 12:44
rurban cygwin
mikehh rurban: good to see you around - welcome back 12:45
rurban well... just for a short ime :)
darbelo rurban: #33244 ? 12:48
rurban yep
oops. google changed its layout??? 12:49
darbelo Hm. The PGE failure looks like you have stal pbcs in your checkout... 12:51
rurban yes, could be. I just did make clean archclean
trying again... t/op/string_enc.t is bogus. too old 12:56
bacek rurban, yeah. There is no such test in parrot anymore.
darbelo We probably need to make PBCs depend on the PBC_COMPAT file. 12:57
bacek darbelo, which PBCs? 12:58
darbelo All PBCs, to force a rebuild when we invalidate the format. 12:59
12:59 rurban_ joined
bacek darbelo, we can't... Our PBC format is platform-dependant... 13:00
(speaking of t/native_pbc/*pbc)
rurban_ but cross-readable 13:01
bacek rurban_, but not cross-writable...
darbelo I meant the rest. If I build parrot, change the packfile format, amd type 'make' I end up with a bunch of stale pbcs.
The C files and PMCs get recompiled as needed, but not the bytecode. 13:02
rurban_ BTW I finally found why we need chmod 755 dynops/*.dll perl5 fault!
rt.cpan.org/Public/Bug/Display.html?id=56666 13:03
darbelo Ugh. 13:04
rurban ExtUtils::Command::cp strips the -x bit
bacek darbelo, TT#361
darbelo, feel free to steel it :)
darbelo Is there anything a bit more platform-specific that could be put in the hints file to avoid ExtUtils on cygwin? 13:05
rurban parrot works now fine, just rakudo didnt know that
I'll try to fix that upstream to improve our makefiles
sure. @cp@ should be /bin/cp 13:08
in which step is that set? 13:09
darbelo Right now it's in init::defaults but you can overrid it by setting the same values in your platfomr's hints file. 13:11
config/init/hints/cygwin.pm 13:12
And the originals are under the "# some utilities in Makefile" comment in config/init/defaults.pm
rurban TT#1559 13:17
bacek: What's the problem with adding cross-writable? Doesnt look too hard. 13:19
bacek rurban, it's way too much code in parrot already. Maintaining other bits which serve "premature optimization" purpose only is bad. 13:20
rurban :) 13:21
darbelo I'd like to have just one portable format. And, maybe, an optimized 'mmap() and execute' non cross-platform version if that one is too slow. 13:24
As it is now we have neither. 13:25
bacek darbelo, indeed...
13:28 clinton joined
darbelo OTOH, everytime I read the code behind our packfiles I remember that there is so much more to do elswhere... 13:29
dalek rrot: r45749 | bacek++ | trunk/config/gen/makefiles/root.in:
Make pbcverion.h depends on PBC_COMPAT. Resolve TT#361.
13:30
13:31 Mokurai joined
dalek TT #1559 created by rurban++: ExtUtils::Command::cp broken [cpan #56666] 13:32
TT #1559: trac.parrot.org/parrot/ticket/1559
TT #361 closed by bacek++: All .pbc files should make-depend on PBC_COMPAT
TT #361: trac.parrot.org/parrot/ticket/361
TT #1550 closed by fperrad++: lexical lost when cloning a Sub
TT #1550: trac.parrot.org/parrot/ticket/1550
darbelo rurban: Committed r45750 13:33
bacek fperrad, ping? 13:34
fperrad pong bacek
bacek fperrad, can you remove todoed test for TT#1550 as well?
fperrad bacek, thanks for this remember 13:35
bacek fperrad, cheap karma :) 13:36
13:37 Mokurai joined
bacek msg Andy Can we close TT#1543? 13:43
purl Message for andy stored.
dalek rrot: r45750 | darbelo++ | trunk/config/init/hints/cygwin.pm:
Add a platform override for 'cp' on cygwin to avoid cpan RT #56666 for ExtUtils::Command.
13:46
rrot: r45751 | fperrad++ | trunk/t/op/lexicals.t:
revert r45629, TT#1550 is not a bug
TT #1538 closed by bacek++: Invoking uninitialised continuation causes segfault 13:49
TT #1538: trac.parrot.org/parrot/ticket/1538
bacek msg NotFound Can you put summary of TT#1506 into DEPRECATED.pod please? 13:51
purl Message for notfound stored.
13:51 gerd joined
rurban darbelo++ thanks 13:56
13:59 patspam joined
rurban where's tools/util/smokeserv-client.pl gone? Could not upload report to Smolder at smolder.plusthree.com 14:00
14:03 Mokurai1 joined
dalek TT #1495 closed by bacek++: MacOS and one WinXP TapTinder clients hanging on t/library/pg.t 14:05
TT #1495: trac.parrot.org/parrot/ticket/1495
14:09 Andy joined
rurban Ah, I remember my doc patch in Parrot::Harness::Smoke.pm. Sent report offline 14:10
dalek rrot: r45752 | gerd++ | trunk/NEWS:
some news added
14:19
darbelo Hm, the chmod calls are made fro hpux too. I wonder what's the deal there... 14:24
rurban Probably the very same as for cygwin. I'll look into ExtUtils::Command::cp soon 14:27
dalek rrot: r45753 | fperrad++ | trunk/runtime/parrot/library/TAP (2 files):
[TAP] refactor iterator with lexical & capture_lex
14:35
rrot: r45754 | petdance++ | branches/immutable_strings_part1/src/string (16 files):
consting underlying charset pointers
14:52
darbelo Andy: ping.
Andy yessir
darbelo That aws fast.
mikehh mentioned consting-related breakage of teh g++ build. 14:53
Do you know if there is any incompatibility in the way gcc and g++ handle const? 14:54
Andy no
details?
purl details are important when programming or my program will not do what you thought you told it to
dalek TT #1543 closed by petdance++: Create PARROT_HOT and PARROT_COLD function annotations 14:55
TT #1543: trac.parrot.org/parrot/ticket/1543
fperrad ping bacek 14:56
bacek fperrad, pong 14:57
Andy back in a few
darbelo I'm looking in the irclog now.
Andy to talk about charset stuff
fperrad bacek, could you see TT#1356 ?
bacek fperrad, yeah... 14:58
fperrad, Parrot_quicksort is weird... 15:01
darbelo purl: msg Andy Hum, the only reference I see to g++ vs const is irclog.perlgeek.de/parrot/2010-04-17#i_2237092 which lacks detail.
purl Message for andy stored.
darbelo We have our own quicksort? I have to see that. 15:02
bacek msg Andy (it was related to immutable_strings branch. Parrot_str_charset function in particular)
purl Message for andy stored.
bacek darbelo, remember - what have been seen can not be unseen!!! 15:03
darbelo I'm a very morbid person, I watch traiwrecks for fun. 15:04
15:06 Andy joined
Andy i'm bacik 15:06
so what about const bummers? 15:07
bacek Andy, immutable strings branch is broken with c++. 15:08
Andy ok, more detail please?
dalek rrot: r45755 | petdance++ | branches/immutable_strings_part1 (3 files):
fixing some consting
15:09 theory joined 15:11 Xaero joined
Andy bacek: charset_cvt_iso_8859_1_to_ascii does indeed make a copy of the existring string, but it still wnats to modify the new string in place. 15:11
anything that uses ENCODING_SET_BYTE has to not use it any more
because set_byte is going away
15:12 Xaero left
bacek Andy, may be we can keep it. 15:13
Just after consting every STRINGs around.
Including PMCs and CallContext...
(keep set_byte) 15:14
mikehh Andy: I get the following error in the g++ build:
src/string/charset.c: In function ‘void Parrot_charsets_encodings_deinit(parrot_interp_t*)’:
src/string/charset.c:131: error: invalid conversion from ‘const void*’ to ‘void*’
src/string/charset.c:131: error: initializing argument 2 of ‘void Parrot_gc_free_memory_chunk(parrot_interp_t*, void*)’
Andy ok 15:15
mikehh it does not object to line 130 which is similar
ver 4.4.3 15:16
bacek msg chromatic Can we add test to parrot to make github.com/rakudo/rakudo/commit/cde...fdc82f3383 redundant? 15:17
purl Message for chromatic stored.
Andy ok, i'm leaving the set_byte stuff for now but throwing away the set_codepoints
mikehh I do get a warning on that line in the gcc build
Andy I think I fixed that last night 15:18
the const void * bummer
mikehh I dont think earlier versions of g++ object to it
Andy yes, but I have since fixed it
mikehh ok let me check again 15:19
bacek Coke, ping? 15:24
mikehh nope still fails at r45755 - also errors in src/ops/string.ops (I used make -j corevm) 15:26
that relates to const STRING* to STRING* 15:27
15:28 tetragon joined
Andy well that's something different 15:28
details please
purl details are important when programming or my program will not do what you thought you told it to
mikehh src/ops/string.ops: In function ‘opcode_t* switch_core(opcode_t*, parrot_interp_t*)’: 15:29
src/ops/string.ops:539: error: invalid conversion from ‘const STRING*’ to ‘STRING*’
src/ops/string.ops: In function ‘opcode_t* Parrot_charsetname_s_i(opcode_t*, parrot_interp_t*)’:
src/ops/string.ops:539: error: invalid conversion from ‘const STRING*’ to ‘STRING*’
src/ops/string.ops: In function ‘opcode_t* Parrot_charsetname_s_ic(opcode_t*, parrot_interp_t*)’:
src/ops/string.ops:539: error: invalid conversion from ‘const STRING*’ to ‘STRING*’
make: *** [src/ops/core_ops.o] Error 1
Andy thanks
mikehh back when I used to do a lot of c++ programming you could pass const to non-const, It don't seem to like it now 15:34
or maybe it was vice-versa 15:35
15:36 JimmyZ_ joined
bacek mikehh, you still can pass non-const value as const arg in C++. 15:36
but passing const value as non-const arg is strictly prohibited. (and always be afair) 15:37
Andy i'm workin' on it, really.
mikehh yeah, probably was not thinking correctly
Andy the opcodes have to be able to handle const STRING * 15:38
but right now they can't/
mikehh as I said I haven't done any serious c++ programming for a couple of years 15:40
bacek Andy, there is problem with const vs pin/unpin ops... 15:41
Andy go on, bacek
bacek mikehh, I didn't touch C++ in last few years :)
Andy are you guys just using g++ as the compiler instead of gcc?
bacek Andy, pin/unpin actually change STRING guts...
Andy So what do you mean "is problem"? Is there currently broken code? Or wil it be a problem in the future? 15:42
bacek So we can't "blindly" replace "STRING*" with "const STRING*" in handling ops.
Andy ok
i'm more interested in PMCs anyway 15:43
mikehh Andy: I test with both gcc and g++, with and without --optimize
bacek PMCs are fine
Andy mikehh: but gcc is fine, and g++ is what's failing, right?
mikehh Andy: yes, gcc seems ok - though it does warn 15:45
Andy so I will start using g++ as my compiler to get more stringent whining.
mikehh that's the main reason I use it :-} 15:46
actually it was NotFound who pushed me in that direction 15:47
Andy I had no idea. ;_0
I love more errors! 15:49
moritz Andy: then you should hack rakudo - that's pretty good at finding parrot errors 15:50
bacek would like to rewrite parrot in C++. Many things will be so easy... 15:51
Andy moritz: But I don't understand Parrot or Perl 6 15:52
I would love to know why my checkout keeps wanting to rebuild imcparser.c :-( 15:53
I'm not running with --maintainer
mikehh Andy: talking about errors I still get an error when running make cagecritic 15:55
Fatal error while critiquing "lib/Parrot/Install.pm": Can't call method "isa" without a package or object reference at /usr/local/lib/perl5/site_perl/5.12.0/Perl/Critic/Policy/Bangs/ProhibitRefProtoOrProto.pm line 25.
Andy that sounds like a Perl ::Critic problem 15:56
15:56 TiMBuS joined
Andy albeit in my Perl::Critic polidy 15:56
mikehh Perl::Critic::Bangs I think which AFAIK is yours
Andy it is
ticket it
in trac and assign it 15:57
to me
mikehh ok - will check it out and see if there are any other problems
dalek rrot: r45756 | petdance++ | branches/immutable_strings_part1 (8 files):
fixing some sad consts. Removed all the set_codepoint functions in the encodings
15:59
Andy mikehh: do I create you as Michael Hind or Mike Hind? 16:09
s/ate/dit/
mikehh I usually use Michael but mikehh is fine 16:10
Andy Michael it is.
I'm gonna release a new Bangs
mikehh Andy: I removed lib/Parrot/Install.pm and it went through (reported make: *** [cagecritic] Error 3) 16:13
that's on trunk 16:14
Andy yeah, I know
I'm about to release a new Bangs
dalek rrot: r45757 | petdance++ | branches/immutable_strings_part1 (4 files):
squashing some const problems
16:15
bacek msg chromatic I fixed workaround github.com/rakudo/rakudo/commit/cde...fdc82f3383 in r45758 16:21
purl Message for chromatic stored.
Andy just uploaded Perl::Critic::Bangs 1.04 to CPAN
mikehh ok will check it out 16:26
got to go out for a bit - bbl
dalek rrot: r45758 | bacek++ | branches/immutable_strings_part1 (3 files):
Ensure that str_replace update string's hashval
16:31
rrot: r45759 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] sort files before test
16:32
rrot: r45760 | petdance++ | branches/immutable_strings_part1/lib/Parrot (2 files):
quiet some Critic warnings
16:49 Whiteknight joined 17:00 Mokurai joined
dalek rrot: r45761 | fperrad++ | trunk/runtime/parrot/library/osutils.pir:
[osutils] fix mkpath with Windows drive
17:04
rrot: r45762 | petdance++ | branches/immutable_strings_part1/config/gen/makefiles/root.in:
Add a check to Perl::Critic::Bangs version for cagecritic target
17:14 lucian joined
Whiteknight all tests pass on Ubunut 9.04 x64 17:20
and Ubuntu 8.04 x86
dalek rrot: r45763 | petdance++ | branches/immutable_strings_part1 (2 files):
consted the STRING into string_unescape_one
17:32 ruoso joined
Whiteknight all tests pass on Ubuntu 9.04 x64 with ICC 17:47
Andy yay ICC 17:51
come on, why isn't anyone else committing? Let's go!
I'm in a Rails talk that I am not interested in. 17:52
darbelo I can break trunk if you're willing to debug it.
rurban Anyone knows which platforms needs exe bits for shared libs? (cygwin+hpux so far) 18:08
I need to persuade #p5p to change File::Copy for certain platforms
mpeix also I guess. aix I'm not sure
18:42 Andy joined
dalek rrot: r45764 | mikehh++ | branches/immutable_strings_part1/src/string/encoding/ucs2.c:
fix a const to get g++ to build
18:42
18:57 KingOfKarlsruhe joined 18:58 iblechbot joined 19:10 chromatic joined 19:12 davidfetter joined 19:14 theory joined 19:21 rt7 joined
dalek rrot: r45765 | fperrad++ | trunk/tools/dev/tapir.pir:
[tapir] add options --reverse, --shuffle
19:49
nopaste "chromatic" at 192.168.1.3 pasted "plobsing: PackFile memory leaks, as seen from Rakudo Hello, world" (252 lines) at nopaste.snit.ch/20290 19:52
dalek rrot: r45766 | fperrad++ | trunk (2 files):
[osutils] add tests (basename, dirname)
20:05
20:31 brooksbp joined
dalek rrot: r45767 | chromatic++ | trunk/compilers/imcc/pbc.c:
[IMCC] Fixed a memory leak of :subid names when removing quotes. This should
20:38
rrot: r45768 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] fix _clean_smoke
21:00 rurban_ joined
japhb Anyone here from PaFo grants committee? 21:23
21:32 Mokurai1 joined 21:36 s1n1 joined 21:37 jan_ joined, kid51 joined
Whiteknight PaFo has a grants committee? 21:40
japhb Whiteknight, well, if I'm supposed to submit my proposal, I have to assume there's someone there to receive it. 21:42
Maybe the committee is in fact the entire board? 21:43
Whiteknight thats what I would do
japhb Well, in any case, I needed someone from there to look over the draft of my first proposal and let me know what needs tweaking. Allison appears not around, so .... 21:44
21:53 s1n1 left 21:54 alexn_org joined
mikehh japhb: IIRC alison said she would pass your proposal around our sponsers 22:04
allison 22:05
japhb mikehh: ackpth. That was supposed to be just a draft. Ah well, I guess we'll find out what they think sooner rather than later ....
mikehh, Or did you mean "that's what will happen when I submit, as opposed to a formal grants committee process?" 22:06
mikehh japhb: the latter I think, although you would have to establiosh that with allison 22:07
japhb mikehh, OK. Well, I sent her my draft last night, so I guess now I just wait. 22:09
*Jeopardy Theme*
:-)
mikehh japhb: been there, done that, got the tee shirt rtc. 22:12
bah my typing is missing out again
moritz somebody could bisect trac.parrot.org/parrot/ticket/1560, I'm too tired right now 22:23
chromatic It's probably one of the STRINGNULL changes. 22:24
22:25 theory joined
chromatic Something passes STRINGNULL to Parrot_str_substr, probably from an op. 22:26
That's as much as I can dig at the moment. 22:27
It should be fixable before the 2.3 release though. 22:28
22:36 rt7 joined
dalek TT #1560 created by moritz++: Regression between r45386 and r45768 causes Rakudo failure in ... 22:37
TT #1560: trac.parrot.org/parrot/ticket/1560
22:44 lucian joined 22:51 rt7 joined
mikehh t/src/extend.t - Failed tests: 12-15, 17 at r45768 22:51
chromatic I can't reproduce that. 22:54
22:58 lucian joined
mikehh it happens with the g++ build but not the gcc build - let me investigate further 23:03
kid51 t/src/extend.t: modified by dukeleto earlier today; last previous modification was Feb 19. 23:06
mikehh the test fails - t/src/extend.t - Failed tests: 12-15, 17 at r45768 on g++ builds (with and without --optimize) but passes gcc builds (with and without --optimize) 23:19
kid51 mikehh: That combination of successes and failures sounds very much like test results you were reporting on other files several months back. 23:20
chromatic C++ errors? 23:22
23:29 jan_ joined
mikehh with g++ it builds and passes at r45732 and fails at r43733 23:29
I know I have done g++ tests today and I tend to alternate, but looking back all my g++ tests were in the immutable_strings_part1 branch 23:31
until now that is 23:32
23:33 jan joined
chromatic Can you provide the error messages or test diagnostics? 23:33
mikehh the change was from STRING * to Parrot_String * 23:36
# Failed to build 't/src/extend_12.o': t/src/extend_12.c: In function ‘opcode_t* the_test(parrot_interp_t*, opcode_t*, opcode_t*)’:
# t/src/extend_12.c:28: error: cannot convert ‘STRING*’ to ‘parrot_string_t**’ in initialization
# t/src/extend_12.c:32: error: cannot convert ‘parrot_string_t**’ to ‘STRING*’ for argument ‘2’ to ‘PMC* Parrot_find_global_cur(parrot_interp_t*, STRING*)’
# t/src/extend_12.c:39: error: cannot convert ‘STRING*’ to ‘parrot_string_t**’ in assignment
# t/src/extend_12.c:40: error: cannot convert ‘parrot_string_t**’ to ‘STRING*’ for argument ‘2’ to ‘PMC* Parrot_find_global_cur(parrot_interp_t*, STRING*)’
# Failed test 'call a parrot sub'
the others failures seem the same
g++ erors in the test build 23:38
similar changes were made in t/src/embed.t at r45733 but that passes 23:44
which is more important - using Parrot_String * and casting or reverting to STRING * 23:50
chromatic Interesting. 23:55