Parrot 2.10.1 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Long live Git! github.com/parrot/parrot | git clone git://github.com/parrot/parrot.git
Set by moderator on 18 November 2010.
00:02 nwellnhof left
whiteknight bluescreen: I just pushed some changes. miniparrot doesn't segfault anymore, but it doesn't work either. Some debugging to do 00:06
bluescreen let me pull that 00:27
will git pull bring the latest changes in embed_api branch? 00:29
whiteknight in my fork, yes 00:31
bluescreen you still using your fork, I thought you'll jump to the main parrot repo 00:35
cotto ~~
whiteknight hah, silly me. I was not calling Parrot_runcode() in Parrot_api_run_bytecode 00:37
of course nothing will run if I don't include the command 00:39
bluescreen: I just pushed a fix 00:41
00:41 kid51 left
whiteknight miniparrot builds and runs fine. parrot.exe fails on some linker error 00:41
bluescreen getting really closer 00:42
whiteknight actually, wait. parrot.exe does build
I didn't tell the build to go any further
yep. parrot executable builds and runs fine 00:44
What I didn't get fixed yet is adding in the library search paths from the config hash, since I need to do the library paths in two stages now 00:45
so the build is failing later, because it can't find files
00:45 bluescreen left
whiteknight ...and there's a segfault in Parrot_exit 00:45
blah
00:46 bluescreen joined, bluescreen left 00:47 bluescreen joined, bluescreen left, bluescreen joined 00:49 bluescreen left, bluescreen joined 01:00 dmalcolm left 01:04 davidfetter joined
bluescreen whiteknight: by any chance, did you miss checking in src/pmc.c? 01:16
whiteknight ah, I may have
pushed 01:17
bluescreen I wish i had same support for other software ... :D
whiteknight what other software? 01:19
bluescreen every single one of them... 01:20
whiteknight :)
bluescreen stupid gcc interprets a ";" as a line of code and throw the "mixed code-declaration error" 01:22
whiteknight damnit 01:23
bluescreen yeah, the EMBED_API_CALLIN has an extra ;
whiteknight really? weird
bluescreen i mean the macro is ok 01:24
but since it ends with "{"
and in the code you add an "..CALLIN(....);" it endup being {;
and that is sufficient to make compiler croak about it
whiteknight stupid gcc
blah, I dont build with gcc so I didn't see that error 01:25
bluescreen parrot does build .. and seems to be running
llvm?
whiteknight llvm? 01:26
bluescreen i meant what compiler are you using?
whiteknight clang 01:27
bluescreen thats part of llvm project
01:28 kid51 joined
whiteknight right 01:28
plobsing anyone remember when we got rid of the cgoto core? 01:31
kid51 plobsing: Trac search for 'cgoto core' suggests this: trac.parrot.org/parrot/changeset/45949 01:33
cotto looks right to me 01:34
plobsing kid51++
davidfetter dukeleto, ping 02:02
dukeleto davidfetter: pooooong 02:03
davidfetter dukeleto, so let's imagine i want to do something super crazy like add on a new PL. said PL need not take arguments, and could live with needing to return exactly one specific data type like int4 02:08
what do i need to do?
02:09 whiteknight left
dukeleto davidfetter: read the source of PL/Parrot 02:14
davidfetter , suitably chastened, Rs TFS 02:20
dukeleto it is a fine, fine source. 02:32
02:36 rurban_ joined 02:39 rurban left, rurban_ is now known as rurban 02:41 jjore left 02:42 Andy left, jjore joined 03:11 Andy joined
dalek rrot: 3e86e42 | jkeenan++ | / (42 files):
Merge branch 'master' of git@github.com:parrot/parrot
03:23
rrot: 9509f35 | jkeenan++ | / (2 files):
Use cc_run_capture() instead of cc_run() to capture error output. Correct
dukeleto Microsoft just got another 882 patents out of the Novell buyout: www.readwriteweb.com/enterprise/201...chmate.php 03:26
davidfetter aloha, seen gerd 03:30
aloha davidfetter: gerd was last seen in #parrot 5 days 2 hours ago joining the channel.
davidfetter hrm
03:31 kid51 left
dukeleto davidfetter: he is pretty active by email 03:42
03:42 bluescreen left
davidfetter k 03:45
davidfetter thinking that some QA step, probably at the Fedora project, didn't go quite right
dukeleto davidfetter: nope 03:47
davidfetter: which Rakudo is the fedora package using?
davidfetter nope, i'm wrong about my QA hypothesis, or nope, it didn't go quite right? 03:48
dukeleto davidfetter: is it using Rakudo Star?
davidfetter: nope, you are correct that someone attempted to mate with a chicken
davidfetter perl6 --version
This is Rakudo Perl 6, version 2010.09 built on parrot 2.8.0
Copyright 2008-2010, The Perl Foundation
rpm -qf $(which perl6)
rakudo-star-0.0.2010.09_2.8.0-1.fc14.i686 03:49
dukeleto davidfetter: too new for current PL/Parrot
davidfetter something should have noticed that :(
dukeleto davidfetter: i am not sure the last version that worked, but i would bump it back a release of rakudo star and see if it works
davidfetter: my test suite did
davidfetter: evidentally their QA process didn't run the test suite
davidfetter i'm sure it wasn't an issue on your end
dukeleto davidfetter: probably because it requires postgres to be installed 03:50
davidfetter and?
dukeleto davidfetter: it could be, but i know that my test suite pegs a cpu and coredump postgres with newer Rakudos
davidfetter: so obviously someone didn't run it
davidfetter yeah, that's about what happned here
happened*
it crashes the backend. doesn't crash the postmaster, though 03:51
dukeleto davidfetter: if you can provide me with debug info, like exactly what code is making that happen, perhaps i can fix it
davidfetter: nothing in PL/parrot should crash a postmaster
davidfetter CREATE OR REPLACE FUNCTION test_fibonacci_plperl6(integer) RETURNS int LANGUAGE plperl6 AS $$
(*@_) {
my $limit = @_[0];
[+] (1, 1, *+* ... $limit)
}
$$;
dukeleto davidfetter: PL/s can't crash the postmaster
davidfetter: unless they try *really* hard :)
davidfetter i bet untrusted ones can ;)
dukeleto davidfetter: i understand that tests makes the bug happen. But I need to know what happens when it is actually run 03:52
davidfetter for example, by sending SIGKILL to something
no, i wasn't running the tests
i ran that by itself
dukeleto davidfetter: i imagine PL/Parrot is returning something invalid to Postgres, and then postgres starts eating rocks
davidfetter: i actually don't know if the bug is in Parrot or Rakudo, but PL/PIR is not effected. Only PL/Perl6 03:53
davidfetter: i assumem Rakudo changed something, since they change a lot faster than Parrot
davidfetter something buggered up QA for fair 03:54
dukeleto davidfetter: do you get a coredump? 03:55
davidfetter: a backtrace might be helpful
davidfetter hrm. where would a core dump appear? and if they're not set to appear, how would i arrange it so they do? 03:56
dukeleto davidfetter: in $PGDATA 03:57
davidfetter: ulimit -c unlimited, before you start postgres
davidfetter: or restart after you have done the ulimit
davidfetter just -c? no further arguments? 03:58
dukeleto "ulimit -c unlimited" 04:01
davidfetter waits for the command to blow up the backend 04:03
dukeleto davidfetter: yeah, it seems to take a bit
davidfetter hrm. i'm not seeing a core dump. what would it be called?
dukeleto it might not coredump 04:06
davidfetter: are you sure your postgres was started after you did the ulimit?
davidfetter yep 04:07
fetter:postgres:~/data ulimit
unlimited
fetter:postgres:~/data pg_ctl restart
waiting for server to shut down.... done
server stopped
server starting
ok, if it doesn't dump core, what's the next thing to try? 04:09
dukeleto sadface. 04:24
davidfetter: yeah, it doesn't coredump on my machine either :) But now you know how to allow for coredumps. Very useful. 04:25
davidfetter: add debugging statements to plparrot.c and figure out exactly which line is causing the the CPU-pegging
davidfetter: with that info, i can probably figure out what is wrong
davidfetter: there is a debug() macro that does an elog()
davidfetter k 04:26
dukeleto davidfetter: use that
davidfetter kinda needs to work on tomorrows preso, which isn't this :/
it's on trees in SQL
dukeleto "Until the dolphin flies and parrots live at sea..." -- Stevie Wonder, "As" 04:28
davidfetter: you asked questions, I answer them. 04:29
davidfetter: don't ask me questions you don't want answers to ;)
davidfetter and i appreciate, as always, your patience with my pointy-haired ignorance
dukeleto davidfetter: is there a tree datatype in pg now?
davidfetter depends what you mean. there's XML, but i'm not talking about that 04:30
there are recursive Common Table Expressions (think query-time views). i'm talking about those 04:31
dukeleto davidfetter: when you say "tree" i think of a directed acyclic graph (DAG), is that what you are talking about? 04:32
davidfetter: i have no clue what a "query-time view" is
davidfetter yes
WITH RECURSIVE t(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM t WHERE i < 10)SELECT * FROM t; 04:33
that's a CTE :)
a recursive one, even
dukeleto spiffy. 04:43
dalek TT #1822 closed by dukeleto++: get_bool VTABLE not defined on a SockAddr 05:01
TT #1822: trac.parrot.org/parrot/ticket/1822
bacek_at_work seen tcurtis 05:51
aloha tcurtis was last seen in #parrot 4 days 2 hours ago joining the channel.
bacek_at_work msg tcurtis what's required to merge gsoc_past_optimizations?
aloha OK. I'll deliver the message.
dukeleto bacek_at_work: yes, i would like to see that happen 05:52
dalek rrot: 7592f8a | petdance++ | src/gc/fixed_allocator.c:
Removed unused pointer *ret
06:01
bacek_at_work better to ask for excuse... 06:14
06:15 stilgar joined
dalek rrot/gsoc_past_optimization: 4f3a3ac | dukeleto++ | t/pmc/boolean.t:
[pmc] Add tests for converting Boolean PMC to a numeric, which should bring the coverage up to 100%
06:18
rrot/gsoc_past_optimization: 9d32b3d | dukeleto++ | t/pmc/socket.t:
[t] Add a test for cloning a Socket PMC
rrot/gsoc_past_optimization: 3dc37d9 | dukeleto++ | t/pmc/socket.t:
[t] Add a test for cloning a Socket PMC
rrot/gsoc_past_optimization: ddf075a | dukeleto++ | / (2 files):
[t] More tests for Socket PMCs, including one TODO test for cloning a Socket
rrot/gsoc_past_optimization: 44b7807 | dukeleto++ | / (2 files):
[t] More tests for Socket PMCs, including one TODO test for cloning a Socket
rrot/gsoc_past_optimization: 3d6ced4 | dukeleto++ | t/pmc/socket.t:
[t] Add tests for creating TCP and UDP sockets
rrot/gsoc_past_optimization: 5f984d6 | dukeleto++ | t/pmc/socket.t:
[t] Add tests for creating TCP and UDP sockets
rrot/gsoc_past_optimization: 815fc78 | (James E Keenan (Jim))++ | / (3 files):
Merge tt1810_missing_step_tests branch into trunk. Only report missing step tests when --test or --test=build is used.
rrot/gsoc_past_optimization: d389c87 | (James E Keenan (Jim))++ | / (3 files):
Merge tt1810_missing_step_tests branch into trunk. Only report missing step tests when --test or --test=build is used.
06:19
rrot/gsoc_past_optimization: a751cfd | dukeleto++ | t/pmc/socket.t:
[t] Add some tests for closing Sockets
rrot/gsoc_past_optimization: d0336b1 | dukeleto++ | t/pmc/socket.t:
[t] Add some tests for closing Sockets
rrot/gsoc_past_optimization: 614d420 | dukeleto++ | NEWS:
[doc] Give NEWS some love
rrot/gsoc_past_optimization: db72897 | dukeleto++ | NEWS:
[doc] Give NEWS some love
rrot/gsoc_past_optimization: 00f1f32 | dukeleto++ | t/pmc/socket.t:
[t] Add tests for creating raw TCP and UDP sockets
rrot/gsoc_past_optimization: 5ec1ea6 | dukeleto++ | t/pmc/socket.t:
[t] Add tests for creating raw TCP and UDP sockets
rrot/gsoc_past_optimization: c66d320 | dukeleto++ | t/pmc/socket.t:
[t] Add tests for creating IPv6 sockets
rrot/gsoc_past_optimization: eee6dd7 | dukeleto++ | t/pmc/socket.t:
[t] Add tests for creating IPv6 sockets
rrot/gsoc_past_optimization: 124b6fa | dukeleto++ | t/pmc/sockaddr.t:
[t] Add a TODO test for get_bool on a SockAddr PMC
rrot/gsoc_past_optimization: 2e8a58b | dukeleto++ | t/pmc/sockaddr.t:
[t] Add a TODO test for get_bool on a SockAddr PMC
rrot/gsoc_past_optimization: 0c9fde4 | dukeleto++ | docs/pdds/pdd22_io.pod:
[pdd] Fix a fib in PDD22 about get_bool on a Socket
rrot/gsoc_past_optimization: e7c797c | dukeleto++ | docs/pdds/pdd22_io.pod:
[pdd] Fix a fib in PDD22 about get_bool on a Socket
rrot/gsoc_past_optimization: df768c6 | cotto++ | NEWS:
[NEWS] add PCore improvements to the news
rrot/gsoc_past_optimization: 04dc999 | cotto++ | NEWS:
[NEWS] add PCore improvements to the news
rrot/gsoc_past_optimization: 435f5f6 | dukeleto++ | t/tools/mk_language_shell.t:
[t] Improve diagnostic messages in tests for mk_language_shell.t
rrot/gsoc_past_optimization: a3b8187 | dukeleto++ | t/tools/mk_language_shell.t:
[t] Improve diagnostic messages in tests for mk_language_shell.t
rrot/gsoc_past_optimization: 1ff59b4 | dukeleto++ | config/gen/makefiles/root.in:
[t][TT#1823] Always create src/install_config.o, so that mk_language_shell and create_language can be used without installing Parrot
rrot/gsoc_past_optimization: e3eb6f9 | dukeleto++ | config/gen/makefiles/root.in:
[t][TT#1823] Always create src/install_config.o, so that mk_language_shell and create_language can be used without installing Parrot
rrot/gsoc_past_optimization: 75fde0d | dukeleto++ | NEWS:
[doc] Add note to NEWS about scripts no longer requiring an installed parrot
rrot/gsoc_past_optimization: 78eb90e | dukeleto++ | NEWS:
[doc] Add note to NEWS about scripts no longer requiring an installed parrot
06:20
rrot/gsoc_past_optimization: 9275498 | nwellnhof++ | / (17 files):
[t] Convert most unicode:"" string literals to utf8:""
rrot/gsoc_past_optimization: ebc3c2c | nwellnhof++ | / (17 files):
[t] Convert most unicode:"" string literals to utf8:""
rrot/gsoc_past_optimization: d4e2ec8 | nwellnhof++ | src/ (2 files):
[src] Show string encoding in pbc_dump and pbc_disassemble
parrot/gsoc_past_optimization: 675d90b | nwellnhof++ | src/ (2 files):
parrot/gsoc_past_optimization: [src] Show string encoding in pbc_dump and pbc_disassemble
06:20 dalek left
cotto we ought to get that bot looked at 06:24
sorear some "bacek@bacek.com" guy just sent a 0.5 MB commit packet to dalek 06:28
I don't blame dalek for displaying what it's given
06:29 pmichaud_ left 06:33 silug left 06:34 pmichaud joined 06:39 dalek joined
cotto Who is this mysterious "bacek@bacek.com" character? I guess it will remain a mystery. 06:40
plobsing at least he didn't get any karma before dalek died
precious precious karma 06:41
dalek rrot: 12740ed | petdance++ | src/pmc/boolean.pmc:
consting two local vars
06:51
bacek bah! 06:56
dukeleto bacek: did you merge master into gsoc_past_optimization ? 07:01
bacek dukeleto, yes. It was only 2 conflicts.
dukeleto, guess in which files? 07:02
07:07 bacek_ joined
cotto bacek, any time you have a question, "PIRATE" is the magic word to get a +1 from me. 07:08
It doesn't even have to be related to Parrot. 07:09
You could ask for a PIRATE beer and I'd probably try to find you one. 07:11
pmichaud, ping 07:12
07:12 bacek left 07:15 baest left, bacek_ is now known as bacek 07:19 zby__ joined 07:21 zby_ left
bacek cotto, I reviewed diff with master. gsoc_past_optimization is pretty much self-contained and doesn't affect other parrot's systems. 07:24
cotto bacek, that's not surprising.
dalek rrot/gsoc_past_optimization: 7592f8a | petdance++ | src/gc/fixed_allocator.c:
Removed unused pointer *ret
07:25
rrot/gsoc_past_optimization: 12740ed | petdance++ | src/pmc/boolean.pmc:
consting two local vars
rrot/gsoc_past_optimization: 71b19e4 | bacek++ | / (19 files):
Merge branch 'master' of github.com:parrot/parrot
rrot/gsoc_past_optimization: c6834a7 | bacek++ | / (33 files):
Merge branch 'master' into gsoc_past_optimization
rrot/gsoc_past_optimization: 0f2da8e | bacek++ | MANIFEST.SKIP:
Regenerate MANIFEST.*
bacek More merging with master :)
cotto excellent 07:26
bacek cotto, can you bring tomorrow to #ps? I probably will not attend. Early meeting at $work 07:27
cotto bacek, bring what?
bacek ah. question of merging past_optimization 07:28
My brainz are filing after 6 hours of meetings.
cotto sure
msg cotto_work ask about merging past_optimization at #ps
aloha OK. I'll deliver the message.
bacek sigh. 07:38
msg plobsing What happened to PackfileFixupTable? 07:39
aloha OK. I'll deliver the message.
plobsing bacek: fixup tables no longer exist 07:40
bacek plobsing, nice. Can you update examples/pir/make_hello_pbc.pir?
plobsing not to the point where it works. packfile pmcs aren't working ATM. 07:41
bacek plobsing, how so? They were working not a long time ago. 07:42
plobsing dynop mapping broke them. I'm pretty sure they haven't been fixed since
bacek ooookey.
So, we don't need FixupTable/FixupEntry anymore? 07:43
plobsing nope
bacek Just add Sub to PackfileConstants will work?
plobsing yep 07:44
all constants are equals now
bacek Excellent!
plobsing++ # removing dark magick
Erm. And freezing on Interpet as first thing gone as well? 07:45
plobsing yes. just did that one in last week.
don't do it now, it'll throw exceptions at you 07:46
bacek I've got this exception.
cotto bacek, my opmap_pmcs branch attempts to update the PMCs to use/generate an op map, but I'm currently stuck on debugging. 07:51
You could hard-code a fixed op map, though that'd be pretty magical.
examples/pir/make_hello_pbc.pir in opmap_aware_pmcs shows the pir-level interface I'm aiming toward 07:54
bacek cotto, I mostly done updating make_hello_pbc. Just got segfaults on running generated pbc. 08:01
Ok. We do need PackfileBytecode PMC now. 08:04
plobsing yes, bytecode has a structured header now
bacek plobsing, yes. I can see it. 08:05
plobsing to keep track of the op mapping, and after the interp-freeze changes, to keep track of non-dynop .loadlibs as well
bacek plobsing, can you update docs/pdds/pdd13_bytecode.pod to reflect changes in ConstTable and Bytecode please? 08:07
cotto I'm off to bed. 08:08
'night
plobsing I can try. those things are terribly out of date and unreliable.
08:16 theory left 08:19 fperrad joined
dalek tracwiki: v4 | plobsing++ | PlobsingTaskList 08:30
tracwiki: trac.parrot.org/parrot/wiki/Plobsin...ction=diff
08:41 bacek left, bacek joined
bacek msg cotto You misunderstand Packfile*.get_pointer. It shouldn't pack by itself. It should just create PackFile_ByteCode. 08:49
aloha OK. I'll deliver the message.
08:51 contingencyplan left 08:55 slavorgn left
dalek a: ca69c2d | plobsing++ | lua/PASTGrammar.tg:
use PGE;Util;line_number in place of CodeString.lineof
08:57
a: e81ed49 | plobsing++ | lua/lib/luaregex.pir:
update to upstream PGE;Expr changes

PGE;Expr now uses StringBuilder in stead of CodeString
a: 6394a0e | plobsing++ | lua/lib/luaregex.pir:
update for upstream Perl6Regex changes

StringBuilder is now used in stead of CodeString
09:30 bacek left 10:02 bacek joined
bacek msg cotto opmap_aware_pmcs doesn't worth finishing with current PackFile_* vs Packfile PMC approach. Better to focus on "GCable Packfiles" and get rid of all PackFile_* stuff all together. 10:10
aloha OK. I'll deliver the message.
10:37 rurban_ joined 10:39 rurban left, rurban_ is now known as rurban 10:49 bacek left
dalek TT #1864 created by bacek++: [RFC] Change coding standard to avoid 2 space outdent. 10:56
TT #1864: trac.parrot.org/parrot/ticket/1864
11:02 bacek joined 11:21 Patterner left
dalek TT #1859 closed by jkeenan++: 'make realclean' fails to remove release tarballs 12:01
TT #1859: trac.parrot.org/parrot/ticket/1859
12:33 ambs joined 12:42 bacek left
Coke would reject 1859 as wontfix. 12:59
Coke is too slow, however. 13:00
moritz if one wants a really thorough realclean, git clean -xdff exists :-) 13:01
13:03 kid51 joined
Coke seems like "make gitclean" for that would be helpful. 13:07
isn't there an make "svn<foo>" target?
13:11 darbelo joined 13:14 kid51 left 13:16 darbelo left 13:17 whiteknight joined 13:30 jan left, bluescreen joined 13:32 jan joined
whiteknight good morning, #parrot 13:35
13:37 darbelo joined
dalek TT #1865 created by ronaldws++: Allow more windows environments with git to work correctly with build ... 13:38
TT #1865: trac.parrot.org/parrot/ticket/1865
13:42 darbelo left, darbelo joined
bluescreen good morning 13:49
tadzik good morning 13:50
13:51 contingencyplan joined
Coke ~~ 13:52
darbelo o/ 13:55
whiteknight bluescreen: I think I have the library paths issue fixed this morning, but I need time to test it more and to push it
good morning, tadzik and Coke
bluescreen very good, after that we should be ready to run make test 13:58
whiteknight: I've tried the query for Trac i sent you yesterday in a local SQLite db and worked, so I'm thinking that there must be a limitation in custom queries 14:00
whiteknight bluescreen: yeah, that's possible. I am not very familiar with Trac's DB or queries 14:05
bluescreen neither do I... I'm going to install a local copy a do more tests
dalek TT #548 closed by whiteknight++: Error handling in socket system 14:10
TT #548: trac.parrot.org/parrot/ticket/548
14:11 ambs left
whiteknight we are now down below 50 open RFC tickets 14:14
bluescreen are you personally reviewing each one of them? 14:16
whiteknight sort of 14:17
I'm looking at the ones whose titles look like things I can manage
14:18 dngor left
dalek TT #1866 created by jimmy++: Build parrot failed with PANIC on windows XP 32bit with strawberry perl 14:27
TT #1866: trac.parrot.org/parrot/ticket/1866
14:29 bluescreen left, bluescreen joined
whiteknight has a LOT of questions to ask at #ps 14:32
I may have to save some of them for next week
atrodo Ooooh, exciting
14:33 bluescreen left, bluescreen joined
whiteknight I really want to get DEPRECATED.pod cut in half in terms of size and number of entries by 3.0 14:34
much of that work is evaluating several items marked "experimental"
14:40 bluescreen left, bluescreen joined 14:42 Andy left, bluescreen left, bluescreen joined 14:44 bluescreen left
Coke (closing tickets because no one commented on them)-- 14:58
(closing tickets because they are invalid/not relevant)++ 14:59
NotFound Coke: if no one comment on Request For Comments, the it's irrelevant. 15:00
s/the/then
sjn (complex topics that can't be described in one word but still deserve a karma readjustment)--
szbalint I close tickets all the time because of lack of response. But that's for issues I can't reproduce and the reporter has disappeared and I suspect it's a PEBKAC issue. 15:01
sjn warnocks dilemma: the bugtracker edition
szbalint sjn++ 15:02
(I usually allow a couple of months for response though)
moritz would love a "silently close this ticket if no comment added within $n weeks/months" function in RT 15:04
sjn would rather see a "warning: this bug needs some attention" mail after some weeks 15:05
moritz the two are not mutually exclusive :-)
sjn (e.g. "hey, maybe you should raise this issue on the mailing list and other fora?)
"
NotFound "Maybe you should do whatever you want, given that no one cares" 15:06
Coke NotFound: I think RFCs in general need to be decided upon. "Allison was Busy" is not a good reason to drop a request on the floor. 15:07
15:08 dngor joined
NotFound Coke: after several months, even the author doesn't know what the issue is/was. 15:09
whiteknight Keeping around a huge muddy list of open tickets simply because they haven't been addressed yet isn't really good either 15:10
the list of open tickets, especially tickets without owners, is unmanagably large. People can't find tickets that need to be addressed
RFCs that attract no comments in several months and are not pressing issues are just taking up space 15:11
Coke Throwing things on the floor because we are bad at managing tickets is not a good plan.
NotFound BTW I don't think a ticket is a good place to put recommendations for reading papers or evaulating libraries.
whiteknight Keeping things off the floor forever when they have questionable value and no interest is not a good plan either
Notfound: that's probably true too 15:12
Coke if a ticket is rejectable, reject it.
atrodo What you need is a bigger floor...
whiteknight I have been
Coke if a ticket is OLD, triage it.
whiteknight many old tickets are rejectable
Coke OLD NEQ REJECTABLE
moritz if a ticket is too vague to be closable, request clarification
Coke yes. I am arguing that old is not a sufficient condition.
moritz if no clarification comes, reject
Coke: agreed
whiteknight old is not sufficient, but in many cases it plays a very large part 15:13
NotFound Die, old ticket, die!
Coke disagree.
dalek nxed: r687 | NotFound++ | trunk/winxedst1.winxed:
simplify a bit and improve generated code in operator *
15:15
15:15 dmalcolm joined, bluescreen joined 15:21 Psyche^ joined, Psyche^ is now known as Patterner
dalek nxed: r688 | NotFound++ | trunk/winxedst1.winxed:
method Emit.emitmul
15:26
15:38 PerlJam left, PerlJam joined 15:39 bluescreen left
dalek p-rx/nomnom: 60d7e50 | (Solomon Foster)++ | src/HLL/Compiler.pm:
Break HLL::Compiler away from PCT::HLLCompiler.
15:40
p-rx/nomnom: e18ba58 | (Solomon Foster)++ | src/NQP/Compiler.pir:
Try to fix code to use the new @!cmdoptions, but apparently the original code was broken and so the fix does nothing useful.
15:45 bluescreen joined
dalek TT #1450 closed by whiteknight++: Improve handling of experimental features 15:48
TT #1450: trac.parrot.org/parrot/ticket/1450
15:49 bluescreen left 15:52 bluescreen joined 15:55 bluescreen left 15:58 bluescreen joined 16:00 bluescreen left 16:07 bluescreen joined 16:08 theory joined, Andy joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#1284) fulltest) at 12740ed - Ubuntu 10.10 i386 (g++-4.5) 16:11
Andy anyone heard of goanna? 16:12
16:12 bluescreen left
whiteknight Andy: never heard of him 16:16
Andy It's a static analysis tool. 16:20
Someone on mongodb is using it
and you know how I love the static analysis tools.
whiteknight Andy: if it's worthwhile, we could get some other devs involved. you be interested in running some tests? 16:25
if the tool turns out to be worth using, it should be easy to sell it to the other parrot devs 16:26
Andy I always am.
Turns out it's commercial.
whiteknight oh
Andy At one point we had Klocwork and Coverity doing scans for us.
but haven't heard from them in forever.
whiteknight no, me either 16:27
I don't know who was in charge of that
Coke I would ping chromatic & particle about Coverity
Klocwork rings no bells except for a sly cooper soundalike. 16:28
whiteknight msg cotto I accepted a student for one of the GCI tasks you are mentoring. I was hoping I could become the mentor myself but it assigned it to you. Anyway...you might want to go look at whatever I signed you up for :) 16:30
aloha OK. I'll deliver the message.
NotFound whiteknight: TT #85: I don't think that the ability to set the current HLL from embedding is something desirable.
Andy Coke: I pinged both Coverity and Klocwork myself.
and heard nothing back.
NotFound In fact, I think the "current HLL" concept is wrong. 16:31
Coke Do you have a ticket open with what you think the /right/ HLL concept is? 16:32
NotFound A context, a Sub has an associated HLL... but the interpreter hasn't.
Coke: we have a repository with it. 16:35
In fact, there is no current_HLL member in the interpreter right now. 16:38
whiteknight NotFound: We can work out the details later, but we do need a way to interact with HLLs from embedded code 16:42
NotFound whiteknight: surely messing with whatever the current context is using is not a good way.
whiteknight no, you're right about that 16:45
but when we are doing symbol lookups, we need to be able to specify the HLL as part of the lookup path
we need to be able to create an HLL and insert things into it
NotFound whiteknight: yeah, I only disagree with the "current" part. 16:46
whiteknight okay, forget I said that word. I take it back
16:49 jsut_ joined
dalek TT #149 closed by whiteknight++: Add capability for trying different library names to DBDI::SQLite3 16:53
TT #149: trac.parrot.org/parrot/ticket/149
16:54 jsut left 16:56 plobsing left, slavorgn joined 17:07 hercynium joined 17:30 Andy left
dukeleto 'ello 17:33
cotto hi dukeleto 17:34
is portland shut down too?
whiteknight portland shut down? 17:35
allison it's certainly snowy
but I don't know if it's going to stick 17:36
I hear it's 3.5 inches in Seattle? schools closed?
here in portland it looks more like .5 inches, and a soggy half inch at that
cotto allison, some snow, lots of ice. Officials are telling people to stay home. 17:37
allison cotto: my son is thrilled at no school today :)
cotto My prius and I are inclined to agree.
allison cotto: personally I'm just hoping the black ice clears before I drive up on thursday :) 17:38
cotto too
dukeleto cotto: nah, just a tiny bit of snow on the ground
cotto It's a good day for Parrot hacking. 17:39
whiteknight it's always a good day for parrot hacking
atrodo Wow, and it's a beautiful fall day here in Ohio
whiteknight atrodo: whereabouts in Ohio? 17:40
atrodo whiteknight> Cincinnati
whiteknight oh nice
Coke awesome here in albany. 50s, only a bit of rain earlier.
whiteknight It's in the 50s here which is nice except some of my coworkers insist on keeping their windows open 17:41
atrodo 50s is a good temperature for outdoors, really bad for indoors 17:42
17:44 macroz joined
NotFound Pesky Farenheit... 17:46
cotto bacek_at_work, ping 17:55
aloha, clock?
aloha cotto: cotto: LAX: Tue, 09:55 PST / CHI: Tue, 11:55 CST / NYC: Tue, 12:55 EST / UTC: Tue, 17:55 UTC / LON: Tue, 17:55 GMT / BER: Tue, 18:55 CET / TOK: Wed, 02:55 JST / SYD: Wed, 04:55 EST
18:23 lucian joined 18:37 rurban_ joined 18:39 rurban left, rurban_ is now known as rurban 18:53 bacek joined
dukeleto is back 18:56
atrodo: very cool benchmarking stuff. Tool::Bench has it's first user! 18:57
atrodo: i am very excited
atrodo: i haven't looked at the code yet
atrodo: ;)
atrodo dukeleto> Not a whole lot to it at this point. Half of the example script got "recycled"
cotto atrodo, that's very environmentally friendly of you 18:59
atrodo cotto> Hey, every bit helps
Coke is there a way to tell a git clone to lose any local commits and just be a fresh clone again?
atrodo dukeleto> It actually works out pretty well. The idea for submissions is to submit JSON 19:00
whiteknight Coke: git reset --hard? 19:01
dukeleto whiteknight: no 19:05
whiteknight git reset --goddamnit?
dukeleto whiteknight: but maybe. Not recommened "git reset --hard" unless you know exactly what is up. That command can delete uncommitted changes
Coke: you have local commits and want to reset to what origin has?
dukeleto can't type today, evidently 19:06
s/Not recommened/Don't recommend/
Coke: do a "git fetch" to make sure you have the latest copy of origin
Coke: make sure you have no uncommitted files in your directory, then you can "git reset --hard origin/master" 19:08
Coke: but if you have uncommitted files, there are other ways, that are more commands, but safer
Coke dukeleto: in that case, doing a fresh clone is probably just easier. Danke. 19:09
dukeleto Coke: you can do "git branch -m master old_master" to rename the master branch. Then do a "git checkout -b master origin/master"
Coke: up to you. The more you learn the less work you will have for yourself in the future.
19:18 Coke left, Coke joined 19:25 dngor_ joined
cotto bacek_at_work, ping 19:26
19:29 dngor left
cotto aloha, clock? 19:29
aloha cotto: cotto: LAX: Tue, 11:29 PST / CHI: Tue, 13:29 CST / NYC: Tue, 14:29 EST / UTC: Tue, 19:29 UTC / LON: Tue, 19:29 GMT / BER: Tue, 20:29 CET / TOK: Wed, 04:29 JST / SYD: Wed, 06:29 EST
19:31 tcurtis joined
whiteknight Do we have a cafepress store, or an equivalent? 19:32
I know the rakudo folks do
dukeleto whiteknight: not that I know of 19:34
cotto #ps in 56
bacek good morning, humans 19:36
19:36 dngor_ is now known as dngor
bacek cotto, pong 19:36
Coke I thought we did ages ago.
probably a link to it buried in the old parrotcode svn web site source.
whiteknight we should have one 19:37
Coke: where does one get their hands on that source?
bacek++ 19:38
In fact, I think you should get one karma for every % performance improvement on Rakudo
bacek whiteknight, :) 19:39
Util bacek++ # Whoohoo!
cotto bacek, could you clarify what you think the packfile PMCs should look like?
bacek there is some brokage of rakudo according to moritz++... I couldn't reproduce them.
whiteknight yeah, but is it breaking *fast*?
Coke whiteknight: I'm not sure it even exists anymore. it would hark back to the days when parrotcode.org and dev.perl.org/perl6/ were the primary websites.
whiteknight :)
cotto I'm not sure if you're thinking the same thing as plobsing (thin wrappers around structs) or the opposite (totally PMC-based). 19:40
Coke I'm trying to find the old svn url.
bacek cotto, currently Packfile PMCs recreate PackFile_* structs for pack.
cotto Sure.
whiteknight tcurtis++
bacek cotto, I'm thinking in opposite direction - get rid of PackFile_* structs and use only PMCs. 19:41
cotto Ah, so the opposite of plobsing's recommendation then.
whiteknight cotto, bacek: The embedding API isn't going to use PackFile structs. It will only use PMCs. At the moment I am using an UnManagedStruct PMC with a pointer to a PackFile, but I feel like that's stupid
Coke whiteknight: yah, looks like it's long gone.
whiteknight Coke: okay, that's what I figured 19:42
bacek cotto, with this approach we violate DRY principle. Especially for ByteCode op mapping.
moritz bacek: somebody else has reproduced it on amd64 too 19:43
bacek moritz, ok. I'll try again.
whiteknight Has anybody seen this: www.amazon.com/Register-Based-Virtu...1155681894 19:44
bacek moritz, I suspect that branch revealed some oddness inside parrot.
PerlJam whiteknight: now *that* looks like vaporware to me. 19:45
19:47 nwellnhof joined
whiteknight I think I may set up a store soon. Anybody have any preferences? Cafepress? The Rakudo folks seem to be using Zazzle 19:47
cotto bacek, have you thought about how we'd get from where we are now with the PackFile_* structs to a fully PMC-based packfile implementation?
and what about speed? 19:48
bacek cotto, just start it, do it, finish it.
speed will be same. We can still extract valuable raw data (e.g. constants) for use in hot-path.
Util rakudo.de/ says: Rakudo and Perl 6 T-shirts are available from spreadshirt, Cafepress and Zazzle. 19:49
cotto There's some charm in that approach, though it'll mean a lot of refactoring.
bacek, one thing that worries me is that with the current state of the packfile PMCs, we can't make such a change incrementally 19:50
bacek cotto, nope. It's quite similar to moving Context from ref-counts to PMCs. Whole lot at once. 19:51
whiteknight Util: Oh, I didn't know they had multiple stores 19:52
cotto Having a singe packfile implementation would be very nice.
whiteknight I'm looking at printfection.com now. It looks like they have a lot more merchandise options than other places do
cotto doing it all at once, not so much
whiteknight a single packfile implementation would be very nice, yes 19:53
we wouldn't really do it all at once. First step would be to encapsulate what we have properly. After that, we replace the internals
same as happens with GC
19:55 plobsing joined
cotto speaking of packfiles... 19:55
plobsing ~~
cotto hi plobsing
bacek cotto, actually we can do it incrementally. 19:56
cotto bacek, yes. I was just thinking about the mechanics of how that'd work.
bacek 1. Change parrot guts to work with Packfile PMCs in run-time.
2. Implement .unpack 19:57
3. Implement .pack
4. Switch imcc to PMC version.
Improving/changing PMCs on each step if required.
plobsing if we implement the Packfile PMCs to have the same contents as the PackFile structs do now, the conversion is almost trivial. 19:58
after that we can iterate
bacek plobsing, they were almost same when I implemented them. 19:59
plobsing they've got PMC aggregates internally. that's not good (eg: for fast constant lookup)
Util whiteknight: regarding that book, see this warning about the publisher : www.chrisrand.com/blog/index.php/20...ment-15970
whiteknight Util: ah, I've heard of companies doing things like that before 20:02
very interesting
bacek plobsing, ConstantTable? We can implement .get_pointer for F*A and extract raw data for fast lookups. 20:03
Util at 52 pages, it is probably just printouts of all the wikipedia articles listed on the group page: en.wikipedia.org/wiki/Category:Regi...l_machines 20:04
bacek or change ConstantTable to not use R*A internally.
plobsing I see the use of aggregates within aggregates to approximate datastructures as a perl-ism that doesn't necessarily translate well to C 20:05
bacek plobsing, agreed. But we can change it :) 20:06
And we are moving away from C anyway.
(May be not in this case)
plobsing actually, PBC pack/unpack and PMC freeze/thaw are (in my view) some of the first things we should move over to Lorito to prove viability 20:07
(once Lorito can emit static C)
dalek nxed: r689 | NotFound++ | trunk/winxedst (2 files):
allow multiple declarations in int, float and string statements
20:08
plobsing freeze/thaw at least can very easily be done in an HLL (see my deepclone github project done primarily in winxed)
whiteknight is it performant? 20:09
bacek for pack/unpack we need only "FixedIntSizeArray" PMC.
plobsing performant? I've never benchmarked it. I don't imagine its much slower than a C implementation. the freeze/thaw logic is pretty dumb (a good thing in my view), it mostly just dispatches to PMCs. 20:11
GeJ Bonjour everybody.
Util Hi, GeJ
whiteknight hello GeJ 20:12
plobsing bacek: for pack/unpack we want FixedIntSizeMmaped, so we don't have to copy large arrays around.
NotFound winxed users don't do benchmarks. They already know it's fast ;)
whiteknight :)
bacek plobsing, we do copy now.
whiteknight NotFound: what does Winxed output, pir or pbc?
NotFound whiteknight: pir 20:13
whiteknight damn
plobsing bacek: orly? file:line ref?
NotFound whiteknight: pbc is a too moving target.
whiteknight Notfound: is Winxed installable now? Can we get it through plumage? 20:14
bacek plobsing, pbc_merge_loadpbc
NotFound whiteknight: yes, but some command line options are missing in the installed fakecutable.
whiteknight okay
NotFound The advantage is that you don't need a C++ compiler. 20:15
bacek plobsing, Parrot_pbc_read
whiteknight NotFound: yes, a big advantage
plobsing it shouldn't be too hard to add a packfile/pbc backend to winxed once packfile pmcs become more usable
whiteknight that's what I'm hoping 20:17
NotFound I'm slowly encapsulating more details in the Emit class, in order to do that easily.
plobsing bacek: OK, fair enough.
but until then, using opcode_t* isn't too bad
bacek plobsing, anyway, it's just small details. We can implement FixedSizeIntArray with optional mmaped data for read.
whiteknight somebody was working on an MMapped byte array data type 20:18
bacek plobsing, I mostly speak about PF_fetch_opcode.
NotFound whiteknight: I'm just thinking about it, nothing written yet.
bacek and other PF_fetch_* functions which should be supported by magical FSIA PMC
whiteknight ah, okay. My memory has too many people and projects in it
plobsing bacek: as far as I'm concerned, that's already almost a vtable interface: fetch_opcode is shift_integer 20:19
its already mostly encapsulated
bacek plobsing, agreed. Let's do it! :)
darbelo JFDI++ 20:20
mikehh #ps in 10
plobsing patience. we need static C first. else how will we load the loader?
bacek FSIA.init($buf_pointer, $int_size, $is_mmaped) as star
"static C"?
plobsing as in not runtime at all
NotFound Maybe better inheritance than options.
cotto generated C
bacek I'm not talking about .pack/.unpack implemented in Lorito. 20:21
plobsing ok, I'm lost then
bacek I'm talking about "pure PMC" based implementation.
Than we can swap "hand-crafted C" with "Lorito-generated C"
In bright future. 20:22
plobsing horse--cart v-> 20:23
bacek For now - just 2 new PMCs: FSIA and FSAIiterator (modulo better name)
plobsing bacek: not terribly interested in encapsulating this further. we already need to break encapsulation for performant bytecode execution. 20:24
bacek plobsing, just .get_pointer to get raw C array to use during execution. 20:25
plobsing what I'm saying is that the interface maps naturally to a vtable interface if and when we choose to move it (which will likely happen in Lorito)
bacek Or I missed something?
plobsing it isn't really useful before that (except to increase the verbosity of hand-crafted C)
bacek it is useful. I do want PIRATE working. 20:26
plobsing you don't need that for pirate. or rather, I don't think you should be using that to make pirate work.
bacek 1. I need Packfile PMCs functional (again) 20:27
darbelo plobsing: PIRATE needs to emit PBC from PIR, that neds the Packfile PMCs.
bacek 2. Implementing PackfileByteCode* PMCs with current approach is waste of time
plobsing agree on both points. nothing prevents simply wrapping PMCs around our existing structs. 20:28
bacek 3. Switch parrot guts to use Packfile PMCs will kill 2 birds with one stone.
cotto bacek, how does this sound:
1 - rip out current packfile PMCs
2 - split packfile functions into separate files
3 - modify packfile functions into a pmc-like interface using PMCs wherever possible
4 - rewrite packfile code into PMCs
darbelo 0 - put a deprecation notice. 20:29
bacek cotto, current packfile functions already in OO style. 20:30
cotto orly
whiteknight #ps
plobsing darbelo: PackFile PMCs are experimental
cotto yes, they are
kinda
Util cotto: and so we end up with no direct C access to packfiles. Is that aspect acceptable?
plobsing also PackFile PMCs are internal-implementation-details and should be free to change whenever
using PMCs to implement our internals is a very different thing from providing an interface 20:31
bacek plobsing, we did it with CallContext already. It's doable. 20:32
plobsing agreed. I think CallContext is a great example. it's basically a struct wrapped in a PMC 20:33
NotFound Util: you can access from C via public API.
plobsing and the public C API shouldn't be exposing struct guts anyways
bacek plobsing, indeed 20:34
cotto bye bacek 20:39
20:41 stilgar left 20:47 janus left 20:48 tcurtis left 21:07 bacek left 21:13 macroz left 21:24 stilgar joined
dalek tracwiki: v5 | plobsing++ | PlobsingTaskList 21:29
tracwiki: trac.parrot.org/parrot/wiki/Plobsin...ction=diff
TT #1867 created by plobsing++: RFC: optional fakecutable preamble
TT #1867: trac.parrot.org/parrot/ticket/1867
21:32 whiteknight left
plobsing cotto: do you have a couple of minutes to discus lorito op dispatch? 21:33
cotto sure 21:34
21:34 kid51 joined
cotto I have a large number of minutes thanks to Bellevue being shut down by snow. 21:34
plobsing the paper on efficient interpreters piqued my interest. 21:35
21:35 davidfetter left
kid51 Whiteknight's Nov 20 email about the Summit may not have gotten complete distribution; it appears gmane didn't pick it up. 21:35
cotto I loved how the practical conclusion was about 5 words long.
21:36 kid51 left
darbelo IIRC some of the techniques in that paper were unlikely to benefit parrot in it current state. 21:36
plobsing I ran some profiling tests. parrot currently is not dominated by op dispatch, but lorito will most likely change that
mikehh cotto, plobsing : which paper?
cotto plobsing, agreed
darbelo mikehh: 'The structure of efficient interpreters' 21:37
cotto citeseerx.ist.psu.edu/viewdoc/downl...p;type=pdf
pdf download
plobsing a simple "count up to hugeint" benchmark runs 33% faster on cgoto than fast core (both from parrot 2.3.0)
the branch mispredict is essentially zero in cgoto and 100% in cgp and fast
cotto whiteknight's idea of aggregate ops is basically what the paper suggested as one of the methods of improving such an interpreter. 21:38
plobsing that requires a jit 21:39
we will *always* have some interpret stage
the faster we interpret, the faster we can find hotspots/traces to jit and/or op-sequences to fuse 21:40
not to mention, parrot still needs to be performant without a jit
darbelo We'll also still need a c89 compliant fallback core, for people without a sufficiently advanced compiler. 21:41
cotto darbelo, yes. I expect that the output from that core will be how we bootstrap.
or at least C-something
plobsing I have some thoughts on changes on the approach we previously had with the alternate op-dispatch strategy runcores 21:42
mikehh yeah, but what is the difference if we use more advanced features of the compiler
plobsing 1) even msvc optimizes tailcalls. we can make each op tailcall the next op, which gives essentially the same assembly as cgoto. 21:43
mikehh like ok if you gotta use c89, do this, but for the rest of us do something else
cotto mikehh, that's possible
atrodo enjoys when lorito gets talked about 21:44
darbelo mikehh: That is the approach the old runcores took. cgoto was gcc-only.
plobsing 2) choosing between op-dispatch strategies is not something users should do. we should choose the best strategy we can support for the platform in configuration and make *all* of our runcores use that dispatch strategy
cotto we could even have compiler-specific C, as long as there's a generic version too
plobsing specifically, if parrot is compiled for cgoto, slow core, profiling core, and tracing core should also be cgoto
darbelo I like that, but we should be careful about buying more permutations than we can fool people into maintaining. 21:45
plobsing this way, we don't need multiple sets of ops for different cores
darbelo I worry about the potential for "This makes test foo fail on $OBSCURE_PLATFORM when we use $VENDOR_COMPILER version X.Y.Z" 21:48
plobsing a tailcall core, even on a compiler that doesn't do TCO would be better than fast core. chicken scheme does exactly this (cheney on the m.t.a.). 21:49
cotto plobsing, interesting idea.
plobsing not sure how often we'd be longjmping and how costly that would be 21:50
21:52 darbelo left
plobsing darbelo: because we set prefered op-dispatch strategy based on platform in configure, we can always fudge obscure platforms. 21:52
aloha, msg darbelo because we set preferred op-dispatch strategy based on platform in configure, we can always fudge obscure platforms (until someone cares enough to give them some love/speed) 21:53
aloha plobsing: OK. I'll deliver the message.
21:53 stilgar left
sorear in environments that follow the Itanium[sic] C++ ABI, longjmp entails an exception unwind and is much slower than just returning from each frame 21:54
plobsing c++ can be slow. I don't care 21:55
sorear longjmp is part of the C library, though
if you have any C++ apps installed, you need a C++ aware libc
and a C++ aware libc needs a longjmp that can call destructors 21:56
plobsing the thing is, longjmp is amortized of many, many ops, each of which can have it's own split tail, which means each can be branch predicted separately
NotFound sorear: but the spec don't require anything about his speed.
plobsing I'm not trying to save on ret instructions. I'm trying to save on mispredicted call *rax instructions. 21:57
if you have perfect tco, you don't even need to longjmp. it basically boils down to "crappy compiler is crappy" 21:58
sorear ok
how do you know if the compiler is bad?
plobsing profile
sorear install a sigsegv handler and RLIMIT_STAC?
plobsing test in configure. 21:59
fudge based on platform
there's plenty of strategies
22:06 fperrad left
cotto plobsing, how would load_language 'PIR' be run without pir? 22:12
plobsing its an op
it has nothing to do with PIR (besides loading it)
you can do it from NQP which emits PBC directly 22:13
or any other PBC generator
sorear if you use parrot-pir, you get PIR autoloaded
if you use parrot-pir and tell it to save PBC, you need to write the op 22:14
cotto ok
plobsing yes. pir gets an hll executable just like everybody else
dalek TT #1868 created by plobsing++: RFC: deprecate PIR 22:17
TT #1868: trac.parrot.org/parrot/ticket/1868
plobsing decommutes 22:22
22:22 plobsing left
NotFound Note that some features of load_bytecode sould be deprecated before doing that. 22:24
22:25 TonyC left, nopaste left
sorear NotFound: What should "ch".chars be? (/me is trying again to grok perl6 CharLingua) 22:30
NotFound sorear: If I remember well, .chars is the char length. 22:33
Didn't we have an eval bot? 22:34
perl6:say("ch");
try.rakudo.org/ 22:36
say("ch".chars);
2
Yeah, .chars is the char length and .bytes is the byte length. 22:37
Util If the string was non-ascii, .bytes could be larger than .chars. 22:38
The eval bot is in the freenode/#perl6 channel 22:39
NotFound We should add some encoding were chars may be large than bytes, just to annoy some pople. 22:40
ascii binary packed as 8 chars in 7 bytes, for example 22:41
Util Hmmm. I wonder what .chars does for composed chars, like spanish vowels with ~ , that can actually be composed of two different characters
NotFound Util: in most usages is one codepoint. 22:44
Util Certainly *most*, but *all*?
NotFound If using composition, I think it will depend on using grapheme normalization or not. 22:45
Util Oh, I see. We were coming at the same joke from two different angles.
22:45 plobsing joined
Util So you want, say, Mime-64 as an encoding :) 22:46
NotFound Util: yeah, it can be useful as a counter-example against over simplifications. 22:47
But maybe it will have some speed impact in string manipulations. 22:49
23:00 davidfetter joined 23:06 nopaste joined 23:07 TonyC joined 23:19 davidfetter left
cotto allison, ping 23:41
dukeleto hola 23:47
allison cotto: pong 23:48
cotto allison, do you have any thoughts on what criteria should be used to decide what goes into Parrot and what should be external? 23:51
dukeleto cotto: the important stuff goes in core. The optional stuff doesn't. Very easy ;) 23:52
cotto So Rakudo isn't important. Got it.
allison cotto: there's not a single easy answer, but a balance of many contributing factors 23:53
cotto Sure. If there were an easy answer, I'm sure it'd be part of our tribal knowledge by now. 23:54
allison cotto: for rakudo, it was mainly two things, copyright ownership (which should be perl foundation), and pace of development (not a good fit for parrot's deprecation cycles)
cotto: same for NQP
another concern is parrot's install footprint 23:55
which is already too large
the flip side of that, is that we don't have an easy way to install parrot modules yet
quite a few things we currently ship in the tarball would be better off external, if it wasn't a pain to install them 23:56
the bare minimum that has to be in the base tarball is "any code required to compile the core interpreter" (be it static or dynamic)
the next layer is "any tools required to build a language" 23:57
which is not every possible set of tools to use in building a language 23:58
23:58 TypeNameHere_ joined
allison but, it needs to be possible to build a language on parrot with a default install 23:58
I should rephrase that: it needs to be possible to *run* a language on parrot with a default install
there may be additional tools that developers have to install to build the language 23:59
cotto but if they're using the standard toolchain, "build" also applies