Parrot 2.5.0 Released! | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | Priorities: review experimental features for promotion or removal, fix 'make html' (talk to Coke), update tutorial (talk to tcurtis), pre-release testing.
Set by moderator on 13 July 2010.
dalek rrot: r48091 | darbelo++ | branches/gsoc_nfg/src/string/api.c:
Avoid needless, roundabout transcoding operations in concatenation.
00:09
00:25 plobsing joined
tcurtis atrodo: ping 00:28
00:30 lucian joined 00:32 gbacon joined
dalek website: Chandon++ | Green Threads: The Task API 00:35
website: www.parrot.org/content/green-threads-task-api
tcurtis msg atrodo I think there's a bug in your lasm.pl's handling of comments. You get rid of them with a simple regex substitution on line 387. So, it doesn't handle # in strings(I think) or in sub names(this I know). 00:37
purl Message for atrodo stored.
00:44 theory joined
cotto_work It'd be nice to take the time to build a self-hosted lasm. 00:45
cotto_work wishes he didn't have other bigger things to do.
chromatic No kidding. 00:46
00:50 Chandon joined
ash_ ping plobsing 00:52
cotto_work I can't find plobsing in DNS, ash_. 00:53
ash_ hmm, okay....
darbelo purl_work--
ash_ wishes there was about 5~10 more hours in the day for a lot of things 00:54
cotto_work I put on my cape and purl hat.
darbelo ash_: Living on a 28 hour/day schedule is fun if you can manage it. 00:55
ash_ darbelo: i have no idea how that would work :P 00:56
darbelo xkcd.com/320/ 00:57
dalek rrot: r48092 | darbelo++ | branches/gsoc_nfg/src/string (2 files):
Minor tweaks to get the concatenation lenght right.
00:58
ash_ ah, neat
darbelo It's not an xkcd invention, but that makes for a concise explanation.
sorear 12 hour days also rule 01:00
because it turns out you only need about 2 hours of sleep dayly in that case
*and* it syncs up with day/night
ash_ that would be cool too, a 12 hour day 01:02
has a lot of breaks, so you don't get worn out as fast 01:03
jnthn The only problem in reality is if you have $real-world things to do that don't fit with your chosen day length. 01:04
cotto_work rl doesn't care what your sleep schedule is. 01:06
ash_ some of it does, like lots of government regulated places and banks are only open during "normal business hours" 01:07
cotto_work That assumes that you're awake during normal business hours. 01:09
ash_ well if you need to use one of those services, you gotta be 01:10
jnthn Here in Sweden, the shop that sells beer has very insufficient hours. :-/ 01:13
cotto_work How unfortunate.
ash_ thats no good, those should have the most hours
jnthn ash_: I've lived/been in countries where that's pretty much the case too. :-) 01:15
Though that's generally because they have very liberal "who can sell beer" policies.
ash_ my dad made his own beer for a while 01:18
01:26 payload1 joined
atrodo tcurtis> I assume you've played with it enough to discover this? 01:29
tcurtis atrodo: Not really. I've just looked at it a bit. 01:32
ash_ i wonder how hard it would be to modify obj-c to allow multiple parents... 01:34
because then you'd have a class model thats the same as parrot
atrodo okay, cool. But you're right. My haste has lead me to old, bad habits
jnthn ash_: MI is...horrible implementation wise. 01:35
ash_ why? 01:36
mro?
purl mro is, like, the Digital sitecode for Marlboro, MA or Method Resolution Order or www.python.org/2.3/mro.html or one solution to the 'Diamond Problem' at en.wikipedia.org/wiki/Diamond_problem or Method Resolution Order or a pragma, see the 5.10 docs for details
jnthn ash_: You can't build a v-table for dispatch, or do attribute storage allocation, so easily. 01:37
With single inheritance, those are trivial.
ash_: I'm working on some blog posts around that topic atm.
tcurtis jnthn: that depends on what you're implementing it on top of. If you have something like the P&W paper, it's really simple(although you probably need your lookup method to accept a flag to avoid searching parents to do nice MROs). 01:39
ash_ well... hmmm
in obj-c you can have multiple categories (p6 roles) on a single class 01:40
tcurtis jnthn: although I think the attributes might be more complicated for that. 01:41
ash_ if they can resolve those lookup conflicts why couldn't they use the same rules to resolve class inheritance?
jnthn tcurtis: Got a link to the P&W paper?
atrodo p&w?
purl p&w is tinyurl.com/23dfwut
atrodo yep, thought someone had put that in 01:42
cotto ~~ 01:43
you're welcome
jnthn Thanks.
cotto I'm really good at linking to things. ;) 01:44
tcurtis ash_: The object system in P&W doesn't know about the physical layout of the objects.
jnthn Ah
That's the part I was thinking of. :-)
tcurtis Might be able to do it by creating a wrapper object that basically holds one object of each parent "class" and delegating the appropriate methods to the appropriate object. That bit would be tricky. 01:45
jnthn tcurtis: Well, I'm pondering more a lazily pessimistic model. 01:46
tcurtis: Build the SI structure, but if there's an MI child then attempts to access things in the parent, we know that the index offset is invalid and go take the slower path. 01:47
plobsing ping ash_
ash_ plobsing: hi
purl hola, ash_.
plobsing how goes it? 01:48
ash_ good, i am working on a new nci_thunk_gen.pir (its now .nqp) that uses the new syntax and has a grammar for defining the signatures of nci thunks 01:49
i am kinda stuck on my ideas for a runcore
and i wanted to talk to you about those
plobsing ok. stuck how? 01:50
ash_ i tried building an example of the llvm-ir expanded runcore and i ran into a problem that kinda lead me into a slightly different direction 01:51
tcurtis By the way, ash_, I think protocols are closer to Perl 6 roles than categories. Categories are just a way to add methods to a class outside of its main definition. Protocols are equivalent to roles whose methods are all {...}.
ash_ so... when you run a pbc it has to inflate everything, and that was my first problem, i can't seem to figure out how the constants table is inflated in pbc's 01:52
plobsing that magic happens in src/pack{file,out}.c
after unpacking, every bytecode segment has a pointer to an associated constant table 01:53
01:54 mikehh joined, hercynium joined
ash_ i looked at those, but i couldn't figure out how to do it myself, but i think i might be going about this the wrong way... i can't tell, thats why i took a break from that and started working on the nci_thunk_gen.nqp to have n nci thunk generator that match the new syntax 01:55
s/n/a/
plobsing but why are you looking to unpack bytecode? doesn't that get done before the runcore gets a handle on it?
GeJ clock? 01:57
purl GeJ: LAX: Wed 6:57pm PDT / CHI: Wed 8:57pm CDT / NYC: Wed 9:57pm EDT / LON: Thu 2:57am BST / BER: Thu 3:57am CEST / IND: Thu 7:27am IST / TOK: Thu 10:57am JST / SYD: Thu 11:57am EST /
ash_ yeah, thats why i think i am doing it wrong, in my sample i was trying more to translate a pbc to llvm-ir, which was dumb now that i think about it
but one thing i was thinking about (kinda as a result of me doing it wrong) was, couldn't pbc_to_exe expand the runloop? 01:59
plobsing expand the runloop? like what perlcc is supposed to do? 02:00
atrodo tcurtis++ # thanks, I committed the proper way 02:01
ash_ maybe?
purl Maybe not.
ash_ i don't know what perlcc is
just thinking about it, thats all the llvm would do in the end anyways, it would turn add $I0, $I1 to an add_i_i(a, b); (more or less) 02:02
plobsing that sounds like a good idea, but I think you might run into issues with non-linear control-flow 02:03
ash_ but if you did it in, say the pbc_to_exe, you don't have the llvm requirement, granted its not as dynamic
couldn't you fallback to the normal runloop for things that might be non-linear? 02:04
tcurtis atrodo++ great.
plobsing true. but most useful programs are non-linear. loops, functions, methods, branching.
ash_ i think the llvm would run into those same problems, unless you re-compiling the runloop with the llvm every time the ops change 02:05
plobsing I suppose so. 02:06
tcurtis ash_, plobsing: if I'm understanding what ash_ is wanting to do correctly, loops/branches would be easy to encode: they'd just be gotos to labels at the same position in the expanded C code that corresponds to the PIR.
ash_ i guess thats the whole point of the hotspot techniques though, to only compile the 'hot' parts of the code
tcurtis continuation-y stuff would be harder, I expect. 02:07
plobsing tcurtis: that's all well and good, but the runloop has to have knowledge of all ops that can branch. Per the current design, any arbitrary op can in theory branch.
ash_ hmm
tcurtis plobsing: true enough. And computed gotos aren't available in C89, are they? 02:08
plobsing I think you could compile sections of ops that run linear (ops that branch are flagged as ':flow') 02:09
so you could detect branching and do some magic and then drop into native between branches 02:10
tcurtis: AFAIK, computed goto is gcc-only
ash_ yeah, i knew i would have to treat branches as special cases 02:11
branches currently just increment/decrement the op pointer 02:12
plobsing I think the old JIT played a similar game with the enternative op. 02:13
02:13 LoganLK joined
ash_ maybe i should look at the old jit 02:13
plobsing don't. you'll go blind! 02:14
ash_ lol, okay
plobsing but comming back to the idea about pbc_to_exe, I think that seems feasible. 02:15
If you want to unpack PBC, have you had a look at the Packfile* PBCs?
s/PBCs/PMCs/
ash_ yeah, they do a lot of stuff, i tried to follow it along, since mostly the constants are what you need, but i got a bit lost because of all the ways things are interconnected 02:16
i was thinking, for core ops it wouldn't be that hard, i don't know how dynamic ops would work though... i was thinking i could do those with the normal runloop when i encountered them in code 02:18
plobsing I think that's the only way it could work. 02:19
maybe you could play games with DLLs 02:20
but it would be tricky
ash_ i'd rather just get the core working first
:P
plobsing looking at the Packfile* PMCs, looks like they might be a little on the weak side for reading PBC. 02:24
You can a) use the (deprecated but still widely used) PackFile structs b) fix the weaknesses yourself c) complain loudly and frequently until someone fixes them for you 02:25
(c is my least favorite option) 02:26
02:26 notbenh1 joined
ash_ which parts of the PackFile structs are deprecated? 02:28
and how soon till they go away?
(or why are they going away?)
plobsing 1) the plan (AFAIK) is for them to be entirely replaced by the Packfile PMCs 02:29
02:29 mikehh_ joined
plobsing 2) as soon as someone rewrites all core uses of them to use the PMCs in stead 02:29
3) they aren't (easily) usable from Parrot languages 02:30
I'm not expecting to see them entirely dissapear before at least 2.9 02:31
tcurtis plobsing: I think PIRATE uses Packfile PMCs for PBC emitting. I don't know if that example would particularly applicable to reading Packfiles, though.
plobsing tcurtis: not really. emitting has been the driving force of their design. reading is sorely lagging. 02:32
ash_ emit.reverse 02:33
i'd rather use the pmc's if thats the way things are supposed to be going
plobsing PMCs are the cleaner option. The structs are the more pragmatic. 02:34
ash_ plus pbc_to_exe is already in pir, if i could stay in pir to do all of it it would be ince
nice*
plobsing sure. just know that you're wandering into yet more unexplored territory (reading PBC using Packfile* PMCs) 02:36
ash_ i also was trying to understand how when you run a program made by pbc_to_exe it actually happens 02:37
in know the 'magic' starts at Parrot_runcode(interp, argc, argv);
but diving into that it gets confusing, basically i was trying to understand how it loads all of the pbc constants, ops, register information, annotations into the interrupter and eventually calls the runcore 02:38
plobsing it encodes the PBC into memory and then uses the normal PBC loading routines 02:39
ash_ so, it just says "hey the pbc starts here" where here is the start of that big string? 02:40
plobsing yes. It works the same as loading a PBC file except it doesn't have to read it in first.
are there any other points that have you stuck? 02:45
ash_ well, i guess i just need to dig more through the code to understand whats going on
nothing comes to mind, its just i need to experience bits of it for myself, i understand the gist of it, its just a few area's where i am fuzzy
purl i heard fuzzy was an extension of Boolean logic dealing with the concept of partial truth. or "warm and"
02:48 janus joined
ash_ thats all i can think of, btw, i did some more testing for the libffi nci pmc and it's working now on i386 and 86_64 on linux, and 64 bit on OS X (i'd try 32 bit on OS X but parrot's config scripts don't seem to want to do -m32 correctly on OS X) 02:55
plobsing awesome. we're a bit close to the stable release at this point to push in a major feature like this, but if all goes well, I think we could pull it in immediately after the release 02:59
tcurtis ash_: remind me sometime and I can test it on i386 OS X. 03:01
ash_ tcurtis: which os x do you have?
(not snow leopard?)
tcurtis ash_: Leopard
ash_ btw, it might be nice if someone with some knowledge of the config scripts looked at OS X's build system
OS X likes fat binaries (for a number of reasons) and it would be nice if we could get parrot to build correctly on OS X so it could be turned into a fat binary, and build 32 bit or 64 bit explicitly too 03:02
03:15 LoganLK joined
dukeleto anybody interested in a Parrot hackathon sometime around OSCON in Portland, OR? 03:21
03:21 snarkyboojum joined 03:35 GodFather joined
cotto dukeleto, when's OSCON? 03:36
03:40 notbenh1 left
dukeleto cotto: July 19-23, 2010 03:47
cotto: many parrot devs will be in Portland 03:48
cotto not likely I'll be among them 03:51
sad face
purl ☹
mikehh opbots, names 03:57
04:32 snarkyboojum joined
cotto but the sad face worked 04:48
happy face
purl ☺
dalek rrot: r48093 | Chandon++ | branches/gsoc_threads (14 files):
[gsoc_threads] Clean up task vs. event; make timers not be tasks.
04:49
rrot: r48094 | Chandon++ | branches/gsoc_threads/t/pmc/task.t:
[gsoc_threads] Now with no missing files.
05:05
05:23 snarkyboojum joined
dalek rrot: r48095 | darbelo++ | branches/gsoc_nfg (22 files):
Sync with trunk.
05:38
06:09 uniejo joined
NotFound <plobsing> sure. just know that you're wandering into yet more unexplored territory (reading PBC using Packfile* PMCs) ---> Not so unexplored, see packfile.winxed in winxed examples 06:10
plobsing NotFound: good to see. still, reading/analysis feel a little underpowered. 06:16
NotFound plobsing: sure 06:17
06:24 snarkyboojum joined 06:44 fperrad joined
dukeleto msg masak i've added MiniDBI to proto: github.com/leto/proto/commit/31af06...a2a0c9c6c4 06:52
purl Message for masak stored.
06:56 frodwith joined 06:57 baest joined 08:36 darbelo joined 08:56 clinton joined 09:10 AndyA joined 10:29 LoganLK joined 10:42 gbacon joined 10:59 bkuhn joined 11:14 lucian joined
dalek TT #1704 created by bacek++: Implicit selection of main sub is deprecated. 11:50
TT #1704: trac.parrot.org/parrot/ticket/1704
TT #1705 created by bacek++: 0-args :main Subs will check passed arguments.
TT #1705: trac.parrot.org/parrot/ticket/1705
12:00 JimmyZ joined 12:20 whiteknight joined
dalek kudo: 3615ece | jonathan++ | src/Perl6/Grammar.pm:
First cut at implementing custom circumfixes. Also, for things we don't know how

