Parrot 4.3.0 "In Which..." | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 25 April 2012.
whiteknight something has to be broked with that smoker 00:00
kid51 tt.taptinder.org/buildstatus/parrot/master
Or else, something is broken on Win32 build 00:01
cotto ~~
kid51 After dinner I'll have to file a bug ticket. 'make headerizer' apparently fails to update the HEADERIZER section of files when the change in a .c source code file is to *remove* a function that was previously headerized. 00:02
whiteknight let me fire up my winxp vm and see what I can see 00:05
kid51: build runs fine on my winxp box. No error 00:31
ttbot Parrot 708e44d3 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/84056 00:34
whiteknight blah, our behavior with exit() is still far less than optimal 00:36
so many places in the code just call exit() instead of something more suited like PANIC() or exit_fatal() or Parrot_x_exit() 00:37
nbrown cotto: I'm not pleased with how forgiving it is. I'll probably do more work on linux now that I resurected my linux vm 01:04
cotto: As for the scripting interface and parsing output, that's all I could think of too and I don't love that idea, but I guess we'll have to do it at some point 01:05
kid51_at_dinner github.com/parrot/parrot/issues/769 01:06
aloha (parrot/parrot) Issues opened : 769 ('make headerizer' fails to remove code from .h files when underlying functions have been deleted from .c files) by jkeenan : github.com/parrot/parrot/issues/769 01:10
dalek rrot: c77b11f | Whiteknight++ | src/ (7 files):
Replace several instances of the C exit() call with more controlled alternatives
01:56
rrot: b1e9b39 | Whiteknight++ | / (9 files):
Delete the function exit_fatal. Replace it with a new Parrot_x_panic_and_exit (may be renamed). Add a new macro PARROT_FORCE_EXIT to use in place of the libc exit(i) routine, which should not be used on all platforms
rrot: e3ce02c | Whiteknight++ | / (16 files):
Replace the old do_panic function with a newer Parrot_x_panic_and_exit. Rename the previous Parrot_x_panic_and_exit with Parrot_x_force_error_exit
rrot: c9ad9c4 | Whiteknight++ | src/exit.c:
POD for Parrot_x_force_error_exit and Parrot_x_panic_and_exit
rrot: dbe4981 | Whiteknight++ | src/exit.c:
Update documentation in exit.c
rrot: 429329c | jkeenan++ | include/parrot/exit.h:
[codingstd] Add space between 'while' and subsequent open parenthesis.
02:05
rrot: 698560f | Whiteknight++ | src/ops/core_ops.c:
bootstrap-ops, which I forgot to do after my last ops edit
02:06
02:27 benabik joined
benabik ~~ 02:29
ttbot Parrot c77b11fc MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/84176 02:41
cotto nbrown, yeah. Feel free to think about it for a while, but the sooner something gets implemented, the less immediate work it'll entail. 03:04
We also need to be careful that the tests are minimally brittle. 03:08
ttbot Parrot 698560f3 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/84187 03:09
benabik ttbot needs to be cleaned out or shut up.
cotto anyone mind? 03:10
is it mj41 who takes care of ttbot?
sorear who owns ttbot?
nbrown cotto: sure, I'll probably try to write up something about it this weekend 03:20
I think one of the first steps will be to isolate the user interface and debugger logic. I took the first step with the commits that implemented the gdb return behavior, but I need to put together a real architecture to make sure I don't back myself into a corner 03:22
benabik aloha: ttbot? 03:23
aloha benabik: ttbot is see taptinder
benabik aloha: taptinder?
aloha benabik: taptinder is continues integration tool - taptinder.org . For Parrot project running on tt.taptinder.org/ and reporting build failures to #parrot channel as ttbot.
benabik cotto: github.com/mj41/TapTinder, so seems likely.
03:46 alester joined
dalek rrot: fda8f2e | petdance++ | frontend/pbc_merge/main.c:
localizing vars and fixed a const
03:46
alester ping kid51 03:52
cotto nbrown, I'm glad you're giving some thought to proper architecture for m0-debugger. If you want to start a gist, wiki page, issue or whatever, go for it. 03:57
04:00 dduncan joined 04:02 dduncan left
dalek rrot: e640c08 | petdance++ | src/extend.c:
Remove bad HEADERIZER HFILE comment
04:20
rrot: a6ec4a1 | petdance++ | include/parrot/exit.h:
reran headerizer
aloha (parrot/parrot) Issues closed : 769 ('make headerizer' fails to remove code from .h files when underlying functions have been deleted from .c files) by jkeenan : github.com/parrot/parrot/issues/769 04:31
ttbot Parrot fda8f2e7 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/84256 04:32
Parrot a6ec4a14 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/84267 05:02
05:32 japhb joined 06:00 alin joined 06:19 fperrad joined 06:58 brrt joined
dalek kudo/nom: 128e996 | moritz++ | / (2 files):
implement rindex with parrots new rindex opcodes

