|
Parrot 3.2.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Parrot is accepted for GSoC 2011! Student application deadline is Apr 8 Set by moderator on 27 March 2011. |
|||
| benabik | That did, in fact, fail for me. | 00:02 | |
|
00:05
bbatha joined
00:08
takadonet1 joined
|
|||
| takadonet1 | Can Parrot support reading files with different 'line' delimiter other then "\\n"? | 00:12 | |
|
00:12
theory left
|
|||
| whiteknight | takadonet1: good question | 00:14 | |
| I suspect so, but I've never done that test | |||
| takadonet1 | whiteknight: I'm from the Rakudo world and in our implementation, if we see that argument passed to the IO object and it's not a "\\n", it fails :( | 00:15 | |
| I need more then just "\\n" :) | |||
| whiteknight | IO object, you mean the FileHandle PMC? | 00:18 | |
| or does Rakudo implement something custom? | |||
| takadonet1 | whiteknight: something custom I believe | 00:19 | |
| <--- Rakudo user, not developer | |||
| whiteknight | ah, gotcha | ||
| takadonet1 | I can look at Perl 6 and understand it very well but PIR.... not so much | ||
| whiteknight | well, we'd have to figure out where that particular logic lives | 00:20 | |
| takadonet1 | and that what i'm doing right now | ||
| good old grep :) | |||
| plobsing | ack is better | ||
| takadonet1 | well I have somewhat an idea where to look in the src folder | 00:21 | |
| benabik | Looks like Rakudo's IO object calls readline on a Parrot IO object (result of open__PSS) | ||
| takadonet1 | i'm just hope it's implemented | ||
| benabik | takadonet1: Where are you passing in the "something other than \\n"? | 00:22 | |
| takadonet1 | benabik: multi sub lines | ||
| plobsing | takadonet1: Handle has a 'record_separator' attribute. that's probably what you are looking for. | 00:25 | |
| benabik | takadonet1: fail 'Fancy newlines not supported yet' if $nl ne "\\n"; | ||
| takadonet1 | plobsing: in Rakudo it will be $*FH.input_record_separator() however nyi | ||
| benabik: indeed that is the line | 00:26 | ||
| plobsing | not parrot's problem | ||
| benabik | takadonet1: Ah, you're trying to remove the NYI problem? | ||
| benabik misunderstood. | |||
| takadonet1 | benabik: that too | ||
| just wonder if parrot support it, if so then I would change it in rakudo | 00:27 | ||
| i think it's hardcoded in parrot :( | 00:32 | ||
| parrot 3.2.0 src/io/api.c line 632 | 00:33 | ||
| all well thx guys | 00:34 | ||
|
00:37
theory joined
|
|||
| plobsing | takadonet1: um no. Handle has a field called 'record_separator' that is consulted in readline. that's what I told you before. | 00:38 | |
| src/io/api.c:632 only applies for StringHandle | 00:39 | ||
|
00:42
mikehh joined
|
|||
| whiteknight | holycrap that imcc_compreg_pmc merge diff is huge | 00:47 | |
| that's a pretty big weight off my shoulders | |||
| dalek | rrot: 54c4f34 | Whiteknight++ | NEWS: mention IMCC happenings in NEWS |
00:48 | |
| cotto | ~ | 00:58 | |
|
00:58
kid51 left
|
|||
| plobsing | can we classify the imcc decouple roadmap goal a success now, or are there other criteria that need addressing? | 01:00 | |
| whiteknight | technically, no. It's mostly decoupled, but not completely decoupled | 01:02 | |
| we still only have one libparrot, not a separate libparrot-imcc | |||
| plobsing | what else can we do before the deprecation boundary? | 01:03 | |
| whiteknight | that's a very good question | 01:05 | |
| I don't think there are any user-facing changes to come. | |||
| IMCC has the new interface that it's going to have, the compregs aren't going anywhere. We're not changing any syntax | 01:06 | ||
| the parrot.exe frontend is going to handle loading all the necessary libraries | |||
| I think we're good for deprecation | |||
| plobsing | I thought IMCC was only going to be available *when asked for* | ||
|
01:10
eternaleye left,
eternaleye joined
|
|||
| dalek | rrot: 443ce3a | (Michael Hind)++ | compilers/imcc/reg_alloc.c: fix codetest failure - trailing spaces |
01:10 | |
| whiteknight | plobsing: the parrot.exe frontend is the user "Asking for it" | 01:13 | |
| alternate frontends will have different behaviors | |||
| plobsing | whiteknight: what about ./parrot my-pbc-file.pbc ??? | 01:14 | |
| mikehh | bah - pushing from newly installed system seems to have lost my normal user id | ||
| whiteknight | that's the same frontend, it will provide the same environment | ||
| plobsing | still IMCC availability from NQP is user visible | 01:15 | |
| mikehh | I think I copied files from elsewhere rather than new clone | 01:16 | |
| whiteknight | fakecutables will probably include IMCC also, at least the current generation of them | ||
| pbc2exe can be extended with an option to omit it | 01:17 | ||
| NotFound: ping | |||
|
01:32
bbatha left
01:34
eternaleye left,
eternaleye joined
|
|||
| whiteknight | on the bright side, I just figured out why ExceptionHandlers can't be subclassed | 01:38 | |
| Object.pmc-- | 01:39 | ||
| cotto | why not? | 01:44 | |
| Tene | whiteknight: I don't think that's the only reason, if you found what I think you found. | 01:48 | |
| ... it's starting to get to the point that reading #parrot causes anxiety by reminding me of all the projects I've started or talked about or planned for but haven't finished (or started) | 01:49 | ||
| I haven't even merged my exceptions refactor work. | |||
| whiteknight | Tene: That's what I'm working on right now, a rewrite of your exceptions stuff | 01:51 | |
| Tene | whiteknight: nice | ||
| whiteknight: feel free to ask me if you have any questions about it. | |||
| whiteknight | where I'm stuck now is a part of it which was added after you started work | ||
| the finalize_p opcode is causing me trouble | |||
| Tene: don't worry, I will | |||
| Tene | It was a very simple branch; just changed some "== Exception" to "isa Exception" | 01:52 | |
| whiteknight | Tene: you can take a look at the whiteknight/eh_subclass branch to see what I've done so far | ||
| I already merged in the stuff you did subclassing Exceptions | |||
| it's ExceptionHandlers that are causing problems now | |||
| Tene | the big issue was with the two separate attribute stores in isntances of subclasses of exceptions. I was never able to understand WTF was going on there. | ||
| that's why I didn't merge it before. | |||
| whiteknight | yeah, that's what I'm seeing now | ||
| Object["proxy"] stores an instance of the superclass to delegate to. Both objects have separate attribute stores and don't sync | 01:53 | ||
| first off, let me say how much it bugs me that the attribute name "proxy" is reserved here | 01:54 | ||
| Tene | Does it actually need a full instance? | ||
| whiteknight | yeah | ||
| Tene | Ah. What for? What does it use attribute parents for? | ||
| erm | |||
| attributes of the superclass isntance? | |||
| Oh, I guess it's p6 style. | 01:55 | ||
| whiteknight | if I create a subclass of ExceptionHandler, every object of my subclass has an ExceptionHandler PMC in the "proxy" attribute | ||
| so that's two PMCs for the price of one | |||
| dalek | tracwiki: v4 | whiteknight++ | ExceptionRefactor | ||
| tracwiki: add a quick note about why ExceptionHandler cannot be subclassed | |||
| whiteknight | or, one PMC for the price of two | ||
| dalek | tracwiki: trac.parrot.org/parrot/wiki/Excepti...ction=diff | ||
| whiteknight | whichever makes the least sense | ||
|
01:56
petdance joined
|
|||
| Tene | like: class A { has $!x; method a { say $!x } }; class B is A { has $!x; method b { say $!x } } | 01:56 | |
| the reason I was seeing a problem was due to two different ways of accessing object attributes. get_*_keyed_str is overloaded in Exception.pm to redirect to getattribute, or something | 01:57 | ||
| whiteknight | no, not for all classes. Only cases where a Class inherits from a PMCProxy | ||
| Tene | so that was getting the Exception attributes, instead of the subclass attributes | ||
| whiteknight | right | ||
| don't worry if you don't understand it. There's nothing to understand | |||
| it's the worst design ever | 01:58 | ||
| Tene | well, understanding isn't that necessary, but being able to actually use it is. As long as everything ends up using the same attribute store in the end, is all we really need for this. The problem I had was inconsistency in how different pieces of parrot accessed exception attributes, and I didn't know which direction to try to resolve it in. | 01:59 | |
| so, you're seeing the same behaviour with exceptionhandler | 02:00 | ||
| whiteknight | There are three possible solutions: 1) the quick hack-job to make it work now. 2) Change the way the exceptions system stores attributes to avoid this issue, or 3) Fix the damned object model | ||
| Tene | I've never understood wtf a PMCProxy is | ||
| whiteknight | 3 is obviously the best, but is probably the most wok | ||
| Tene: it's shit | 02:01 | ||
| (that's the short answer) :) | |||
| Tene | If I were doing it, I'd do 2. | ||
| whiteknight | Tene: yeah, that's where I | ||
| 'm leaning | |||
| I don't want to play with the object model if we have 6model on the horizon | 02:02 | ||
| of course, we need to make sure we don't implement this same insanity when 6model lands | 02:03 | ||
| Tene | whiteknight: standardizing attribute storage for exceptions system shouldn't be more work than a set of hack jobs, I expect, and is more correct. | 02:04 | |
| whiteknight | Tene: right now, ExceptionHandler.set_pointer falls back to Continuation.set_pointer. | 02:05 | |
| Continuation.set_pointer sets both the address and runloop_id attributes | 02:06 | ||
| anyway, it's time for bed. we can talk about this more later | |||
| goodnight | |||
|
02:07
whiteknight left
|
|||
| Tene | whiteknight: what I *really* want to do is move away from this rubbish set_pointer dynamic adding and removing of handlers stuff, and have EHs statically represented in the bytecode. | 02:08 | |
|
02:22
mtk left
02:29
mtk joined
02:32
takadonet1 left
02:33
dngor_ joined
|
|||
| sorear | +1 | 02:35 | |
|
02:37
dngor left
02:54
petdance left,
hudnix left
|
|||
| plobsing | what is the point of subclassable exceptions? many dynamic languages use any object as a throwable (perl, javascript, lua, etc...). we should encourage HLLs to not mix their exceptions with Parrot's bookkeeping and to always use the "payload" attribute. | 03:00 | |
| Tene | plobsing: we currently do some things with the "type" of exception thrown, except it's a static list of integer types in the "type" attribute of the exception. That makes it a bit more awkward than it should be to do some things. | 03:02 | |
| plobsing | well yes. we should be dispatching based on the type of the payload | 03:03 | |
| Tene | plobsing: I'd expect that those languages where you can throw any object would just use an Exception, or possibly a sing language-specific subclass of Exception. | ||
| plobsing: Perhaps. That's where subclasses of ExceptionHandler come in to play. | |||
| That's an entirely reasonable strategy; I hadn't considered that before. | 03:04 | ||
| plobsing | Tene: the problem lies in inter-HLL exception compatibility. if one HLL expects subclassed exceptions and the other expects encapsulated exceptions... BOOM | ||
| if everyone always uses encapsulated exceptions, because they are the most general type, no problems | 03:05 | ||
| Tene | plobsing: Possibly. I don't think I have a sufficiently comprehensive knowledge of exception and handler usage in all languages to really speak definitively about this. | ||
| plobsing | neither do I. I'm just making educated guesses based on how I know some languages expect exceptions to work. | 03:06 | |
| Tene | plobsing: it's currently the case that core parts of parrot rely on information in the attributes of the exception, not its payload. | ||
| plobsing | perhaps fallback to the 'type' attribute of the exception if there is no payload? | 03:07 | |
| Tene | so, if we want to allow HLL exceptions to participate in that non-hackishly, we need to change *something*, and the most-reasonable way to do that, I'd expect, is expose it as type information in the exception object. | ||
| plobsing | ie the payload is PMCNULL | ||
| Tene | plobsing: the 'type' attribute right now is an integer, which has no relation to any classes or roles anywhere. They're incomparable. | 03:08 | |
| plobsing | so how does making exception subclassable manage to make them comparable? | ||
| Tene | plobsing: we drop the 'type' attribute, put the relevant information into roles or whatever, and HLL authors can then apply those roles in the appropriate places of their exception type hierarchy, if they have one. | 03:10 | |
| plobsing: I do like the idea of moving functionality from exception attributes into the payload, but there are a few questions that would need to be addressed. | 03:11 | ||
| plobsing | so we're moving to type-dispatched exceptions for HLLs (but only when those types map to underlying Parrot exception types)? | ||
| Tene | plobsing: the other issue is that moving functionality into the payload places restrictions on what can be put in the payload. | ||
| plobsing | Tene: how does it restrict the payload? | 03:12 | |
| Tene | plobsing: for example, to resume from a resumable exception, we need to get the resume continuation from the exception. We could move to storing the resume continuation in the exception, or we could store a reference to the exception in the payload, or we require some fumbling on the part of every hll author on every exception handler, unpacking the exception and storing information in the payload. | 03:14 | |
| so, you're right, it's not necessarily a restriction. | |||
| (I hadn't thought of the last option until I was responding) | 03:15 | ||
| plobsing | I'm going to wager that most exception handlers don't care about resumption (based on the fact that most HLLs don't use resumable exceptions). | 03:16 | |
| so for HLLs that don't care about all the fancy exception stuff, just unpacking the exception and passing that to the user (hiding all the parrot exception guts) would be good enough | 03:17 | ||
| Tene | plobsing: please note that I'm not saying that it's infeasible, I'm just trying to work out what issues would come up, and how they might be addressed. | ||
| plobsing | I realize that getting a backtrace could be tricky. | ||
| but then again, our backtraces are so borked on rethrow anyways, I'm not sure it matters. | 03:18 | ||
| Tene | plobsing: additionally, there are other semantic mismatches. Consider perl 'die' and 'warn'. 'warn' means throwing an object non-fatally, so if it gets caught, nothing happens and the EH gets the originally-thrown object, but if it's not caught, it just gets stringified and printed to stderr. Right now, parrot handles that with the severity attribute of the exception, but are there languages where that varies with the type of the ... | ||
| ... thrown exception? | |||
| plobsing: I fixed that in my exceptions refactor branch, which whiteknight says has been reimplemented in his branch which should actually get merged, unlike mine. :) | 03:19 | ||
| plobsing: additionally, if we're doing dispatch based on the type of the payload, that has similarly nontrivial interactions with other HLLs. | 03:20 | ||
| plobsing | Tene: that would get packed into the invisible ParrotException object on the thrower side | 03:21 | |
| Tene | If I want to catch all IO errors, what happens if I call some parrot code which throws a core parrot exception which has the 'type' attribute set to an IO error? How do I set up my HLL EH to catch that, and to catch all instances of my HLL class "IOError" | ||
| plobsing | I suppose you'd need two exception handlers that jumped to the same code. | 03:22 | |
| Tene | (note: I don't actually have a good solution for this in the type-based case either, fwiw) | ||
| plobsing: well, the way EHs work is that they have a can_handle method which gets the exception, and can either accept it or pass it on. | |||
| right now, can_handle does several checks because we have just one EH class | 03:23 | ||
| (it skips the checks if none of the filtering attributes are set) | |||
| we can filter based on positive or negative matches on the type attribute, the severity, and I think something else. | |||
| plobsing | subclassable exceptions seem like a great solution for limited exception heirarchies with direct analogs to parrot's exception types. everyone else is left high and dry | 03:24 | |
| Tene | plobsing: I had planned to expose the relevant types that parrot cares about as a set of roles, so when you want parrot behaviour for something, you compose that role into the relevant parts of your HLL exception hierarchy. | 03:25 | |
| I would not want parrot to have an exception hierarchy that it expected everyone else to conform to. | |||
| plobsing | and if I have created an exception type that has no analog in Parrot? what role do I apply then? | ||
| Tene | plobsing: If there's parrot behaviour that varies based on any roles that you want to happen for that type, you include those roles. If there isn't, you don't. | 03:26 | |
| I think I must be missing something about your question. | |||
| plobsing | so I could dispatch between IOError and NullPointerException, but not from eg: InvalidXMLException and InvalidDBConnectionString | 03:27 | |
| because those have either no analog, or the same "Parsing Error" type behaviour | 03:28 | ||
| Tene | plobsing: You could do whatever you wanted with your own types; If there's no parrot behaviour that varies with exception type that you want, then you don't have to do anything at all. This is the case for most exceptions. | 03:29 | |
|
03:29
Eduardow left
|
|||
| plobsing | so then what do the roles do? | 03:30 | |
| Tene | plobsing: as a specific example, all pct-based languages (at least) do loop control with exceptions that have type attributes set to CONTROL_LOOP_NEXT, CONTROL_LOOP_LAST, CONTROL_LOOP_REDO | ||
| plobsing: I'm looking for specific examples right now... 'sec | |||
| plobsing: fwiw, to me, the big issue is the other direction. | 03:31 | ||
| plobsing | the way I see it, PCT could create "LoopNext" "LoopLast" and "LoopRedo" singletons and use those as magic signal payloads | ||
| Tene | plobsing: if I want to catch DivideByZero errors, or IO errors, how can I detect those from any language? | ||
| plobsing | that is, in fact, what Ωη does now | 03:32 | |
| Tene | How can I annotate my exceptions as IO error such that any other language will recognize them? | ||
| plobsing: Sure, it certainly could. | |||
| plobsing: that would make it awkward for non-pct languages to interoperate there, though. | |||
| plobsing | Tene: are you suggesting that you could set up a loop in one HLL nested in the other? I don't see that as a very compelling use case. | 03:34 | |
| But the case for making core exceptions visible to HLLs does seem legit. | |||
| Tene | as far as I'm able to work out, with either exception class or payload class based filtering, I don't see how the types from two HLLs could be arranged to be appropriately comparable. | 03:35 | |
| plobsing | Tene: they likely cannot in general. The general case should be served with check-and-'rethrow'. | 03:36 | |
| but for specific exceptions, matching on class is a good idea | |||
| because many HLLs do that | |||
| Tene | plobsing: part of my motivation was to allow a reasonably-extensible set of exception types, such that if I want to catch all of a certain class of errors, and someone adds an error of that class, my code will catch it too. A static list of integer exception types doesn't work for that. | ||
| plobsing | no. and a static list of exception roles is no better. | 03:37 | |
| Tene | plobsing: my question is what the check would actually be. If a user in an HLL writes "catch all IO errors", what convention should HLL authors use to annotate their IO exceptions such that I can generate code to catch them? | 03:38 | |
| soh_cah_toa | don't meant to SIGINT you guys. i just wanna let all you late night hackers know that i've added the finishing touches to my proposal at www.google-melange.com/gsoc/proposa...kpolulak/1 | 03:39 | |
| plobsing | I think, if you're using cross-HLL interaction, you can be expected to catch exceptions from the other language's heirarchy | ||
| cotto | soh_cah_toa, great. | ||
|
03:39
petdance joined
|
|||
| plobsing | what are the odds that you will be doing IO operations from different HLLs? | 03:39 | |
| Tene | plobsing: pretty significant. Many libraries perform IO, and I expect most HLL interop to be basic library use. | 03:40 | |
| petdance | Anyone know the whole packfile API? | ||
| plobsing | Tene: sure. but creating a unified exception system is bound to cater to the lowest-common-denominator. | 03:41 | |
| cotto | petdance, what's your question about it? | ||
| plobsing | what we need is an *interoperable* exception system | ||
| petdance | There are many args in the funcs that are entirely unused. | ||
| I'm eitehr going to keep them SHIMmed up, or I'd prefer to remove them entirely. | |||
| cotto | petdance, start a branch and go nuts | 03:42 | |
| petdance | Not even gonna start a branch. :) | ||
| Tene | plobsing: Ah, right, the other minor reason I wanted to move to type-based was because it's awkward to use PIR constants from an HLL. | ||
| cotto | or that | ||
| petdance | Didn't know if there was future work impending. | ||
| plobsing | Tene: that's easily remedied. Use something like what Winxed does - read the constant.pasm and fill your constants appropriately. | 03:44 | |
| cotto | petdance, as long as the functions are internal and unused, there's a good chance they can be excised. | 03:45 | |
| petdance | Yeah, I'm not worried about breakage outside. More about "HEY, I WAS GONNA USE THOSE!" | ||
| Tene | plobsing: incidentally, one of the problems we ran into before I started this branch, was that adding new exception types to the big static list invalidated other bytecode that had used constants generated from earlier versions. | ||
| plobsing | Tene: yes, I agree the constant types are stupid. | 03:46 | |
| cotto | Tene, sigh | ||
| plobsing | and I'm not defending them | ||
| Tene | plobsing: yes, that's solvable by exclusively adding to the end of the list, but there's no way to coordinate changes there, etc. | ||
| plobsing: :) | |||
| plobsing: fwiw, I had remembered that there were places in parrot code that relied on specific exception types, but I'm not finding any, except the control exceptions in pct. | 03:47 | ||
| plobsing | the exception type is mostly unused, because it is so dumb | ||
| Tene | plobsing: I expect you feel similarly about exception severity, resumability, etc? | ||
| plobsing | I think we need some mechanism for resumability. I'm not really sure what severity is for. | 03:48 | |
| but I think that the thrower can work that out and tell parrot's bookkeeping about it. | |||
| alternatively, we could throw all the exception bookkeeping into the prophash of the thrown object | 03:49 | ||
| Tene | plobsing: erm, I mean "similarly" to refer to "doesn't belong in HLL exceptions; just set it in the core exception in your language builtin that throws" | ||
| plobsing: well, at that point, what's the point of the exception object at all? | |||
| plobsing | Tene: if we used prophashes, there would be no exception object. | ||
| that's the beauty | |||
| although there are disadvantages there too probably | 03:50 | ||
| Tene | plobsing: so, instead of changing parrot's checks from "== exception" to "isa exception", we could just drop the check entirely, and rm exception.pmc | ||
| plobsing | But, responding to your earlier question, no, I don't beleive that HLL exceptions should hold that kind of parrot-bookkeeping information. if the thrower thinks it is relevant, they can form an object graph between the ParrotException and the HLLException to mediate what they are looking for | 03:52 | |
| Tene: I'm not sure we could fully drop exception.pmc. What would core parrot throw? | |||
| Tene | plobsing: strings, of course. ;) | 03:53 | |
| plobsing | oh yes. strings as exceptions are marvelous. where is chromatic with some form of weapon when you need him? | ||
| Tene | plobsing: severity is currently used for 1) choosing to exit() in a few places and setting the return code of the process, and checking if we should automatically resume from a non-fatal exception if severity is less than EXCEPT_error | 03:57 | |
| (printing out a warning to stderr including the text of the exception if present) | 03:58 | ||
| Ahh, right, the "msg" attribute which is also used for get_str and set_str on parrot's exception objects. | |||
| That's another valuable thing we'd lose if we dropped exception objects; we'd have to print the stringification of the payload instead! | 03:59 | ||
| plobsing | and how is that a bad thing? | ||
| Tene | ;) | 04:00 | |
| dalek | rrot: e71a7ff | petdance++ | src/p (2 files): consting pointers, and annotating function pointers |
04:02 | |
| petdance | anyone else have t/perl/Parrot_Test.t failing? | 04:08 | |
| I am, but nobody on taptinder is | |||
| cotto | petdance, whiteknight or dukeleto might have seen failures earlier today | 04:11 | |
| petdance | and my t/src/extend_vtable.t has been failing for days as well | 04:18 | |
| plobsing | Tene: thanks for explaining subclassable exceptions. I think I now see how they make the state of parrot exceptions better. | 04:19 | |
| Tene | plobsing: I'm certainly not convinced that they're the best way to go, and I'm pretty sure that I agree that HLLs should probably not be subclassing exceptions, but should instead be putting their own exception objects in the payload. | 04:21 | |
| Not entirely convinced, though. | |||
| I'm pretty sure that real type information is going to be a better option than the type and severity attributes, though. | 04:22 | ||
| plobsing | nope. I still don't think they cover the whole problem. but it seems they would still be an improvement over the existing state of affairs. | 04:23 | |
| Tene | plobsing: what are you disagreeing with in "nope."? | ||
|
04:23
soh_cah_toa left
|
|||
| plobsing | I thought you were talking about me when you said "still not convinced" | 04:23 | |
| Tene | Ahh. | 04:24 | |
| No, I was saying that I'm not entirely convinced that HLLs subclassing Exception would be bad. | |||
| The main argument I've seen in favor of the type and severity attributes is that a single itneger compare is far faster than walking the inheritance chain or whatever. | 04:26 | ||
| dalek | rrot: ffb5e90 | petdance++ | / (2 files): removed the unused arguments from all the packfile functions and their function pointer types |
||
| Tene | If we move to using a prophash and letting users throw anything at all, though, we get the best of both worlds. | 04:27 | |
| plobsing | the inheritance chain can be cached. I don't think the int-compare argument holds much water. | ||
| Tene | It's also possible that there's multiple inter-related concepts here that could be disentangled. | ||
| plobsing | if we ever get a JIT with tracing, type-dispatch will be king | 04:28 | |
| Tene | if we get exception handlers static in bytecode, it would be possible in some cases to optimize 'next', 'return', etc. to a single goto. | 04:29 | |
| plobsing | Tene: I think in those cases, it should be possible for PCT to do that already. | ||
| Tene | plobsing: Quite possibly. exception shit is very poorly represented in PAST. I don't know why anyone lets me work on important subsystems. ;) | 04:30 | |
| afk; going home | |||
| plobsing | Tene: you are the most qualified. be afraid. | 04:31 | |
| ;) | |||
|
04:31
dngor_ left,
dngor joined
|
|||
| petdance | Dropping those function pointers makes me happy. | 04:41 | |
|
04:47
Eduardow2 joined
04:50
woosley joined
04:52
Kulag left
04:53
Kulag joined
04:59
Kulag left
|
|||
| dalek | rrot: ae4f8e1 | petdance++ | / (2 files): properly annotated some function pointers, and cleaned up 16 splint errors |
05:06 | |
|
05:08
Eduardow2 is now known as Eduardow,
Kulag joined
05:14
Kulag left
05:16
Kulag joined
05:20
jrtayloriv joined
05:38
petdance left
06:17
UltraDM joined
06:39
ShaneC left
06:41
theory left
06:49
ShaneC joined
06:58
cotto left
07:31
mj41 joined
07:35
UltraDM left
07:49
ShaneC left
08:20
jevin left
08:21
contingencyplan left
|
|||
| mikehh | got an error in t/examples/pod.t - Parse errors: Tests out of sequence. Found (336) but expected (335)... | 08:43 | |
|
08:43
jrtayloriv left
|
|||
| mikehh | never seen this before - Displayed the first 5 of 279 TAP syntax errors. | 08:44 | |
| Re-run prove with the -p option to see them all. | 08:45 | ||
| running prove -p t/examples/pod.t - t/examples/pod.t .. Failed 1/613 subtests -> | 08:48 | ||
| Parse errors: Tests out of sequence. Found (336) but expected (335) | |||
| Tests out of sequence. Found (337) but expected (336) | 08:49 | ||
| then lists up to | |||
| Tests out of sequence. Found (613) but expected (612) | |||
| Bad plan. You planned 613 tests but ran 612. | |||
| the Parse errors: etc. was in the Test Summary Report | 08:51 | ||
|
09:07
Kulag left
09:11
Kulag joined
09:39
JimmyZ joined,
JimmyZ left
09:47
mikehh left
09:55
woosley left
10:10
mtk left
10:16
mtk joined
10:56
bacek left
11:32
mikehh joined
11:38
darbelo joined
11:54
darbelo left
11:55
Patterner left
12:01
Psyche^ joined,
Psyche^ is now known as Patterner
12:02
UltraDM joined
12:10
bubaflub joined
12:39
plobsing left
13:06
ambs joined
13:08
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 13:16 | |
| bubaflub | morning whiteknight | 13:25 | |
|
13:25
darbelo joined
13:47
hudnix joined
13:48
Eduardow left
13:49
Eduardow joined
13:52
JimmyZ joined
|
|||
| whiteknight | hello bubaflub, how are you today? | 14:01 | |
| bubaflub | whiteknight: not bad, a little tired but workin' nonetheless | ||
| whiteknight: you? | |||
| whiteknight | pretty damn good, actually. Got a full night of sleep, and I've finally merged in my huge imcc refactors branch | 14:02 | |
| JimmyZ | whiteknight++ for huage mcc refactors branch | 14:03 | |
| NotFound | whiteknight: pong | 14:06 | |
| (pong from the past) | 14:07 | ||
| bubaflub | whiteknight: i saw that. need any testing? i've got Mac OS X 10.6 | 14:09 | |
| JimmyZ | tests are always welcome | 14:12 | |
|
14:18
darbelo left,
darbelo joined
|
|||
| moritz | last call for GSOC proposals: about 4 hours left until submission deadline | 14:22 | |
| whiteknight | NotFound: I was digging into problems with the finalize opcode, but I figured out what was going wrong | 14:28 | |
| NotFound: so, unpong | 14:29 | ||
| NotFound | Ok | 14:32 | |
|
14:42
JimmyZ left
15:05
theory joined
15:09
dod left
|
|||
| whiteknight | benabik: ping | 15:22 | |
|
15:27
mj41 left
|
|||
| whiteknight | msg benabik I would like to recommend some changes to your GSoC proposal, in light of the IMCC refactor work I merged last night. Let's talk about it when you have a chance | 15:28 | |
| aloha | OK. I'll deliver the message. | ||
|
15:31
UltraDM left
15:39
cotto joined
|
|||
| PerlJam | whiteknight: re Java bytecode for Parrot proposal, it's at the gist: gist.github.com/889846 | 15:41 | |
|
15:41
bacek joined
|
|||
| whiteknight | PerlJam: okay, but we're getting close to the deadline when it needs to be on the google-melange website | 15:42 | |
| I would hate to see the proposal get screwed up because of the deadline | 15:43 | ||
| PerlJam | Well, the URL for the gist is there. Are we really going to penalize a student who put a link to his proposal instead of the actual text of the proposal? | 15:45 | |
| NotFound | PerlJam: I don't know but I guess a contest have its rules. | 15:50 | |
| PerlJam | NotFound: I guess I'm more a "spirit of the law" than a "letter of the law" kind of person then. | 15:51 | |
| NotFound | PerlJam: a deadline is kinda letter. | 15:52 | |
| Anyway, both the spirit and the letter come from google, not from us. | 15:53 | ||
|
15:58
plobsing joined
16:02
JimmyZ joined
16:04
rohit_nsit08 joined
|
|||
| rohit_nsit08 | hello #parrot | 16:04 | |
| whiteknight | hello rohit_nsit08 | ||
|
16:05
nnunley joined
|
|||
| rohit_nsit08 | whiteknight: so today is the last day for the proposal submission :-) | 16:05 | |
| I've made some more improvements in mine and added the javascript object model in it | 16:06 | ||
| whiteknight: how will students know about their status ? | |||
|
16:07
|newbie| joined
|
|||
| |newbie| | hi | 16:07 | |
| PerlJam | hello |newbie| | ||
| |newbie| | nto os new | 16:08 | |
| not so new | |||
| load_language" couldn't find a compiler module for the language 'perl6' | |||
| Could someone help? | |||
| What path do I need to set? | |||
| What is it looking for? | |||
| this is what is given back by parrot. | 16:11 | ||
| cotto_work | ~ | 16:17 | |
| whiteknight | rohit_nsit08: we make comments if there is anything to change. Your proposal is good right now :) | 16:34 | |
| |newbie| do you have perl6 compiled and available on your machine? | 16:35 | ||
| |newbie| | yes | 16:36 | |
| whiteknight | |newbie|: where is the .pbc file loaded? Do you know where it is on your machine? | ||
| |newbie| | which one? | ||
| yes | |||
| whiteknight | |newbie|: the perl6.pbc file | ||
| |newbie| | yes | ||
| whiteknight | |newbie|: you should be able to use the -L option to parrot to add in a new search path | 16:37 | |
| parrot -L/my/path/to/perl6.pbc/ myprogram.whatever | |||
| |newbie| | no space after L? | 16:38 | |
| whiteknight | I don't think it's necessary | ||
| |newbie| | it does not make any difference, anyway | ||
| whiteknight | weird | ||
| |newbie|: can you nopaste the code you are running and the error message you are getting? | 16:39 | ||
| aloha, nopaste? | |||
| aloha | whiteknight: nopaste is is nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) | ||
| cotto_work | |newbie|: what's the process you went through to get Rakudo onto your system? | 16:42 | |
| |newbie| | nopaste.snit.ch/39705. | 16:43 | |
| I got the binaires | |||
| from sourceforge | |||
| dukeleto | ~~ | 16:45 | |
| Coke boggles. we have binaries on SF? | |||
| cotto_work | I think rurban provides them. | 16:46 | |
| whiteknight | yeah, that makes me nervous | ||
| are they current? | |||
| cotto_work | or fperrad | ||
| whiteknight | fperrad was doing it for a while I know | ||
| |newbie| | 3.2.0 | ||
| whiteknight | well I'll be damned | ||
| fperrad++ | |||
| |newbie| | 3.2.0 , is it current version? | 16:47 | |
| cotto_work | seen fperrad | ||
| aloha | fperrad was last seen in #parrot 1 days 1 hours ago joining the channel. | ||
| whiteknight | |newbie|: try this: parrot -L C:\\parrot-3.2.0\\lib\\parrot\\languages\\ -o D:\\m\\p6\\pirout.pbc D:\\m\\p6\\pirout.pir | 16:49 | |
| I suspect Parrot is doing something weird with search paths on windows | |||
| |newbie| | it does not help | 16:50 | |
| whiteknight | blah. Damn | 16:51 | |
| |newbie|: what are you working on? | |||
| plobsing | perhaps parrot was compiled with weird paths. parrot_config libdir should show where libraries are expected. | ||
| |newbie| | just trying to measure the execution speed of Perl6 program | ||
| which is compiled into pbc | 16:52 | ||
| plobsing | I don't think Rakudo supports compilation to PBC | ||
| it didn't last time I checked | |||
| |newbie| | but parrot does | 16:53 | |
| whiteknight | Parrot has more features than any compiler or language uses | ||
| NotFound | You can compile to pbc... but maybe the pbc doesn't work stand alone. | 16:54 | |
| dukeleto | |newbie|: howdy | ||
| |newbie|: what are you trying to do? | 16:55 | ||
| |newbie| | well, somebody tried it already under Linux | ||
| and claimed that the method works | |||
| I am under Windows. | |||
| Coke | the usual answer to this question on *nix is that the person only built perl6, but didn't install it. | 16:56 | |
| s/perl6/rakudo/ | |||
| |newbie| | not sure | 16:58 | |
| what you are getting at. | |||
| NotFound | That binary packages are supposed to be used together? | 17:00 | |
| I guess the rakudo package includes its own parrot. | |||
| Coke | I'm on windows at work. lemme try. | 17:03 | |
| |newbie|: did you just install "parrot-win32" ? | 17:04 | ||
| or "rakudoport", or...? | |||
| |newbie| | there is rakudo package | 17:05 | |
| and a parrot package | |||
| both need to be installed in the same directory | 17:06 | ||
| Coke | what is the name of the rakudo package? | ||
| |newbie| | setup-parrot-3.2.0.exe | ||
| and setup-parrot-3.2.0.exe-rakudo-39.exe | |||
|
17:09
lucian joined,
contingencyplan joined
|
|||
| Coke | ah, it's buried under the files dir of the parrot-win32 project... downloading... | 17:09 | |
| it concerns me that you reference both parrot-3.2.0 and parrot-1.4.0 in your script there. | 17:11 | ||
| s/script/nopaste | 17:12 | ||
| where is your "array.p6" file? | 17:13 | ||
|
17:14
JimmyZ left
|
|||
| nopaste | "coke" at 192.168.1.3 pasted "works with no changes to path here..." (5 lines) at nopaste.snit.ch/39709 | 17:15 | |
| cotto_work | Coke: do you have an installed parrot that might be making that work by accident? | 17:16 | |
| |newbie| | it contains this:my $h;$h=8*4;print $h; | ||
| that is the content of the file | |||
| Coke | "which parrot" says no. | ||
| so, what happens when you run "perl6.exe /path/to/array.h" ? | 17:17 | ||
| either when c:\\parrot-3.2.0\\bin is in your path, or you specify it directly. | |||
| |newbie| | nothing special | 17:18 | |
| it executes properly | |||
| Coke | cotto_work: er, and which which says D:\\bin\\which.bat, which is going through my %PATH% looking for executable things. | ||
| ok. so what is it you're trying to do? | |||
| |newbie| | convert into pbc and run it as pbc | 17:19 | |
| Coke | compile to pbc? | ||
| k. | |||
| so, I can use perl6 --target=pir to generate the PIR, but then cannot run the pir (ignoring the compilation to pbc) | 17:21 | ||
| and adding the -L doesn't help, right. | 17:22 | ||
| I have to run to a meeting, but "bug confirmed" | |||
| dalek | nxed: r941 | NotFound++ | trunk/winxedst0.cpp: minimal refactor of some op emisions in stage 0 |
17:24 | |
| mikehh | whiteknight: ping | 17:25 | |
|
17:31
dodathome joined
|
|||
| cotto_work | benlynn.blogspot.com/2011/04/list-c...-in-c.html (just because) | 17:43 | |
|
17:43
fperrad left
|
|||
| benabik | whiteknight: pong (delay: 2h 16m) | 17:44 | |
| ETIMEOUT :-( | 17:47 | ||
|
17:47
plobsing left
17:48
fperrad joined
|
|||
| benabik | msg whiteknight Today's a day off for me, but I'll keep an eye out for you. I think it's after the deadline for proposals, so I don't know if I can "officially" edit mine, but plans are always subject to change. :-) | 17:53 | |
| aloha | OK. I'll deliver the message. | ||
| whiteknight | benabik: I don't know about editing either | 17:54 | |
| benabik: have you read my blog post from today about the IMCC work? | |||
| benabik | whiteknight ohai, didn't see you there. ;-) Haven't seen it, no. | 17:55 | |
| whiteknight: Knew you merged the compreg branch, but hadn't looked at it in detail. | |||
| lucian | DEADLINE IN 4min! :) | 17:56 | |
| wait 1h4min | |||
| moritz | THE END IS NEAR | ||
| whiteknight | zomg | ||
| benabik: with the new refactor merged, it should be possible to replace IMCC with PIRATE and newPOST | 17:57 | ||
| lucian | CLOSE ALL WINDOWS. ENSURE TOILET SEATS ARE DOWN. LOCK ALL CHILDREN | ||
| whiteknight | benabik: an interesting project might be to implement a new Parrot frontend executable with PIRATE instead of IMCC | 17:58 | |
| more than interesting, it's something on our roadmap | |||
|
17:58
mtk left
17:59
mtk joined
|
|||
| benabik | whiteknight: Hmm. Does sound interesting but also mildly orthogonal to my current proposal. Although I'd guess merging PIRATE into master would require the PAST changes I'm talking about doing. | 18:00 | |
| whiteknight | benabik: not orthogonal, more an extension of your current work | ||
| PIRATE needs newPOST to replace IMCC. Once you have that part of it merged, you can follow the project to its logical conclusion | |||
| Merge in newPOST, update PIRATE to use it effectively, write a new frontend for Parrot without IMCC | 18:01 | ||
| sorear | Next time you break the PBC format, how will you get PIRATE working again? | 18:02 | |
| whiteknight | sorear: We still have IMCC, and it will stay the default for the forseeable future | ||
| but we want a second frontend which does not use it | |||
| benabik | whiteknight: I could try to add it to the tail end of my proposal, but I'd be worried about getting it done in the time allotted. If everything goes well, I could def look at it, but I don't like planning on everything going well. ;-) | 18:04 | |
| whiteknight | I have to take another look at your proposal | ||
| benabik | whiteknight: Or I could replace the "update POST with more features" with "merge PIRATE", I suppose. :-/ | 18:05 | |
| whiteknight | in the whole grand scheme of things, the reason we want to emit PBC from POST is to allow us to replace IMCC with PIRATE | ||
| and, in a wider sense, allow more compilers to avoid IMCC | |||
| it's all about killing IMCC | 18:06 | ||
| benabik | (Not saying I'm not interested in trying to do it, but don't want to cram too much into my project and leave it half-done if I don't have time when school starts in Fall.) | ||
| whiteknight | that's the big, ultimate goal | ||
| I'm not sure I see a huge benefit in rewriting PAST into NQP. Besides consistancy and readability maybe. I don't think we gain any architectural or performance improvements from that | 18:07 | ||
| moritz | we gain hackability. | ||
| whiteknight | is that lacking in PAST? | 18:08 | |
| I mean, it's not a fast moving target | |||
|
18:08
ShaneC joined
|
|||
| whiteknight | benabik: I suspect you will be able to translate PAST to NQP in a week or less | 18:08 | |
| benabik | whiteknight: I do tend to be somewhat pessimistic on time estimates. | 18:09 | |
| whiteknight | benabik: okay, that's good to a degree, but if things go faster we want to make sure you have plenty of things to work on to fill time | 18:10 | |
| there's no thumb twiddling in GSoC | |||
| benabik: We probably want to talk to bacek more about it, but if we could get newPOST merged to trunk, get PIRATE working on it, that would be a great start | |||
| a new parrot frontend program is a days worth of work with the new API | 18:11 | ||
| cotto_work | whiteknight: when did our old cow strings get ripped out? | ||
| whiteknight | benabik: here is a blog post I wrote on a similar idea: whiteknight.github.com/2011/01/20/p...ntend.html | ||
| cotto_work: as part of the immutable strings refactor | |||
| dalek | TT #2088 created by mikehh++: strange error in t/examples/pod.t | ||
| TT #2088: trac.parrot.org/parrot/ticket/2088 | |||
| whiteknight | cotto_work: I don't remember when that was. 2.7ish? | 18:12 | |
|
18:13
mtk left
|
|||
| cotto_work | whiteknight: ok | 18:13 | |
| whiteknight | cotto_work: why, are we reconsidering that change? | 18:14 | |
| cotto_work | whiteknight: no, I just want to get a handle on how cow works. | 18:15 | |
| whiteknight | oh, okay. the more I learn about cow, the less I like it | 18:16 | |
| at least, in a parrot setting | |||
|
18:17
dmalcolm joined
|
|||
| whiteknight | from everything I've seen COW + threads = bad | 18:17 | |
|
18:17
mtk joined
|
|||
| lucian | whiteknight: that's a general truth | 18:19 | |
| benabik | whiteknight: I could shrink the "convert" phase down a week and add a week for "create PIRATE-based parrot frontend." Or add it as a "if time allows" deliverable. The end of my proposal is purposefully vague because bacek seemed slightly uncertain about what features are still needed and I thought I'd be somewhat likely to encounter them as I went. | ||
| lucian | whiteknight: your COW can however be good enough to work with threads | ||
| whiteknight | benabik: an "if time allows" entry would be ideal | ||
|
18:19
plobsing joined
|
|||
| cotto_work | I'm thinking about it as a way to share variables between m0 contexts | 18:20 | |
| whiteknight | is an m0 context like a thread or a green thread? both? neither? | 18:21 | |
| moritz | wow, why do all those people want to write Pod6 parsers for parrot? | 18:22 | |
| whiteknight | no idea | 18:23 | |
| it is curious | |||
| moritz | was it on the parrot ideas page? | ||
| whiteknight | yes | ||
| I suspect last-minute students are trolling the list for something that appears easiest to do | |||
| cotto_work | whiteknight: it's close to what PARROT_INTERP is now. | ||
| moritz could understand it if parrot folks wanted a p5 pod processor, for reducing th p5 dependency | |||
| whiteknight | cotto_work: okay, so like a parrot thread. we probably don't want COW for that | 18:24 | |
| lucian | whiteknight: from the literature i've read, you can do persistent immutable data, and COW on top | ||
| but i don't know if that'd work | 18:25 | ||
|
18:25
soh_cah_toa joined
|
|||
| whiteknight | lucian: sure, we could do some kind of a proxy over immutable objects to provide something like COW | 18:25 | |
| lucian | so thread A owns pmc1 | ||
| whiteknight | hell, Rosella can do that today | ||
| lucian | thread B sees pmc1 as immutable | ||
| pmc1 uses a persistent data structure | |||
| whiteknight | the problem with that kind of system is that thread B can't easily communicate changes to pmc1 back to thread A | ||
| lucian | to modify, thread B gets a clone of pmc1 with COW, and structura sharing | 18:26 | |
|
18:26
davidfetter joined
|
|||
| lucian | whiteknight: it can't, must return a new one | 18:26 | |
| whiteknight | and that's what we most need. Sending immutable data from A to B is easy, but sending changes back is hard | ||
| lucian: okay, so a message-passing system? | |||
| that's fine by me | |||
| lucian | whiteknight: a bit. do you know clojure? | ||
| whiteknight | no. but I know other made-up words | ||
| frabulate | |||
| lucian | if your data structures (in this case pmcs) use structural sharing, you can treat them as immutable | 18:27 | |
| when you return pmc1.1 to thread A, it's transparently diffed over pmc1 (easy with structural sharing) | |||
| you then get pmc1.2 in thread A | |||
| no memory waste, completely safe, few locks | |||
| but it's a bit intrusive (all data with COW must use this system) | 18:28 | ||
| but this system doesn't easily work for certain data structures you might want | |||
| like arrays ... | 18:29 | ||
| whiteknight | What we really need to do is provide a simple mechanism to share data, and let HLLs built up from there | ||
| lucian | clojure works around this by "sharding" arrays into trees with a constant depth | ||
| i'm quite sure "classical" concurrency primitives will be necessary | |||
| threads and locks and monitors and all that evil | |||
| necessary to be exposed to HLLs that is | 18:30 | ||
| i'm not sure it can be worked around, even if that'd be very nice | |||
| whiteknight | yeah, that's the trick. We don't want to provide "The Solution", we want to provide the tools and let HLLs provide solutions | 18:31 | |
| or extension projects | |||
| lucian | but as soon as you allow threads with full memory sharing + locks, you're kinda fucked | 18:32 | |
| can't cooperate with evil like that very well | |||
| whiteknight | right, that's where I keep coming back to. I don't think we want full data sharing | ||
| I would rather have some kind of system that could provide the illusion of sharing, without the headaches | 18:33 | ||
| lucian | en.wikipedia.org/wiki/Persistent_data_structure in case you're not familiar | ||
| whiteknight: you can, with a little breakage | |||
| whiteknight | what do you mean breakage? | ||
| lucian | you need great async APIs and very, very, very fast greenlets | ||
| benabik | whiteknight: I added a note about a new frontend to deliverables and project details, but left the timeline alone. | ||
| whiteknight | benabik++ | ||
| lucian | whiteknight: HLLs will introspect the actual treads | ||
| can't emulate POSIX threads entirely | 18:34 | ||
| whiteknight | lucian: that's basically what I've been thinking about. N:M hybrid threads, cheap greenlets, and message passing | ||
| lucian | ah, but N:M is HARD | ||
| whiteknight | not necessarily, especially if we're not sharing data | ||
| lucian | have you looked at how erlang does it? | 18:35 | |
| they just have all APIs async + no sharing | |||
| whiteknight | that's where the idea is self-referential. So long as we have no sharing, we can do N:M scheduling without too much headache | ||
| and greenlets are basically parrot continuations, maybe with a little overhead, so that's mostly ready to go | |||
| lucian | however, you'll need to be able to break the abstraction every now and then | ||
| from M1 or something | 18:36 | ||
| whiteknight | internally, sure. I don't think the user would ever need it broken | ||
| lucian | i would hope so, but i'm not sure | ||
| after Python3 works (wink wink, nudge nudge), i should have a more informed opinion | |||
| whiteknight: there are some videos on clojure's structural sharing, quite interesting | 18:37 | ||
| whiteknight | if we have that system, we could pretend to have a more classic system by setting N=M, and providing a library of locks. | 18:38 | |
| and if we have both a class threading api, and a message-based greenlets API, we should be able to build anything on that | |||
| lucian | yes, but the classic threading api will leak non-posix-ness | 18:39 | |
| anyway, it's a very good idea | |||
| and it'd make parallelism folks' eyes gleam | 18:40 | ||
| whiteknight | I didn't say our classic threads api would be posix-ish | 18:43 | |
| lucian | whiteknight: the cool thing is, with persistent data structures we might end up simulating shared mutable data safely | ||
| whiteknight: well, it'd have to be close enough for HLLs to be fooled | |||
| whiteknight | there's no reason to expect that a high-level VM like Parrot would simply duplicate that low-level standard | ||
| lucian: sounds like a very interesting research project. You interesting in gradschool? :) | 18:44 | ||
| lucian | whiteknight: is that USspeak for postgraduate? | ||
| i am interested in a PhD, yes. few ideas too | |||
| whiteknight | I keep looking for places to go back for my PhD. | 18:45 | |
| lucian | yeah, i have 1year to do that | ||
| (i'll be working in Paraguay for one year, starting this summer) | |||
| whiteknight | My MS is in EE, but I'm much more interested in software stuff. | ||
| Paraguay? That's quite an interesting destination. What are you doing there? | |||
| lucian | i see. that's an ongoing trend | ||
| Activity Central have hired me to work on Sugar activities | 18:46 | ||
| well, haven't signed contracts yet | |||
| whiteknight | is that going to interfere with GSoC? | 18:47 | |
| and, are there any good universities in Paraguay? | |||
| lucian | no, it's after | ||
| uh, i don't know. i was sort of planning to come back to the UK | |||
|
18:48
particle1 joined
|
|||
| whiteknight | I saw a draft of Allison's dissertation proposal at one point that was extremely interesting to me | 18:50 | |
| of course, it would probably be rude to steal it for myself :) | |||
| lucian | possibly, yes | ||
| whiteknight | I'm not sure I can think of anything in the world more interesting or personally rewarding than implementing that kind of threading system for Parrot | 18:51 | |
| that would be killer | |||
| lucian | heh | ||
|
18:52
particle left
|
|||
| lucian | i could think of a few, ranging from unlikely to UNFRIGGINGPOSSIBLEGOAWAYANDCRYNOW | 18:52 | |
| whiteknight: this is interesting, but not the one i wanted blip.tv/file/812787 | 18:53 | ||
| whiteknight | oh, nice | 18:54 | |
| lucian | think it's this one www.mefeedia.com/watch/24163595 | ||
| carefully watch the persistent data structure bits | |||
| whiteknight | It seems clojure needs to go on my list of languages to learn | ||
| lucian | also if you haven't seen clojure before, there are "clojure for lispers" and "clojure for javaers" talks | 18:55 | |
| yes, it's imo the best lisp out there, closely followed by racket | |||
|
18:56
|newbie| left
|
|||
| PerlJam | woo! Some people are cutting it close with their submissions. | 18:57 | |
| (gsoc) | |||
| whiteknight | I have so many topics that I need to research | ||
| lucian | heh, looks like a blatant python ripoff vimeo.com/11236603 | 18:58 | |
| whiteknight: same, i know | 18:59 | ||
| soh_cah_toa | PerlJam: just making some last minute adjustments | ||
| benabik | Ditto here. | ||
| PerlJam | soh_cah_toa: yeah, that's fine ... but there have been a couple of new submissions in just the last few minutes. | ||
| soh_cah_toa | what? really? that's kind of irresponsible | 19:00 | |
| gsoc is my top priority right now. there's now way i would let something like that go undone until the last minute | 19:01 | ||
| *no | |||
| benabik | soh_cah_toa: Agreed. I've been treating my GSoC proposal like a job application or research proposal. You don't leave it until the last minute and go "here, pick me." | 19:03 | |
| soh_cah_toa | i know | ||
| PerlJam | I prefer to give people the benefit of the doubt. There could be all sorts of reasons for such late submissions. It'll all get sorted out in the next week or so. | 19:04 | |
| plobsing | do we even know the people making these submissions? most of the gsocer's I'd consider "legit" have been in this channel for a week or more. | 19:05 | |
| whiteknight | treating GSoC like a job is good. I put mine on my resume, and it did a lot to help me get my first job | ||
| soh_cah_toa | ohh...really? | ||
| whiteknight | oh yeah. I didn't do an internship in college, so GSoC was my whole "real world experience" section | ||
| soh_cah_toa | i suppose you're right b/c they can just go online and see your work | 19:06 | |
| whiteknight | worked with a team, designed and developed new software myself, my work is being used by X people in the real world, etc | ||
| KaeseEs | "real world experience? *points to github*" - whiteknight, 200x | ||
| whiteknight | :) | ||
| benabik | I have contract work and such, but I can't really show off those projects. :-/ | ||
| whiteknight | back in my day, we didn't have github | ||
| dukeleto just got access to the OSUOSL Supercell cluster | 19:07 | ||
| whiteknight | oh awesome | ||
| KaeseEs | oi dukeleto i'll try to get some work done on the gsl bindings over the summer even though i'm taking classes instead of doing soc | ||
| dukeleto | KaeseEs: sounds awesome | ||
|
19:08
dodathome left
|
|||
| whiteknight | KaeseEs++ | 19:09 | |
|
19:10
pjcj left
19:12
dodathome joined
|
|||
| benabik | whiteknight: I needed a lot of RAM just to load the github version of that merge diff. Might want to put the warning before the link. Just saying. ;-) | 19:26 | |
| cotto_work | e did | ||
| benabik | cotto_work: The blog post says "<link> is big. Don't load it without RAM or unless you hate github." I clicked on the link when I ran across it for reference and my computer started bogging down... (Too much crap left open.) | 19:28 | |
| dukeleto | Seems like GSoC student app deadline has passed. | 19:30 | |
| whiteknight | yeah, and not a moment too soon | ||
| cotto_work | 6 at the last minute | 19:31 | |
| dukeleto | wow! | ||
| dukeleto hasn't logged into melange in a while | |||
| cotto_work | total of 15 | ||
| benabik | All POD parsers? | ||
| cotto_work | benabik: a couple aren't | ||
| dukeleto | cotto_work: how many non-overlapping proposals do we have? | 19:32 | |
| whiteknight | I sent out an email this morning to mentors, and we had 11 proposals at that time | ||
| dukeleto | cotto_work: i.e 2 proposals for POD parser just counts as 1 | ||
| cotto_work | dukeleto: looks like we have 3 | 19:33 | |
| whiteknight | yeah, pod is the most interesting thing ever, apparently | 19:34 | |
| KaeseEs | interesting in that the wiki listed it as 2 stars :v | ||
| whiteknight | What I suspect is that last-minute students are trolling the idea pages looking for easy projects | 19:35 | |
| what's most annoying is that if those same students had taken 15 minutes to come talk to us, they could have avoided the duplicate, found a different project that would really be beneficial, and have had a much higher chance of getting accepted | 19:36 | ||
| cotto_work | whiteknight: not doing that is probably a good indicator | ||
| whiteknight | that's my thought exactly | 19:37 | |
| especially if we don't hear a peep from any of those students before the decision deadline | |||
| benabik | I think they missed the "Would-be student participants discuss application ideas with mentoring organizations" part of the timeline before the application period. | 19:38 | |
| cotto_work | As far as I'm concerned, those students have more to prove than others who've shown the initiative to hang out in #parrot or talk to parrot-dev. | ||
| They've still got a chance though. | |||
| benabik | Although some of my classmates hadn't heard of GSoC until I started mentioning it this week. (Mostly as part of my "ahhh too much to do around midterms" rant.) So giving them some doubt is nice. | 19:40 | |
| whiteknight | cotto_work: exactly right. The students we've been talking to have less unknowns. I *know* that soh_cah_toa and rohit_nsit08 understand their projects, and are familiar with Parrot, and know what's going on | ||
| I don't know that about other applicants | |||
| er, applicants we haven't talked to | 19:41 | ||
| cotto_work | benabik: sure. One of them could well produce a viable POD parser, we just don't know atm. | ||
| whiteknight | there is always a chance, especially if those students get in here NOW and start talking to us NOW | ||
| we can't accept a student sight unseen | |||
| cotto_work | one of the POD students is on the wiki list of students | 19:42 | |
| whiteknight | right, one of them was on google-melange for a few days and has feedback | 19:43 | |
| if google gives us 15 slots, no worries | |||
| cotto_work | I don't know if we could support 15 projects. | 19:44 | |
| whiteknight | maybe not. Definitely not if we have students who need a lot of hand-holding | ||
| Some of our students I know are self-sufficient, and others of them I suspect it highly | 19:45 | ||
| darbelo | We have at least one proposal claiming not to really have that big a need for a mentor, if that makes you feel better :) | 19:46 | |
| whiteknight | really? which one? | ||
| anybody who claims not to need a mentor probably needs it most of all | |||
| cotto_work | whiteknight: excellent feedback on the sub profiler project. | 19:47 | |
| whiteknight | I'm actually very hopeful about that one. I hope that student does get in touch with us | 19:48 | |
| I mean, there's potential. It's going to be hard as hell | |||
| cotto_work | me too, though I'm not sure it'd be a summer's worth of work | ||
| whiteknight | depends on the student. Can't assume they are all whiz coders | ||
| cotto_work | true, and parrot guts are a twisty maze of mazes, all alike | 19:49 | |
| darbelo | You are likely to bea eaten by undiscovered and unimagined creatures of dubious existence. | ||
| cotto_work | darbelo: have you seen any interest in decnum-dynpmcs? | 19:51 | |
| darbelo | If there is, none of it has reached me. Which makes me a bit sad, but not at all surprised. | 19:52 | |
| cotto_work | I'm glad it's part of the ecosystem. | ||
| I feel the same way. | 19:53 | ||
| darbelo | The number of humans interested it that particular branch of numerical weirdness is small. | ||
| cotto_work | dukeleto's one of them | ||
| but he's known-weird | |||
| dukeleto is quite weird | |||
| cotto_work: :) | |||
| darbelo | As am I. | ||
| (on both counts...) | |||
| benabik | whiteknight: I hadn't realized how convoluted IMCC was. Thanks for throwing yourself on that grenade. | 19:55 | |
| whiteknight | benabik: If I spend enough time complaining about something, eventually I need to just suck it up and fix it | 19:56 | |
| and I've spent plenty of time complaining about IMCC | |||
| benabik | From the looks of it, you've well earned the right to complain about it. | 19:57 | |
| tadzik | yeah, now when someone says "then do it better" you can say "I did, LOL" :) | ||
| cotto_work | and we'll all laugh and throw another struct on the fire | 19:58 | |
| tadzik | ( he did it! Now make him complain about calling conventions! ) :P | 19:59 | |
| whiteknight | calling conventions are not nearly so bad as they used to be | ||
| I think they can be a hell of a lot better if we use a design that isn't so monolithic | |||
| I mean serious, fill_params is a travesty | |||
| and slow as can be | 20:00 | ||
| Actually, I bet I could put together a benchmark demo to show how much faster parroy could be without it | 20:01 | ||
| parrot | |||
| cotto_work | and rakudo wouldn't even notice | 20:02 | |
| whiteknight | If we didn't have get_params opcode at all, and replaced it with a get_sig opcode to return the current sig, the callee could do keyed indexing into the callsig directly to get parameters | 20:03 | |
| that is what fill_params does now, but in a loop and it has to check every possibility | |||
| we can take it out of the loop, and each callee can only search for the things that it knows it needs | |||
| we probably still need fill_params for calling methods from C, or calling C-based methods to unpack the signature into a varargs list | 20:04 | ||
| but we could take it out of the PIR invoke hotpath, which is one of the most common | |||
| great, now I know what I'm doing this weekend. | 20:05 | ||
| darbelo | reviewing GSoC proposals? :) | ||
| whiteknight | that too | ||
| benabik | tadzik++ # Getting whiteknight++ to complain about calling conventions :) | ||
| NotFound | whiteknight: I suppose we can have both. | ||
| whiteknight | benabik: yeah, like it took him much effort | 20:06 | |
| benabik | whiteknight: Someone still has to have the idea. :-D | ||
| whiteknight has to go now. Meeting. | 20:07 | ||
|
20:07
whiteknight left
|
|||
| mikehh | darbelo: I have played around with it a bit - have a couple of clients who need something like that | 20:18 | |
| darbelo: although they mostly use C++ type code with the IBM libraries, a nice dynamic language would be good | 20:19 | ||
| darbelo | It's a fairly thin wrapper, since the library is already fairly object oriented. | 20:20 | |
| mikehh | darbelo: you need to move it to parrot's git reposirtory :-} | ||
| darbelo | Good point. I whould probably look into that some time. | 20:21 | |
| mikehh | I like the GMP proposal and I am one of them wierd types who play around with that sort of stuff | 20:23 | |
| cotto_work | We seem to have an unusual population of math nerds. | 20:25 | |
| mikehh | it generally leads to things like parrot and such stuff :-} | 20:26 | |
|
20:32
dodathome left
20:35
dafrito left
|
|||
| darbelo | I think that what led me to pick up decnumber wasn't math-nerdness. I saw it as the time as a sort of therapy for the damage that implementing floating point hardware caused to my brain. | 20:36 | |
|
20:37
fperrad left
|
|||
| cotto_work | that sounds...ow | 20:40 | |
| mikehh | darbelo: IBM implements it in hardware on the Power series and mainframes | 20:41 | |
| darbelo | mikehh: Yeah. I remember reading about that while preparing for the proposal. | 20:42 | |
| Decimal math is also very common in COBOL systems, but I tend not to mention it. "COBOL does it" is rarely taken as a good thing by people. | 20:44 | ||
| :) | |||
| To be fair, the fp implementation process isn't that traumatic ordinarily, but I was working with seriously bad tools at the time, and the debugging stage was hellish. | 20:45 | ||
| davidfetter | decimal math is a very big deal in finance or anything else that counts money | 20:46 | |
| darbelo | Indeed. I had forgotten about the 'telco benchmark' | 20:47 | |
|
20:47
lucian left
|
|||
| darbelo | I had plans to throw that at decnum-dynpmcs and see how it fared. | 20:48 | |
| mikehh | decimal arithmetic is very important with certain type of financial institutions | 20:51 | |
| things like banks, insyrance companies, investment types etc, mybe even gevermint | 20:52 | ||
| mikehh I can't belive I typed that line :-} | 20:53 | ||
| davidfetter tyops to keep mikehh company | 20:54 | ||
| mikehh | "a year ago I culdn't even spell ingineer, now I are one" | 20:55 | |
| NotFound | mikehh: I suppose they use it to create global crisis. | ||
| mikehh | NotFound: all sorts of instruments, hedges, options and such like :-} | 20:57 | |
| tadzik | ano | ||
| whoops, ww | |||
|
21:07
jrtayloriv joined,
lucian joined
21:09
ambs left
21:11
lucian left
|
|||
| cotto_work | github.com/kevinlawler/kona - suddenly our internals look amazingly good | 21:30 | |
| I suppose it'd be effective if you could keep the important conventions in your head, but blargh | 21:33 | ||
| bubaflub | cotto_work: what is this i don't even | 21:34 | |
| darbelo | I wonder if whitespace's more expensive in his country. I could probably mail him some. | ||
| bubaflub | darbelo: we should start up a relief effort | 21:35 | |
| darbelo | Or maybe he's surrounded by too many python programmers who are using up all of it. | ||
| cotto_work | My new goal is to start a project, half of which is written in his style of C and half of which is enterprise-grade java. | 21:36 | |
| darbelo | Having just finished a hideously rushed android app, I think Ive had enough java (of any grade) for a while. | 21:37 | |
| I can probably help with the C side of things though. | 21:38 | ||
| Heck I'll even get you a free CVS repo for you to host it on :) | 21:40 | ||
| cotto_work | I don't trust CVS. | 21:41 | |
| I'll use differently-named files for version control. | |||
| and put it on github | |||
|
21:41
dafrito joined
|
|||
| darbelo | Or maybe we should just use RCS on top of NFS... Those are surely proven technologies by now. | 21:41 | |
| Distributed network access to source code is important nowadays. | 21:43 | ||
| cotto_work | Gah. Some junk at $dayjob went down because nfs is awesome earlier today. | ||
|
22:09
pjcj joined
22:12
Eduardow left
22:29
rohit_nsit08 left
22:32
particle1 is now known as particle
22:41
darbelo left
|
|||
| bubaflub | msg Whiteknight I've been reading your blog posts about Rosella and now i'm sold on it. the project looks great. | 22:42 | |
| aloha | OK. I'll deliver the message. | ||
|
23:12
bubaflub left
23:19
whiteknight joined
|
|||
| whiteknight | good afternoon,#parrot | 23:27 | |
|
23:31
kid51 joined
|
|||
| cotto_work | good evening, whiteknight | 23:31 | |
| whiteknight | hello cotto_work, how are you doing? | ||
| cotto_work | fridayishly | 23:32 | |
| sorear | hello whiteknight | 23:37 | |
| saw your latest blog post. do you beleive IMCC can be returned to its former genius? | |||
|
23:37
benabik_ joined
|
|||
| whiteknight | sorear: not without taking a hacksaw to the PIR spec | 23:38 | |
| sorear: the big problem with IMCC is that it's gone from it's humble roots to the everything-for-everyone solution | |||
| and I heave to believe that for the same effort we would start from scratch instead of trying to fix IMCC in place | 23:39 | ||
| benabik_ | whiteknight: Hence something like pirate? | 23:40 | |
| whiteknight | benabik_: exactly | ||
| once we have Lorito, much of Parrot can be rewritten in m0 instead of C. That includes (presumably) the front-end assembler | 23:41 | ||
| plobsing | A simplified grammar that didn't have convenience features like heredocs and naked labels would be much easier to parse. | ||
| whiteknight | PIRATE is that | ||
| plobsing: yes, that's true | |||
| plobsing | in fact, most of IMCC's line number issue stems from heredocs. they just don't fit with lex/yacc, or easily with nqp as bacek witnessed | 23:42 | |
| although IIRC he did get that working | |||
| whiteknight | plobsing: if we took out heredocs, naked labels, macros, PASM mode and maybe a few other things, we could clean IMCC up a lot | ||
| plobsing | see, I don't perceive PASM mode to be much of an issue, and macros are still fairly solidly implemented. | 23:43 | |
| whiteknight | plobsing: I wonder if we could come up with a better syntax for multiline string literals hat was easier to parse | ||
| PASM mode isnt much of an issue, but it's something we should be able to abandon at this point | |||
| plobsing | whiteknight: yeah "line 1\\n line 2 \\n and so on \\n" | ||
| whiteknight | plobsing: in C#, they have a syntax @" ... " | ||
| and that can be multiline | |||
| plobsing | if you are generating PIR mostly with tools, heredocs are useless anyways. | ||
| whiteknight | that's true | ||
| that's part of the genius that IMCC lost over the years: its focus | 23:44 | ||
| plobsing | the whole point of special multiline syntax is to encourage a practice (hand writing code) that we should be actively discouraging in IMCC | ||
| whiteknight | all these convenience things get added over time, and now IMCC is trash | ||
| benabik_ | Seems like we need a pir pre-processor | 23:45 | |
| whiteknight | that's probably overkill | ||
| we need to start deprecating | |||
| either we should slice and dice PIR, or we should create a new assemby language to replace it | |||
| benabik_ | Heredocs and macros could probably be done with a small purpose built utility. | 23:46 | |
| cotto_work | PIR's macros make the m0 prototyping nicer. I wouldn't mind seeing heredocs go away. | ||
| it'd mean rewriting a bunch of test code though. | 23:47 | ||
| NotFound | Why on earth do you need heredocs in an assembler? | 23:48 | |
| cotto_work | NotFound: you don't. Discuss. | ||
| ;) | |||
| kid51 | If we replace PIR, then what is Parrot? | 23:49 | |
| What is Parrot if not PIR? | 23:50 | ||
| cotto_work | Parrot's a VM that we happen to manipulate through PIR. | ||
| kid51 | The term VM is used in so many different ways in IT that it's not clear in what sense Parrot is a VM. | 23:51 | |
| NotFound | We can just say its a M. | ||
| benabik_ | Parrot's main interface would become PBC instead of PIR | ||
| no? | |||
| kid51 | For example, where I work if people say "VM", they mean the sort of thing VMWare sells. | ||
| Or like my Linode server. | 23:52 | ||
| cotto_work | Parrot's a VM in that sense. It just uses its own instruction set instead of x86 or x86_64 | ||
| NotFound | Long time a go, in a planet not far way, that things were called p-codes. | 23:53 | |
|
23:54
dmalcolm left
|
|||
| kid51 | whiteknight: In your blog post you wrote, "IMCC poked directly into the internals of Parrot ..." | 23:56 | |
| That implies that something *else* constitutes the "internals of Parrot." What is that 'else'? | |||
| NotFound | Note that we use a preprocessor for heredocs, macros, or whatever, we may need a way to set source line numbers in the generated code, so the small purpose utility puts more work in the back end assembler. | 23:57 | |
| benabik_ | Don't we already have .file and .line annotations? | 23:58 | |
| sorear | NotFound: we already need .annotate for HLLs | ||
| NotFound: this "preprocessor" should be thought of as a HLL in its own right, since sane HLLs will target PIR directly | |||
| NotFound | sorear: then we don't need that preprocessor. | 23:59 | |
| benabik_ | sorear: +1. HumanPIR, Hand-Written PIR | ||
| sorear | this preprocessor could be called "pirate" or maybe "winxed" | ||
| NotFound | Then it's not a preprocessor, is a HLL. | ||