syntax error.
12:22
purl YOU CAN'T JUST MAKE SHIT UP AND EXPECT THE COMPUTER TO MAGICALLY KNOW WHAT YOU MEAN, RETARDO.
kudo: 727782e | jonathan++ | src/Perl6/ (2 files):
Add term:sym<circumfix> as found in STD, which we were missing in the Rakudo
purl hmmm... grammar is "The Deluxe Transitive Vampire" Mmm. Good book.
12:30 bluescreen joined
Coke ooh, there's a deluxe? 12:34
Anyone else used to handrolling PIR find PAST impenenetrable, or is it just me? 12:39
ETOOMANYEN
moritz finds PAST quite intuitive, except where not 12:41
whiteknight PAST basically is impenetrable 12:44
12:45 bluescreen joined
whiteknight because of IMCC magic, it's extremely difficult to write operational PAST most of the time 12:45
dalek kudo: 3d0399a | jonathan++ | src/Perl6/Actions.pm:
Should not curry .WHAT and other interogative macros.
12:57
kudo: 9819740 | jonathan++ | src/pmc/p6role.pmc:
One more role type-object undefinedness fix.
jnthn whiteknight: huh?
I don't see where IMCC comes into things. :-/ 12:58
The nice thing about writing PAST is that I don't have to care about PIR. :-)
(Or more specifically, generating PIR.) 12:59
Coke jnthn: I had a (*#&$ of a time making PAST generate compilable pir. =-) 13:02
(do I want a bind here? a pirop to call set ? or maybe a pirop that sets the result as a side effect? what are the types? WHY WONT THIS WORK!?) 13:03
Coke is pretty close to getting partcl's argument handling working, though, which is nice.
Many times I thought "if I could write this past in pir, I'd be done already. (trivially so, since I already wrote this in PIR for the old version. =-) 13:04
jnthn Coke: Ah. My usage of :pirop is very low. 13:05
moritz Coke: then just write it in PIR, no? 13:10
atrodo Coke> I agree, even with my limited experience with both, PIR seems much easier and less cryptic than PAST 13:12
dalek rrot: r48096 | gerd++ | trunk/docs/book/pir/ch04_variables.pod:
remove what seems to be a wrong opening bracket
13:22
13:51 tcurtis joined
Coke moritz: I already have a chunk of PAST. how do I inject a chunk of steaming PIR? 13:51
13:52 whiteknight joined
tcurtis Coke: PAST::Op.new(:pasttype<inline>, :inline('foo bar')) 13:52
Coke (it seems if I want to move more to a compiler than an interpreter, I'm going to want to write more and more in something that can target PAST
tcurtis: holy crap that would have saved me about 3 hours yesterday. 13:53
At this point, I am probably going to finish in past since I'm already 80% done. =-) 13:55
tcurtis++
moritz++
Coke listens to piers sing.
13:59 sjn joined 14:04 bubaflub joined 14:07 NotFound joined
NotFound hi 14:07
Coke ho 14:09
NotFound Let's go!
14:12 arnsholt joined
moritz where? 14:16
NotFound Straigh to the jail, without collecting 20.000$ 14:17
atrodo Wow, that's a lot more than I ever remember getting for passing Go 14:26
NotFound I think my memory was mixing the old edition before euro, in pesetas. 14:27
moritz it was 8000DEM (deutsche mark) back in the days 14:28
Coke 200USD 14:29
atrodo wow, they changed the amount of monopoly money you got in different countries?
jnthn
.oO( Zimbabwe monopoly must be awesome! )
NotFound atrodo: the prices on the main streets will sound ridiculous without some adaptation. 14:30
Coke jnthn: comes with a printing press.
arnsholt atrodo: Sure. It'd be a bit boring if you got the local equivalent of $2 every time you passed go =)
NotFound Monoploy was a pioneer in localization X-)
Coke NotFound: the us have been ridiculous for 50 years. =-)
er, the us /prices/
NotFound Coke: there are levels of ridiculogy. 14:31
Coke ... chromatic? is that you?
atrodo Well, I guess that could make sense, except it's still monopoly money
NotFound And in the real world bankrupters don't go to jail, they get bailouts. 14:33
14:33 cotto joined
atrodo NotFound> Point 14:33
I do wish that all I had to do to get out of jail was to roll doubles. I'd be breaking the law left and right! 14:34
NotFound atrodo: beware of Murphy's Law.
moritz atrodo: also remember that you're only allowed three rolls a year :-) 14:35
cotto ~~
Coke mmm, cinnamon rolls.
moritz 1- (5/6)**3
purl 0.421296296296296
atrodo moritz> three rolls then they just let you go!
moritz atrodo: yes, but you only succeed with a chance of 42%. Otherwise, wait a second year :-) 14:36
1- (5/6)**6
purl 0.665102023319616
moritz 1- (5/6)**9
purl 0.806193300532185
moritz and a 20% chance of still being in prison after 3 years
NotFound thinks about developing a "Monocoder" game
atrodo Hmmm, maybe we played by different rules, but when i've played, you're out of jail after your third roll 14:37
NotFound Thinking better, is a bad name, Icaza will sue me.
atrodo NotFound> Perfect
moritz atrodo: ah right, but you had to pay a fine (in our rules)
atrodo Ah, yes, that's what we did as well 14:38
14:48 theory joined 15:03 gbacon joined 15:07 hercynium joined 15:24 whiteknight joined 15:35 PerlJam joined 15:38 fperrad joined
dalek kudo: c9b7229 | jonathan++ | src/ (2 files):
Make phasers implementation able to remember value produced by phaser.
15:42
kudo: 8ce9aff | jonathan++ | src/ (2 files):
Remove special handling of BEGIN and make add_phaser a littler smarter about
kudo: d51e99a | jonathan++ | src/Perl6/Actions.pm:
Put the 'run in lexical scope of the setting' hack that was in the old BEGIN
Coke jnthn: shouldn't *.WHAT say "EVER"? ;) 15:47
oops 15:48
cotto_work msg khairul A couple of the tests in t/pmc/nci.t fail in your branch. You should take a look at them when you have the time. 15:55
purl Message for khairul stored.
cotto_work msg khairul Also, notfound++ committed some of your simpler changes to the core Parrot code to trunk. I'll be looking at the remaining changes (gist.github.com/477154) when I can. 16:00
purl Message for khairul stored.
cotto_work anyone around with a commit bit?
16:01 ruoso joined
cotto_work msg khairul nm. Pointer's get_string is the culprit. It's not entirely obvious what the proper behavior is in this case. 16:06
purl Message for khairul stored.
cotto_work *sigh* 16:12
After digging to see who added the failing tests to figure out what the proper behavior for pointer.get_string is, I find out that I added one of the tests. 16:13
atrodo Isn't that just depressing? 16:15
cotto_work I could ask myself, but I already know that I don't know.
tewk added the other tests and I suspect that NotFound or japhb would know something.
japhb <rez> 16:16
Wubba-huh?
cotto_work do you have a sense for how Pointer.pmc should behave?
especially its get_string 16:17
japhb I've been away from the NCI stuff for a while, so I'm not sure what you are looking for. 16:18
cotto_work Does it make more sense for it to stringify its pointer with %s or %p? 16:19
src/pmc/pointer.pmc +162
japhb Looking .... 16:20
(well, pulling first, just in case. :-)
16:25 whiteknight joined
japhb cotto_work, OK, looking at the tests and the surrounding code and such, it looks like get_repr is returns the hex for the pointer's actual value, while get_string is returning the "string" pointed to ... on the assumption that it is a regular C-style null terminated string. What is used for getting raw buffer data of a certain length, containing 0 or more nulls? 16:34
s/is returns/basically returns/
Or am I now too far away from the current state of NCI for that question to be relevant? 16:35
cotto_work I'm trying to figure out if that behavior (assuming a C string) is correct. 16:36
atrodo cotto_work> completely different subject. what about shl and shr as lorito opcodes? 16:38
japhb It's certainly reasonable to have that as an option, even an "easy to reach" option -- it will handle a number of useful cases. But there definitely needs to be another easy-to-reach option that gets raw buffer data. 16:39
And if the C string is supposed to become a Parrot string, there ought to be some way of specifying charset info, neh?
cotto_work atrodo: Good question. Having shr would make it possible to optimize multiplication and would be closer to the hardware. For now I'd leave it out. It can be added easily later when we need it. 16:40
NotFound japhb: last time I looked, strings from nci are assumed to be iso-8859-1
atrodo Okay, I'll put it in my list of ops to think about later
cotto_work or, shl. Blame lysdexia. ;) 16:41
japhb NotFound, ewww.
That's just wrong in an era of UTF-8.
I mean, if you're going to have a default ... we should be getting away from the ancient one.
cotto_work Tell darbelo. I'm sure he'll be motivated to do something once he finds out. 16:42
atrodo or s/multiplication/division/, either substitution would work
cotto_work sure
NotFound japhb: I'd like better to use binary as default.
utf-8 as defalut is problematic, data received can be unacceptable as utf-8 16:43
japhb NotFound, sure ... but get_string does not offer the opportunity to provide a buffer length, so the data has to self-determine its length.
NotFound, I'll grant you that.
And I recognize it would be slow to check for compliance and then fall back.
NotFound japhb: is supposed to be used wicth char * pointing to a zero-deliited C string.
japhb As long as it is easy to say "Change this string to this charset" 16:44
NotFound japhb: is easy now, using a ByteBuffer.
japhb NotFound, right. Which isn't binary.
Nodnod
Anyway, I'm clearly not helping here. :-/
NotFound japhb: is binry encoded, that is, not assuming any encode at all.
japhb Ah, makes sense 16:45
NotFound iso-8859-a has the advantage of not having non-decodeable values.
I suppose someone uses it because of that.
s/uses/used
Assuming string of chars, of course, not any sort of wide chars. That should use different types. 16:47
darbelo At some point we are going to have to decide wether we want to handle string data as it comes in, which we do badly now, or enforce a cannonical representation at the system boundaries, which we don't do at all. 17:06
cotto_work The first option is what I've heard allison mention as our intent. 17:08
darbelo Yeah, and that's easier to reach from the current stae of the code.
But a canonical representation can be made fast. 17:09
NotFound "string data" is an oversimplification.
A char * pointing to zero delimited C string is just that. 17:11
darbelo Sure, but there's plenty more ways you can make 'a string'.
NotFound A char * pointing to a buffer of size know by whatever mean, a totally different beast.
darbelo It also could be a wchar * too. There's all sort of stuff you can pass around a call 'a string'. 17:13
NotFound Enforcing some way is limiting. In MySql, for example, you can select at rutime how you pass and receive string. If I have utf-8 strings, and set MySql for that, enforcing any other encoding is losing time. 17:14
The same if I have iso-8859 or watever.
darbelo Yeah, but what happens when I pass a GBK string to parrot? 17:15
17:15 shockwave joined
shockwave Hello 17:16
NotFound What's a GBK string?
shockwave Is there way to make an include like so: .include 'TestOutput.s_abstract_1_xml_1.main'
cotto_work gbk?
shockwave be relative to where that being that's making the inclusion is located, as opposed to where the parrot executable is?
darbelo A chinese charset. It's what windows uses.
shockwave I don't know if that made sense. I'll re-state it. 17:17
darbelo It's what was causing jimmyz's build failures a while back. 17:18
tcurtis shockwave: "--include ." or "-I ." does what you want as an argument to parrot, I think.
NotFound darbelo: right now, you can't. Either use windows unicode api, or add new encodings.
17:19 lucian joined
shockwave When including a .include 'file.pir' directive in a PIR file, that inclusion is relative to where the parrot.exe file is located. Is there a way to make that .include directive be relative to the source file that is making the inclusion? 17:19
tcurtis shockwave: try --include/-I with wherever your desired include file is. 17:20
shockwave tcurtis: Perfect! Thanks. 17:21
darbelo I think .include './some/file' works too. But I'm not sure. 17:22
shockwave darbelo: ./ doesn't work. 17:23
NotFound darbelo: I think that is relative to the current working directory, not the directory where the including file is.
darbelo That could be it. 17:24
NotFound: back to strings, I think we are confusing the 'shuffling data about' problem with the 'string munging' problem. 17:26
17:26 shockwave left
NotFound Part of the problem is to clarify the problems %-) 17:26
darbelo Forced translation is bad for shuffling data about. And variable-width encodings are bad for string munging. 17:27
We should be able to do both gracefully. 17:28
NotFound darbelo: yeah, I just says that we should not force any assumption by defalut. Providing ways to ask for it is fine.
darbelo Yeah, but if even the guys that invented utf-8 knew it was a bad idea to use it in, say, a regex engine. Then why is there utf-8 in our regex engine? 17:30
And if you pass in any form of unicode to parrot, you end up with utf-8 at some point or another. 17:31
NotFound My knowledge of our, or any other, regex engines in sverily limited.
darbelo: utf-8 is used to interact with the OS, but you can work with ucs4 if you want. 17:32
darbelo I know, I added that encoding :) My point is that we could be a *lot* smarter about how we handle strings in some places. 17:37
NotFound darbelo: fully agree 17:38
darbelo I think we've been agreeing all along.
It just took me a while to notice :)
NotFound My current point is that assuming iso-8859-1 is not so bad for a now. At least you can easily reencode it. 17:39
darbelo You mean assuming utf8 is worse :) 17:41
NotFound darbelo: yes, because it can throw invalid data.
darbelo All unicode encodings do that. Calling it 'binary' is probably safer, since it forces you to give it a meaninig before you star minging it. 17:43
Eh, start munging.
NotFound Yes, but changing it to binary right now risks to break things.
17:44 patspam joined
darbelo Hm. True. Better done after the supported release. 17:44
OTOH, if it works now, it's probably just by chance. 17:45
NotFound darbelo: yes, dynamic ops worked by chance, and look what happened. 17:46
cotto_work *shudder*
darbelo We ran out of luck, then it went kaboom.
I'll go by a set of loaded dice... 17:47
atrodo If you wanted to rig a game of russian roulette, would you get a loaded gun? 17:48
darbelo atrodo: Yes, and fire last.
NotFound I'd like better spanish lotto, If I can choose. 17:49
darbelo More money, less corpses? I can live with that trade-off.
;)
Coke oh, right, we never did fix dynops, did we. sad, really. 17:54
darbelo plobsing was working on it, lat I heard. 17:55
cotto_work there's a branch
NotFound They are still unfixed. Things don't break too much thanks to workarounds.
darbelo purl: gbk is en.wikipedia.org/wiki/GBK
purl OK, darbelo.
darbelo I think that page has enough data for a brave person with access to a suitable testing platform to write up a gbk encoding for parrot. 17:57
In case someone has this pressing need to munge simplified chinese data.
cotto_work That diagram makes me dizzy. 17:59
darbelo it's no worse than utf8 really. 18:01
cotto_work I mean the presentation, not the contents.
darbelo It's all chinese to most people anyway. 18:02
Coke ugh. Will we ever be finnish'd with these puns? 18:04
atrodo Ah, gbk looks simple 18:06
Coke ^_O? 18:07
atrodo </sarcasm> 18:09
cotto_work The sarcasm bit, much like the evil bit, remains unimplemented in the large majority of TCP stacks. 18:10
atrodo Aye. Still waiting for unicode to include both codepoints for sarcasm and evil
cotto_work It's generally thought best to emulate it at the application layer.
atrodo They'd be combining codepoints, of course 18:11
cotto_work That's a great idea <EXCLAMATION MARK WITH COMBINING SARCASM BIT>
atrodo I'm not sure I'd ever type without that turned off tho 18:12
*on
dalek nxed: r556 | NotFound++ | trunk/winxedst0.cpp:
backport constructor call to stage 0
18:18
nxed: r557 | NotFound++ | trunk/winxedst0.cpp:
ooops, forgot to optimize constructor args in r556
18:23
cotto_work atrodo, you should start handing out commit bits for your lorito project 18:32
atrodo cotto_work> Yep. Was going to try and get a good chunk done this weekend and then start looking for help 18:35
cotto_work do it naough
atrodo uhm, sure?
purl But are you sure you're sure?
atrodo i'm sure i'm sure purl 18:36
dalek nxed: r558 | NotFound++ | trunk/winxedst1.winxed:
now that constructors are available in stage 0, use them in a few places in
18:37
atrodo I might be dense on the github thing, but does commit bit == collaborators under repo admin? 18:39
Coke yes. 18:40
atrodo huh. I always assumed forking was the way to do it in github. Learn something new everday.
Okay, who wants commit bits?
This is only one of three times I ask! 18:41
Coke that is very also the way to do it.
it depends on if you want to treat your version as "official" or not, IMO.
I'd just leave it say "go fork."
*and
atrodo So new plan. I'm going to only ask three times, after that, go fork yourself. (i'm going to get into so much trouble) 18:43
tcurtis Speaking of commit bits, anyone else want to help with updating the Squaak tutorial?
PerlJam tcurtis: I might 18:44
(I'm perlpilot on github) 18:45
Coke PerlJam: hey, where's my partcl patches? =-)
tcurtis PerlJam: added you to the github repo I've been working in(aptly named squaak-tutorial) 18:46
PerlJam Coke: when my interest waxes that direction, you'll see some. :)
cotto_work wants a bit 18:48
darbelo tcurtis: Sign me up.
cotto_work maybe even a nybble 18:49
darbelo is darbelo on github, for the record.
PerlJam Coke: actually, it's more like at the intersection of my interest, my time, and my ability ... then you'll have some
Tene atrodo: I'll take a commit bit.
tcurtis The fun bits are the ones that don't work.
cotto_work: was that to me or atrodo?
cotto_work both eventually, but for atrodo that time 18:50
atrodo Tene> is your github account "tene"? 18:51
cotto_work cotto's github account is cotto 18:52
tcurtis atrodo: I would also like one.
atrodo atrodo also likes talking about himself in the third person 18:53
tcurtis cotto's github account?
purl it has been said that cotto's github account is cotto
dukeleto atrodo: i'll take a bit too, my github is leto
tcurtis tcurtis' github account is ekiru
18:53 baest joined
Tene atrodo: yes 18:54
atrodo atrodo's github account is atrodo
Okay, i've got cotto, tcurtis, dukeleto and Tene. Anyone else?
tcurtis darbelo: you have a bit. 18:55
18:56 joeri joined
moritz raises hand 19:06
github nick eq irc nick
atrodo for me or tcurtis, or both?
moritz squaak 19:07
what do you offer? :-)
tcurtis atrodo: by the way, I'm prototyping an assembler in NQP for another possible syntax for Lorito assembly. Here's an example github.com/ekiru/yalp-asm/blob/mast.../fact.lasm
PerlJam tcurtis: I just did a search for squaak-tutorial on github and it gave me no results.
cotto_work Oh. I'd like a squaak bit too
tcurtis PerlJam: github.com/ekiru/squaak-tutorial
PerlJam wonders why github couldn't find it via search 19:08
tcurtis moritz, cotto_work: done.
cotto_work Does that mean that the squaak tutorial is living in two different places now?
atrodo mortiz> lorito prototype 19:09
moritz atrodo: ah. Interesting, but outside of my scope
tcurtis cotto_work: I just didn't want to mess with it on trunk and don't know much about svn branching.
cotto_work svn branching isn't hard. It just breaks at stupid times.
atrodo moritz> understand, there was just a little confusion on which commit bits who wanted 19:10
cotto_work see docs/project/branching_guide.pod
moritz atrodo: sure
atrodo svn--
tcurtis I was planning on creating a svn branch at some point before I got far along, but I didn't get around to it.
moritz atrodo: btw in most IRC clients you can type the first few (like, 2) characters of a nick name, and then hit the tab key for auto completion
much like on a shell
atrodo moritz: huh, sure enough 19:11
Coke finally thinks to create #albany-pm
cotto_work In the competent ones (not Mibbit), you can even configure the order in which names appear.
atrodo i shaltn't misspell moritz again (assuming I did which is why that tip came up)
Coke (moving tutorial out of trunk)++ from em.e
moritz atrodo: yeah, it was the typical 'mortiz' misspell :-)
atrodo my eyes are clearly going, it hard to see at this distance. Maybe I should work in front of a computer screen all day... 19:12
moritz it's s/it/ti/ :-) 19:13
tcurtis cotto_work: on the other hand, if someone who hasn't broken their git svn install wants to create a svn branch and import what I've done so far, I'd be grateful. ;)
19:14 LoganLK joined
cotto_work I don't know anyone like that. ;) 19:14
tcurtis has broken his git svn install and doesn't know how to do that with it anyway. 19:15
atrodo tcurits> interesting lasm
moritz somehow a Makefile or even Makefile.in is missing from squaak
Coke moritz: probably uses distutils. 19:16
look for "setup.pir"
moritz so, what do I do when I find a setup.pir?
PerlJam moritz: did you read the README ? :)
moritz doh run it.
tcurtis Coke, moritz: yep. mk_language_shell.pl generates a setup.pir
moritz any objections to adding vim set ft=perl6 modelines? 19:18
tcurtis moritz: none.
cotto_work I haven't found that to be effective. I always have to set it manually.
but if that should work, +1
tcurtis uses emacs, which (frequently fails to) auto-detect sixity. 19:19
moritz currently the t/00-sanity.t fails becuase there's no rule to parse say 'string';
is the sanity test wrong? or should I add a rule for pasing 'say'? 19:20
tcurtis atrodo: biggest differences are that each op only operates on one argument signature(where different types of registers don't count as different signatures but constant vs. label vs. register does) and that it doesn't have subs. 19:21
moritz: I removed the default say statement at some point. You can bring it back if you'd like. I don't think it needed to be removed, in hindsight. 19:22
moritz well, it's useful for testing 19:24
tcurtis moritz: true. although original Squaak doesn't seem to have kept that rule. trac.parrot.org/parrot/browser/trun...grammar.pg 19:25
I assume that eventually in the tutorial when we add sub calls that will handle our output needs. 19:27
cotto_work tcurtis: wouldn' 19:30
t coercion (along with boxing and unboxing) be a special case of set?
set P0, S0 #boxing 19:31
set S0, P0 #unboxing
set S0, I0 #coercion
atrodo tcurtis> I'm not sure I follow your concept
cotto_work> good thing you haven't look at my concept, i don't have any boxing
cotto_work tcurtis has a separate coerce op 19:32
tcurtis cotto_work: probably. although coerce is less ambiguous about whether you're getting an object that will change the original object if you change it.
cotto_work puts on his boxing gloves
That's true. We do want minimal magic at the Lorito level.
atrodo up until yesterday, I had assumed that the parrot middle layer would handle that 19:33
that=boxing/unboxing
cotto_work All kinds of assumptions will come to the surface during this phase.
tcurtis Parrot's concept of setting things is currently very magical. 19:34
atrodo speaking of assumptions, i had a question last night. what was the reasoning behind removing the limit on the number of register? 19:35
cotto_work and we pay the price by forcing nqp to generate sub-optimal code.
atrodo, Parrot used to think of itself as much closer to the metal than it really is. 19:36
atrodo cotto_work> that I understand
cotto_work If we're not pretending that we're close to the metal, there's no reason to pretend like we only have a few registers. 19:37
PerlJam atrodo: and no one used the "real" registers because they were limited to 32 each and to do anything interesting you always needed more than 32.
Coke PerlJam: or a better optimizer. =-)
atrodo PerlJam> did you need more than 32, or a register allocator? 19:38
PerlJam We had "virtual" registers that were infinite-ish, so ... what cotto_work said 19:39
tcurtis although, for Lorito, having a more limited number of registers wouldn't necessarily be so bad. 19:40
As long as it could be done such that the limitation didn't leak up to higher-level code. 19:41
cotto_work and as long as register spilling has some sane meaning for Lorito
atrodo yea, i was thinking about doing a register stack, so you have an infinite number of registers, but a limited amount you can refrence at one time 19:43
sorear the only sensible numbers of registers to have in an IL are 1. Infinity 2. As many as the CPU
atrodo ( and why do I forget that as soon as I hit enter means I can spell check? )
sorear since PIR is supposed to be arch-independant, #2 is ruled out 19:44
cotto_work We could also consider various cache sizes.
tcurtis sorear: or... as many as you can fit in a convenient number of bits if you're going for a fixed-length bytecode. 19:45
19:45 cotto_work2 joined
cotto_work2 ohai? 19:45
purl ohai is a town in the Southland Region of New Zealand's South Island.
Coke can always deal with spilling only if we get to a jit.
note that parrot doesn't really support inf registers now. and that pir and pasm are asymetrical about it. 19:46
atrodo Coke> is "infinite" the size of an int?
Coke atrodo: in pasm's case, it's 99. 19:47
atrodo wow, really? I understood at least hundreds from the conversation yesterday 19:48
tcurtis atrodo: PASM isn't often used.
Coke atrodo: that's PIR. 19:49
atrodo oh, subtle difference lost on my reading
Coke PASM's syntax doesn't even allow you to address register P100.
19:50 cotto_work2 left
nopaste "coke" at 192.168.1.3 pasted "pasm limits." (21 lines) at nopaste.snit.ch/22048 19:51
atrodo wow, cryptic error 19:52
tcurtis imcc-- 19:54
karma imcc?
purl imcc has karma of -5
Coke yah. I filed a bug ages ago but no one cares enough about pasm to fix it. =-) 19:55
sorear what is PIR's register limit? 19:57
darbelo sorear: High enough. 19:58
purl well, high enough is just before your eyes roll back in your head
Coke note that PIR registers are meta-virtual. 20:00
so $P99999999999 could map to P0
sorear can I use 101 different PIR registers? 20:01
cotto_work If you want to write the code, sure. 20:02
or generate it
tcurtis sorear: I recommend just writing a moderately complicated expression in any HLL. There you are. 20:03
Much quicker and more maintainable
20:06 contingencyplan joined
Coke sorear: I do not know off the top of my head /what/ the limit is. I think it's probably INTSIZE. 20:06
cotto_work It's one of those limits which, if you run into it, you're doing something wrong. 20:07
darbelo tcurtis: You can add your projects to the Modules or Languages list on the wiki if you want dalek to track them and report to the channel. 20:12
trac.parrot.org/parrot/wiki/Languages and trac.parrot.org/parrot/wiki/Modules by url 20:13
20:15 eternaleye joined
darbelo msg tcurtis I just added the squaak repo to the Languages page so dalek can report on it. 20:40
purl Message for tcurtis stored.
tcurtis darbelo: well, hopefully, it'll get imported back into parrot trunk soon(i.e., before 2.6). 20:41
But thanks, for now.
darbelo Ah, I thought you were going for the nqp-rx 'work on it outside an then update in one go' approach. 20:43
cotto_work I like the idea of squaak living outside Parrot. That's what we expect normal HLLs to do. 20:48
dalek tracwiki: v137 | darbelo++ | Languages 20:53
tracwiki: Add the squaak ressurection effort ot the languages list.
tracwiki: trac.parrot.org/parrot/wiki/Languag...ction=diff
darbelo Bundling a snapshot in examples/ might still be a good idea for our 'example language' of choice.
tcurtis doesn't have strong feeling about whether it should be in parrot's repo. 20:56
cotto_work There's charm in that approach too.
just for discoverability
tcurtis I initially was updating it in a git repo because I didn't feel like creating a svn branch for something I wasn't certain I'd have time to get around to actually doing.
20:59 whiteknight joined
darbelo postpones the distribituion bikeshed until the code works enough to be worth distributing. 21:01
cotto_work release too early and too often 21:02
tcurtis Speaking of it not working; neither throw nor try/catch works. 21:03
cotto_work tcurtis: what langauge
purl langauge is dead when people stop speaking it entirely (ie no code exists anymore)
tcurtis cotto_work: Squaak.
Unless there's some way I'm not aware of to get an Exception object in Squaak. 21:12
In which case, only try/catch is broken.
dalek nxed: r559 | NotFound++ | trunk/examples/fly.winxed:
add a few towers, a train and some other changes in fly opengl example
21:33
cotto_work NotFound: what's required to run that opengl demo? 21:39
nm. I'm not generating opengl bindings 21:41
21:44 gbacon joined
bacek aloha, humans 21:51
cotto_work aloha, bacek
bacek hi cotto
dalek rrot: r48097 | bacek++ | trunk/DEPRECATED.pod:
Add :main Sub deprecation notice.
21:54
tcurtis hello, bacek. 21:59
GeJ Bonjour everyone. 22:01
tcurtis Hi, GeJ. 22:03
GeJ Hey tcurtis. 22:06
purl i guess tcurtis is Tyler Curtis <mailto:tyler.l.curtis@gmail.com>
GeJ I knew that.
NotFound cotto_work: opengl is required, indeed. 22:23
Even magic has its limits ;) 22:24
cotto_work yup. freeglut3-dev was the magic package
It would be nice if something told me that that was the problem, though. 22:25
It's fairly easy for someone who's done some Parrot hacking to find, but it's got potential to mystify users.
darbelo I doubt parrot can be any more specific than 'you don't have opengl (or it's headers)'. 22:26
cotto_work That would be sufficient.
darbelo I thought we were doing that.
NotFound takes mental note
cotto_work All I saw was: "load_bytecode" couldn't find file 'OpenGL_funcs.pbc' 22:27
NotFound darbelo: parrot can do, but a parrot based program must do its own checks.
darbelo Oh, the *winxed* opengl demo. Missed that. 22:28
NotFound Unless we generate a fake package that throws an exception with meaningful message on attempts of usage. 22:29
darbelo We do that in other places. 22:30
22:53 kid51 joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34907), fulltest) at r48097 - Ubuntu 10.04 amd64 (g++) 22:55
23:06 jimk joined
dalek kudo: 98163f7 | jonathan++ | src/Perl6/Actions.pm:
Fix generation of attribute initializers so that the generated anonymous method

we have attribute initializers inside parametric roles that reference the role parameters too.
23:11
23:12 eternaleye joined 23:56 Psyche^ joined