bump NQP revision to something that requires a new enough parrot
07:20
kudo/nom: d61049f | moritz++ | src/core/Rat.pm:
improved Rat.Str by TimToady++
p: eee0fa5 | (Arne SkjƦrholt)++ | / (4 files):
First cut of handling explicitly managed strings.
07:22
p: abef7b9 | (Arne SkjƦrholt)++ | src/6model/reprs/CStr.c:
Handle encoding parameter for CStr representation.
p: 6df554d | moritz++ | / (4 files):
Merge remote branch 'origin/cstr'
p: 17cc549 | moritz++ | tools/build/PARROT_REVISION:
bump parrot revision to get rindex ops
08:03 alin joined 08:18 lucian joined 08:37 cosimo joined 09:28 perlite joined 11:48 benabik joined
benabik ~~ 11:50
12:21 brrt joined 12:46 whiteknight joined 12:55 PacoAir joined
whiteknight good morning, #parrot 12:55
benabik o/ whiteknight 13:01
whiteknight good morning benabik. How are you doing today? 13:03
benabik I'm alright. A little sleep deprived. I should know better than to start working on something just before bed. 13:04
whiteknight I know that feeling. I spent way more time last night than I was planning to do on making our exit behaviors more sane
And I'm still not there yet
benabik I had to upload a diagram from class to the class wiki... Realized the photo I had taken (from the whiteboard) was unreadable. Decided to re-make it in OmniGraffle. Realized OmniGraffle 4's support for curved lines sucked. Upgraded to version 5. Created custom icons for file, folder, and cube... 13:06
whiteknight oh fun 13:07
benabik It kinda exploded from "I should upload this file" to "must create the perfect diagram"
whiteknight yeah, I'm familiar with those kinds of explosions 13:12
benabik I think it's part of what makes me a good programmer... But makes for very poor sleep habits.
"Just one more thing and it'll be perfect."
whiteknight I used to think WPF was a pretty decent framework for rich web-enabled applications 14:10
I was wrong
NotFound benabik: just buy a bigger whiteboard ;) 14:14
brrt wpf? 14:18
whiteknight brrt: wpf and silverlight were both like Microsoft's half-baked response to flash. They basically allowed you to run .NET applications in the browser 14:20
brrt oh, i did not know that last thing about wpf 14:21
odd
whiteknight actually, WPF was bigger than that, but one of it's features was the ability to download and run WPF applications from a browser in addition to running them natively
brrt hey, i know that feature 14:22
benabik NotFound: Sadly, we do have to share classrooms.
brrt it is called 'a bug' and is also known as activex :-p
whiteknight brrt: Yeah, very similar except it used .NET instead of native code. A little bit safer that way because of sandboxing and compartmentalization and stuff 14:23
brrt much like flash, java 14:24
also, what do people mean when they say 'rich client applications' 14:25
is google docs a rich client application?
NotFound brrt: It means "I want to get rich selling it"
brrt :-) true 14:26
NotFound Also, make Tim O'Really richer by buying its books about it. 14:27
brrt its funny how after +20 years of internet, javascript + dhtml is still often the best solution 14:28
NotFound Except when plain html is ;)
benabik brrt: Javascript hasn't existed for 20 years. It's only within the last few years that HTML+JS has been powerful enough to give you decent applications. 14:29
Flash and Java were decent solutions when they first came into existance.
brrt maybe not 20, but at least 10 14:30
i wonder what makes them 'undecent' solutions, now?
NotFound The first time I recompiled an applet with an updated version of the jdk, without changing a comma in the source, and it stopped working in the browser, I decied that java applets where not the way to go. 14:31
Many, many moos ago.
whiteknight www.250bpm.com/blog:4
NotFound Java just failed its promise of "compile once, run everywhere". 14:32
brrt i guess that is true
benabik Mostly the rise in power of the browsers. Why use this external framework when the browser itself gives what you need.
whiteknight: My brain is reading that as "I write bad C++ code, so I don't like it."
NotFound whiteknight: I read that document as "I made bad designs and blame the tool" 14:35
brrt i never realised that exceptions where 'dynamically scoped'
NotFound benabik: get out of my mind! 14:36
benabik Why is he using exceptions for local flow control? `if(condition1) handle_error1();` works just fine in C. "Error handling in constructors are hard without exceptions." Yes, yes they are. So use them. 14:37
Blah.
*C++
NotFound r = something(); if (r) throw A; catch (A).... Really? Looks like deliberate humor. 14:38
benabik And if he wants the catch near the original code, _use smaller try blocks_.
Re-implementing constructors and destructors means you've done something very wrong. 14:39
NotFound And he says that decoupling the exception handling is bad... You can't make a good exception handling design with such assumption. 14:40
The usual conclusion: you can write bad code in any language. 14:41
benabik C++ having well defined construction, destruction, and exception handling semantics is why I like it. RAII makes life simpler. 14:43
The decoupling between throwing and handling is the point. 90% of error handling is "cleanup resources and return an error". In C++ that becomes "ignore the exception". Destructors at block exit handle cleanup and the exception will pop up the stack on its own. 14:47
benabik will stop ranting now. 14:49
NotFound The thing some people have with destructors, is the classic about closing a handle. How can I report if close fails in a destructor? If you don't close explicitly and let the destructor do it, you just have declared that you don't care, plain and simple. 14:50
Is no the destructor job to report something you don't want to hear. 14:51
He's right in one thing: this is not only C++, every OO language with constructors and destructors has the same issue. 14:53
whiteknight destructors in particular are extremely problematic 14:56
benabik The big catch is what do you do when an exception occurs in a destructor being called because an exception happened. 14:57
C++ says "explode"
Which is semi-reasonable. 14:58
whiteknight Take the Parrot example. GC can get called at any point. Our GC gets called on allocation typically, which itself can be happening inside a constructor. This means GC can be triggered when user code is in an inconsistent state, and executes destructors outside of normal control flow in a place where errors cannot be handled the same as they are in normal code
benabik Ah, yeah. Finalizers in GC are tricky too.
whiteknight so when you're in a destructor you can't really throw an exception, because you're in a place without handlers, and you don't want to disrupt the "normal" control flow happening above GC, because the error isn't with that code 14:59
so you end up with an error condition that you either can't report at all, or that you have to jam into a cache and hope somebody checks it
benabik In a GC case, hope you can do something with it. 15:00
NotFound whiteknight: but... parrot destruction is always done by the GC; that is it's normal control flow.
benabik Because allocating memory while the GC is trying to free memory is... problematic.
whiteknight And assuming you try to report the error, do we tell the GC not to reclaim the memory, and leave an un-destructed zombie header floating in memory for...something, or do we free it anyway and tell the program that we've freed the object but it didn't destruct properly and by the way you can't get a reference to anything to try and resolve the issue
So maybe we disallow exceptions thrown in destructors, which is reasonable, but then there's absolutely no way to get back error information about a failure if it occurs 15:02
benabik Best thing I can think of is provide a log system. 15:03
This may be as simple as "print to STDERR"
15:03 dmalcolm joined
NotFound If you want a robust system, your objects must be robust, that's all. 15:04
benabik This is, BTW, why Java and C# have no custom finalizers. 15:05
NotFound Java has. 15:06
benabik Hm. Maybe C# does too. :-/
NotFound And they can cancel the destruction.
But java uses several kinds of weak references to handle such things. 15:07
benabik Weak refs are very useful in a GC.
whiteknight C# does have destructors, but there are a lot of restrictions on them and they aren't very popular
the IDisposable system is considered "best practice"
benabik Hm. "Any instances of classes that implement the finalize() method are often called finalizable objects. They will not be immediately reclaimed by the Java garbage collector when they are no longer referenced. Instead, the Java garbage collector appends the objects to a special queue for the finalization process."
NotFound Anyway, if you want to report problems during destruction you can. Just attach to the objects a reporting object, and send a message to it. 15:10
To the objects with such need, I mean, not to any object in the system. 15:11
benabik cotto: ping 15:14
NotFound A more critic comment: usually people that blame exceptions and decide to use C better than C++, later implement some sort of exception handling using longjmp, wich is a lot more incontrolable than C++ exceptions (Hey, parrot) ;) 15:15
benabik msg cotto ISTR you saying something about handling memory in M0 via sbrk. I have some issues with that idea. Starting with: are we going to implement the GC _inside_ M0? 15:17
aloha OK. I'll deliver the message.
benabik msg cotto We then get into things about brk not really being a good idea anymore. sbrk is limited to 4MB on OS X. mmap is the more fundamental operation on most systems these days. 15:18
aloha OK. I'll deliver the message.
benabik msg cotto As simple as we want M0 to be, it still needs to provide some features over the standard processor to make it worthwhile to abandon useful tools like "C compilers". I was expecting M0 to be a bootstrap step into our GC, control flow, and object system. 15:21
aloha OK. I'll deliver the message.
benabik Okay, I think I'm done.
15:28 JimmyZ joined 16:02 brrt left
benabik ~~ 16:37
Did my rants scare everyone away? 16:38
16:40 nopaste joined
benabik msg cotto Also: untyped registers make the GC more difficult. If there's no way to tell what registers are PMCs, how do we walk the call frames? 16:57
aloha OK. I'll deliver the message.
17:03 PacoAir joined 17:13 GodFather joined 17:27 lucian joined
cotto ~~ 17:44
benabik: are you suggesting that mmapping anonymous pages is better than sbrk? 18:03
That doesn't sound like a bad idea. I thought that sbrk was the fundamental operation, but mmap would be just fine, especially if there's a 4M limit on some platforms. 18:05
benabik cotto: First, I'm suggesting that M0 should use a real GC rather than manually dealing with memory. Second, sbrk is emulated by a large allocated buffer in at least some versions of OS X.
www.opensource.apple.com/source/Lib...ated/brk.c
Hm. Appears to be in the source for the most recent version too. 18:06
Yeah, 763.12 is the version of libc used in 10.7.3. 18:07
cotto hmmm 18:08
where the gc lives is a big question. 18:11
benabik Implemnting GC inside M0 will cause pain.
cotto yes 18:12
benabik Mostly because we won't have a toolchain anywhere near as nice as gcc for a long time, if ever, and the GC will probably want to interact directly with the OS often.
cotto and if it's part of the vm, that allows a gc that knows more about the underlying system
benabik Right.
cotto at the cost of more vm complexity
benabik Good complexity. 18:13
cotto that's not especially hard to argue
benabik If the VM is just a platform agnostic processor, then why bother?
whiteknight we do have a GC, and modifying it to work with M0 would be a lot less work than reimplementing the algorithm or even something more complex
cotto We ought to think twice before adding any complexity to M0, but that doesn't mean it can never happen. 18:14
It hasn't been much of an issue so far because we haven't been creating any gcables. 18:15
whiteknight We just have to weigh the costs and the benefits. We have a good GC with good performance, and there's no clear reason to rewrite in in M0
the one reason I can possibly think is to expose GC to JIT, and include it in optimization traces 18:16
but there's more than a little potential that this saves us nothing and hurts performance more
GC, for instance, typically won't get any benefit from having type-specific traces, because the vast majority of objects will be handled in an agnostic way 18:17
benabik The GC just needs to know "object" and "not object"
whiteknight or if we're doing a linear sweep through memory pools, there won't be any hot paths in destructors, because the objects are all jumbled together
benabik I honestly expected GC and object system to live outside M0.
whiteknight benabik: right, and now we do that by allocating them from separate pools
everything in the PMC pool is a PMC, everything in the string pool is a string, everything else is just dumb buffers 18:18
cotto that could work, especially since strings and PMCs will be the same thing 18:22
benabik Ideally strings and PMCs will be different REPRs in 6model land. :-D
My view of M0 is the minimum we need to be in a "sane VM" environment that supports a variety of native types (so HLLs can get 8/16/32 bit math), CPS, GC, and 6model. On top of that we can build PMCs, opcodes, exceptions, etc etc etc. 18:26
Oh. don't forget sane FFI.
whiteknight We've got three layers: M0, everything built on top of M0, and everything underneith on which M0 runs. GC, in my mind, falls squarely in the third category
We need some kind of substrate on which to build M0 18:27
benabik My "minimal" VM is somewhat heavyweight, but it's basically the minimum that isolates us from the outside world. Sadly, threads likely also have to live outside it. 18:28
We can build our carefully constructed ideals of HLLs, complex objects, exceptions, etc etc inside that realm. 18:32
Actually, not sadly. If our base-level VM is designed with threading in mind then everything inside the VM is implicitly thread-safe. This is a useful _feature_ 18:33
This is also a reason the GC should be outside the VM. It needs to know intimate details of threads and be able to cross the boundaries in ways we really want to forbid things inside the VM from doing. 18:34
cotto GC as part of the substrate is sensible. 18:35
benabik is partially just thinking out loud here. 18:36
cotto please, continue
What would the M0-level ops that care about GC need to look like? 18:37
benabik Various kinds of allocate and mark, I would think. Marking gets into interaction with the object system in funny ways though. 18:39
But we need an in-GC mark for in-VM created object systems.
cotto similar to VTABLE_mark of today's parrot 18:40
benabik Right.
cotto would that fall under 6model?
benabik My thoughts on M0's object model is entirely 6model focused. STABLES, REPRS, etc.
REPR has a gc_mark function in it, I think. 18:41
cotto ok
benabik But if we want to support REPRs created inside the VM, then we'd need an in-VM mark operation. 18:42
cotto I'm not sure that's necessary. REPRs are pretty low-level.
benabik If we don't have typed registers, every call frame needs a way to mark the PMCs stored in it.
cotto Would it work to require that if you want a custom repr, you have to write some C code?
benabik Probably. 18:43
inVM mark functions are probably insane anyway... Don't want to have to go back into the VM inside the GC. 18:44
(This is related to notions of finalization queues)
cotto that gets into the inner runloop problem 18:45
benabik Right.
Which we want dead dead dead dead dead.
cotto quite
benabik Finalization queues are an elegant solution to inVM destructors though. Work through them in the background as you can. 18:46
I wonder if we need any more support for weak references than just "hold a reference in an object and don't mark it".
So I guess M0 just needs allocation ops. Details of those somewhat depend on how we want to deal with objects and buffers and the like. I'm very much in favor of "everything's an object" to some extent. 18:50
18:50 alester joined
benabik The default REPR and HOW are "stupid buffer". 18:50
cotto including primitive numeric types? 18:51
benabik Er, no.
Prims are needed for speed.
But you don't need to allocate those. 18:52
cotto ok. When I hear "everything", I hear primitives in there too. 19:03
benabik Yeah, fair enough. I meant "everything we're using the allocate op".
cotto that could work
whiteknight I see our lowest-level VM core, the substrate below M0 as consisting of GC, threads/execution/runcore and not necessarily much els 19:17
else
Basically, we need something to provide memory allocation interfaces and then to execute M0 bytecode or whatever
and "where" the M0 gets executed is a threading concern 19:18
benabik Well, the GC needs to interact with the object system.
whiteknight If threads are at the lowest level, M0 can work with a much cleaner abstraction like Tasks (green threads) that automatically dispatch on an available execution thread
benabik M0 should not have "automatically dispatch"
whiteknight benabik: parts of the 6model plumbing can be at the lowest level too 19:19
benabik: maybe not by default. But we should be able to take a Task and dispatch it (A) on the current thread, (B) on a separate thread or (C) on first available
we can specify which
benabik whiteknight: I see all of those as things we can build on top of primitives M0 provides. If M0 gives us runloop per thread and messaging, we can "run now", "send message to run there", and "put on available queue" 19:24
But I'm quibbling over details, I suppose.
whiteknight benabik: there's nowhere for M0 to run in the first place if we don't have threads at the level below that 19:26
benabik "Runloop per thread, I said." :-D
19:26 crab2313 joined
whiteknight Once M0 gets moving, if it has handles to the threads and their queues, we can do everything else. It will have Tasks 19:26
benabik Have to add "spawn this as a new thread"
whiteknight well, not necessarily. We might have a fixed thread pool 19:27
benabik I'm quibbling that "threads don't necessarily have queues."
whiteknight or, on a single core machine or embedded machine, we might have only one "thread"
benabik M0 shouldn't deal with thread pools, etc, etc. Just give reasonable primitives to build these systems on.
whiteknight so we need an abstraction that says "dispatch this task, and do your best to either run it here or run it somewhere else or whatever is conveninent"
The real flexibility of the hybrid thread model is that the threads things run on are abstracted away 19:28
benabik Build the hybrid thread model on top of M0's actual threads. M0 provides the primitives, we build the system on top of it. 19:29
whiteknight I think we are saying almost exactly the same things, right past each other 19:33
benabik Probably.
Mostly I'm saying "M0 doesn't need the abstractions, it needs the primitives to build them". They're good abstractions though.
whiteknight I guess I'm saying that the threading system will be abstracted by default, whether M0 wants or needs it 19:34
so neener, neener.
benabik Heh.
whiteknight speaking of which, I really want to make a big push to get threading tested and merged to master shortly after 4.4 19:39
That gives us the maximum amount of time before the next supported release to get it tested, to start using it, to generate feedback, etc 19:40
We've got to get it sorted out on windows though, which is a concern
I may have to send out an email to parrot-dev, begging for favors 19:47
20:02 crab2313 left
cotto benabik: how would you split m0-6model in the what the VM supports directly and what userspace needs to do? 20:03
or whiteknight
whiteknight I'd be interested to hear what benabik thinks first 20:04
20:04 crab2313 joined
benabik My initial design would be making the 6model operations be M0 operations. At first glance they look sufficiently modular. 20:14
There may be some odd bootstrapping level where there are HOWs implemented in M0, but those would either be higher level only or have to operate through a cache. 20:16
Hm. 6model has some inferior runloop fun, I think. Perhaps M0 HOWs expose functions instead of opcodes. Hmmm... 20:17
whiteknight yeah, that's going to be the big problem, trying to separate out the stuff that uses runops and therefore needs to be at the M0 level 20:18
I would like to see as much of 6model as possible below the M0 level and provide primitives for working with the object model
benabik 6model operations needing to run M0 code isn't too much of a problem. If we make the opcodes that do that explicitly control flow operations like a function call. external HOWs just hijack the function call and return directly. 20:20
Replace an "inferior runloop" with a function call and all's good. It may be a _special kind_ of function call so the C HOWs don't have to deal with the allocations and so forth. 20:21
whiteknight right 20:25
benabik If the REPR is all C, then we just have to worry about the other operations in the STable. 20:34
20:38 lucian joined
benabik find_method, type_check, de-containerize, and boolification. If those are all explicitly "may be a function call" then we're set. Everything else is part of the REPR. 20:38
cotto benabik: can you start a wiki page or gist for planning this? 20:40
benabik Erm. 20:41
No, it gets more complex than that. Many of Rakudo's REPR operations call VTABLES. Hm. 20:43
Wait, maybe those are all on our basic types, not P6 objects. 20:44
Yes. REPR operations call methods on the HOW. I see now. 20:46
hmmmm 20:47
PerlJam benabik: have you read jnthn's blog? 6guts.wordpress.com 20:50
you might want to look through past articles for some high-level information about how things fit together.
for instance, 6guts.wordpress.com/2010/10/15/slid...ymorphism/ 20:51
benabik PerlJam: I have been, yes. It's not all on the top of my head. I forgot the details of REPR and HOW interaction. Which are fairly low level. 20:53
Despite the nice clear conceptual devision between them, the P6opaque REPR calls into the HOW. Which means that REPR ops can't be guaranteed to be atomic operations from the point of view of the VM. 20:55
Coke do we care about atomicity at this level? 20:56
benabik Where "atomic" means "not calling back into the VM"
PerlJam depends on where threading and such lives
benabik I meant atomic as in "one step of the VM". 20:57
Blarg. This needs more thought. I did say "initial design" to start. It just got scrapped faster than expected. :-/ 21:01
But I have to go. \\o
PerlJam benabik: cheers 21:02
21:04 rindolf joined
rindolf Hi all. After I added "parrot" to the plugins list of github.com/MarcWeber/vim-addon-manager , it installed something horrible out-of-date - "" Based on Parrot 0.10". 21:05
21:24 crab2313 left 21:34 benabik joined
dalek nxed/builtinexpr: efe0605 | NotFound++ | winxedst2.winxed:
builtin expr first test, with string cast
22:07
Coke rindolf: we don't tend to keep our vim plugin up to date, I do not think. 22:28
(also, I have no idea who marc weber is.)
cotto benabik: I'd like to bounce something off you for a sanity check: 23:16
thinking about gc-related M0 ops, would gc_alloc and gc_mark provide a everything that m0 code would need or are there edge cases to consider that those don't cover?
That and sys_alloc, sys_free and copy_mem would be the bulk of M0 code's interface to memory. 23:45
Under the surface all memory would live in the same set of contiguous anonymous pages, but the VM would know which offsets contain GC-controlled memory and could look for references to them.
23:53 whiteknight joined
whiteknight good evening, #parrot 23:53
cotto hio whiteknight
whiteknight I had to take the battery out of my mouse to replace the one from my son's motorized Thomas the Tank Engine toy, so my productivity tonight is going to be decreased 23:54
or maybe increased, if I can't surf the internet so much 23:55
I'll just have to download twice as many pictures of cats tomorrow night