Parrot 2.10.1 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Onward and upward with Google Code-In | Please test rakudo with bleeding edge parrot! | Remove deprecations | close tickets | merge html_cleanup and embed_api2
Set by moderator on 14 December 2010.
cotto dukeleto, can you invalidate socghop.appspot.com/gci/task/sugges...9270216789 ? kid51 took care of it before a student could get to it. 00:00
00:01 whiteknight left 00:19 nopaste left 00:20 TonyC left 00:27 TonyC joined, nopaste joined 00:35 kennym left
dalek rrot: 0b20a82 | plobsing++ | DEPRECATED.pod:
deprecations for planned :init and :load flag related changes
00:42
rrot: 3749000 | NotFound++ | t/pmc/namespace.t:
test Namespace get_pmc_keyed RSA key with a null element
00:46
00:46 Kristaba left
dalek rrot: c51b642 | plobsing++ | DEPRECATED.pod:
remove deprecation notice for PIR assignment syntax

we're not going to fix this mistake. see TT #906 for why.
00:47
TT #1895 created by plobsing++: [DEPRECATED] difference between :load and :init Sub flags 00:54
TT #1895: trac.parrot.org/parrot/ticket/1895
TT #1896 created by plobsing++: [DEPRECATED] :init Sub flag
TT #1896: trac.parrot.org/parrot/ticket/1896
TT #1897 created by jkeenan++: Implement 'silent' configuration 01:10
TT #1897: trac.parrot.org/parrot/ticket/1897
01:13 nwellnhof left 01:50 kid51 is now known as kid51_at_dinner
dalek tracwiki: v2 | plobsing++ | PackfileTasklist 01:59
tracwiki: add note about :load/:init deprecations
tracwiki: trac.parrot.org/parrot/wiki/Packfil...ction=diff
rrot/errors_globals_flag_deprecation: d9e5a88 | plobsing++ | / (7 files):
remove deprecated PARROT_ERRORS_GLOBALS_FLAG constant
02:22
rrot/errors_globals_flag_deprecation: 9c05317 | plobsing++ | DEPRECATED.pod:
remove deprecation notice for PARROT_ERRORS_GLOBALS_FLAG
tracwiki: v9 | plobsing++ | ParrotDeprecationsFor3.0 02:32
tracwiki: add PARROT_ERRORS_GLOBALS_FLAG deprecation info
tracwiki: trac.parrot.org/parrot/wiki/ParrotD...ction=diff
tracwiki: v25 | plobsing++ | ParrotDeprecations
tracwiki: add note about PARROT_ERRORS_GLOBALS_FLAG deprecation
tracwiki: trac.parrot.org/parrot/wiki/ParrotD...ction=diff
GeJ anyone else having troubles with github? 02:38
02:38 bluescreen left
plobsing GeJ: seems fine to me. what problems are you having? 02:39
GeJ lots of errors 502 when pulling from different repos. 02:42
Dancer, dist-zilla, diaspora are concrete examples. 02:43
those are read-only pulls.
parrot pulls fine (as a read-write repo). 02:44
plobsing ohm-eta-wink-kzd pulls are fine for me (r/w)
GeJ rakudo (read-only) pulls fine. hmmm. 02:45
`git clone github.com/rcaputo/bot-pastebot.git Bot-Pastebot` returns "error: RPC failed; result=22, HTTP code = 502" 02:46
so I'm not completely crazy. Anyway, I'll wait and retry some time later. Sorry for the noise.
02:48 bluescreen joined 02:55 kid51_at_dinner is now known as kid51
dalek m-eta-wink-kzd: a8743c4 | plobsing++ | src/ometa-base.winxed:
lookup rules in super calls correctly
03:20
m-eta-wink-kzd: a4ebaf2 | plobsing++ | src/winxed-compiler.dual:
winxed does not do semicolon insertion
03:52 kid51 left 04:05 Zaur joined 04:23 Yuki`N left 04:28 contingencyplan left 05:32 rurban_ joined 05:34 rurban left, rurban_ is now known as rurban 05:39 dd070 joined
dd070 hello !! 05:40
05:42 dd070 left 06:47 dd070 joined 06:50 dd070 left 07:48 bacek joined 08:25 contingencyplan joined
cotto hi bacek 08:28
08:42 TonyC left, nopaste left, TonyC joined 08:47 muixirt joined
muixirt good morning 08:48
08:51 nopaste joined 09:14 mikehh left 09:20 rfw left 09:26 fperrad joined 09:36 Coke left 09:42 Coke joined 09:49 Coke left 10:01 Coke joined 10:36 kennym joined
muixirt cotto ping 10:41
11:14 ambs joined 11:53 contingencyplan left 12:26 bluescreen left 12:28 muixirt left 12:31 GreenZED joined 12:34 Zaur left 12:37 bluescreen joined 12:41 Zaur joined 12:43 GreenZED left 12:49 PacoLinux joined 12:52 kennym left 13:09 Kovensky left
bluescreen good morning 13:10
13:20 Kovensky joined 13:30 whiteknight joined 13:32 rurban_ joined
whiteknight good morning, #parrot 13:32
13:34 rurban left, rurban_ is now known as rurban
Coke *cough* 13:35
13:36 muixirt joined
muixirt hi again 13:36
hi whiteknight
whiteknight hello muixirt
muixirt whiteknight: could you please tell me what you think are strong points of parrot? 13:37
whiteknight in what regard? 13:42
muixirt what parts of parrot would you consider worthy if someone asks you to develop a vm from scratch 13:43
design/architecture/concrete parts of the implementation 13:44
whiteknight oh, that's a good question.
much of Parrot is going to change in the next year, so it's hard to pick something we have that we aren't planning to do better 13:45
muixirt or to put it another way: what have parrot devs learned in the course of the last 10 years
whiteknight that's sort of a different question. Like I said, Parrot right now is not as good as Parrot will be this time next year
so I would save we have learned quite a lot
many things that we've learned were learned from making and analyzing mistakes over the years 13:46
Our calling conventions system is good. Flow control, CPS, etc. The fact that we are stackless and that we use registers are all good things and the implementations of those are good and going to get better 13:47
Our system of pluggable runcores is good 13:48
dukeleto muixirt: i think the most valuable subsystem of Parrot is the community of people that hack on it 13:49
whiteknight dukeleto: :) 13:50
muixirt dukeleto: I'm not willing to dispute that :-) of course I thought more on technical issues 13:51
whiteknight muixirt: Some of the things we've learned are about what not to do: our old JIT for instance was a problem and we removed it 13:52
avoiding tight coupling is something we've been doing recently to great effect 13:53
keeping things pluggable is something we do extremely well
pluggable runcores, pluggable dynops, pluggable pmc types
dukeleto muixirt: parrot has learned many lessons. I think, in general, how we handle pluggability is pretty awesome. Even our GC is pluggable 13:55
muixirt: but as whiteknight said, we will fix many broken things in the next year, such as our Meta Object Protocol and Embedding API. Those will allow many other things to bloom 13:56
muixirt: is this for a school report or something? Or are you just interested to know what we think?
muixirt just interested 13:57
whiteknight much of the development work we do now in Parrot is trying to add cool new things without breaking existing programs that use Parrot 13:58
so that makes things go a little more slowly than we would like
if we were starting from scratch we would be able to do the right things more quickly, because we wouldn't have any existing interfaces to maintain 13:59
muixirt what are your thoughts about the pmc/vtable subsystem 14:00
whiteknight muixirt: They were very good and functional prototypes for many years. They enabled us to do a lot of things so far 14:01
But, they are being replaced soon
dukeleto muixirt: cool, just wondering 14:02
whiteknight the problem with VTABLEs is that they just aren't flexible enough for general use. We have 1 invoke vtable that all subs and sub-like things use, but we have like 50 bajillion arithmetic vtables that nobody uses
dukeleto whiteknight: perhaps we just didn't set up our VTABLES correctly?
whiteknight: it seems like a bad design decision, not a problem with VTABLEs 14:03
14:03 ambs left
whiteknight dukeleto: The problem really is that we have a fixed set. Every VTABLE structure has all the interfaces that any type needs, which leads to a whole hell of a lot of useless slots 14:03
There are only a handful of VTABLEs that are truely universal: get_class, get_name, find_method, init, mark, destroy 14:04
maybe a handful of others for efficiency (init_int), but that's the core right there
dukeleto whiteknight: i really like how 6model does things. Everything has a REPR (representation) and a HOW (everything else) 14:05
whiteknight dukeleto: yes, and we're going to steal 6model wholesale
knock jnthn and steal his lunch money too
dukeleto whiteknight: i am stealing many 6model ideas in my lorito branch
whiteknight dukeleto: good. the more the merrier 14:06
dukeleto has been on vacation, so has been doing more thinking than coding
whiteknight dukeleto: when are you back from vacation?
14:06 mtk0 joined
whiteknight muixirt: The current system of vtables is decent, and helped us get to where we are without too much trouble. There are some bugs and inefficiencies that mostly stem from implementation problems, not design problems 14:08
the new object model may even create some new inefficiencies while we work to transition Parrot over to the new Lorito architecture 14:09
muixirt how desirable is a hll language with is develop along with the vm? 14:10
whiteknight muixirt: In some cases, very valuable. you never really know how the VM performs until somebody uses it
and you don't ever really know what users need until you have users 14:11
dukeleto muixirt: HLL languages should be independent of internal dev, but of course HLLs find bugs in Parrot core, which we fix, and then the HLL develops more. It is a feedback cycle.
muixirt whiteknight: to clarify: I thought of a hl for implementing compilers 14:12
14:12 tikluganguly joined
muixirt *hll 14:12
dukeleto whiteknight: my vacation ends around Dec 25th
whiteknight: i will be traveling on the 23rd and will probably do some hacking then, tho
muixirt I think writing libraries and compilers in pir was a burden, hence the question 14:14
dukeleto whiteknight: if you signup to melange as an org admin, then you will be able to approve and publish tasks 14:15
whiteknight: i think we can have as many org admins as we want. I think
bluescreen muixirt, you can write your (any) compiler using any language
dukeleto whiteknight: particle is the other org admin, because he has been in the past with GSOC, but obviously, you should also be an org admin
bluescreen NotFound wrote winxed stage 0 in C++
dukeleto whiteknight: since particle does not have the time
whiteknight: if only 2 admins are allowed (i am not sure), then we should remove particle and put you as the second admin 14:16
particle time is a lion, where i am a lamb.
muixirt bluescreen: yes I know but using a compiler that runs on the vm has some advantages, or what do you think?
bluescreen writting the compiler in other languages doesn't means that it won't run in the VM.. you just have to make your compiler emit PIR or PBC 14:17
particle i think more than two are allowed. i can approve whiteknight's request, too. actually, i think org admins can invite others to be admins
muixirt what benefits have dynops (and dynpmcs) that outweigh their costs?
Coke IME, having a HLL developed in concert with parrot would have avoid a LOT of problems. 14:22
would have exposed issues with the toolset, the API... 14:23
dukeleto particle: i feel like a William Blake quote is in order... 14:24
14:37 bluescreen left, bluescreen joined 14:50 tikluganguly left
Coke wonders what is driving TT #1895 14:53
plobsing Coke: it falls out of changes whiteknight has proposed for packfiles (and I've also been wanting to do for a while) 15:18
Coke wants a tool that will do a "git blame" but ignore whitespace diffs only and follow refactors.
plobsing: ok. why doesn't the ticket say that and instead just say the feature is wrong when it's in use in several locations? 15:19
s/and instead/instead of/
plobsing the feature *is* wrong. and it is blocking internal improvements 15:20
Coke How is it wrong? 15:21
plobsing makeing the distinction between whether load_bytecode loaded PIR or PBC is not something we should be doing 15:22
Coke ... that's not what the difference between those 2 things is.
plobsing oh. what is it then? 15:23
I know it has something to do with how a file is loaded. 15:25
Coke AIUI (and I'm rebuilding parrot at the moment to verify my recollection), one is for : ./parrot <foo>, and the other is for load_bytecode <foo> 15:26
plobsing that still seems like a silly distinction to be making
Coke "please run this block of code when the interpreter is initialized". "please run this block of code when we are loaded dynamically into memory" does not seem entirely silly to me. 15:27
plobsing other than the fact that you have no access (nor should you) to "when the interp is initialized" 15:28
Coke Or, "at program startup" if you prefer. 15:29
$DAYJOB 15:30
plobsing what's wrong about prepending that to main?
whiteknight The difference is that :init should run after compilation, typically to define types and globals, or to insert an aggregate constant into the constants table. 15:31
:load is executed when we load a bytecode 15:32
so ./parrot foo.pir triggers an :init, while ./parrot foo.pbc triggers a :load
the load_bytecode op always does :load, because it is supposed to be for bytecode
the issue is that libparrot works on bytecode. PIR, it's language constructs, and it's compilation behaviors are external and are part of IMCC 15:33
plobsing this sounds like yet another problem caused by IMCC being special
whiteknight IMCC can keep :init or any other stupid flags it wants, but libparrot shouldn't be trying to account for those and enforce them
plobsing you expect IMCC to deal with :init blocks properly? have you seen what it does with :immediate blocks? 15:34
whiteknight I keep forgetting about :immediate 15:35
plobsing I wish I could do that
whiteknight plobsing: either way, that's a PIR syntax issue, and a behavior of the PIR compiler. It has nothing to do with libparrot
plobsing it has everything to do with libparrot and how it interacts with compilers, if your compiler interface proposal is where we're going 15:36
whiteknight parrot should have an operation for "load this bytecode" and during that operation it should trigger an ordered list of functions that need it
this might include all :load and a :main function
plobsing: If a compiler wants to execute blocks during compilation, that's a behavior of the compiler
libparrot doesn't need to care that we are even in the middle of compilation 15:37
and we certainly don't need our Sub type to have a flag field for :immediate or :init
plobsing the compiler shouldn't need to know what we're doing with the packfile. :init *only* executes if the packfile is going to be executed (not if it is being compiled to PBC)
that knowledge is libparrot's responsibility
whiteknight plobsing: right. From the point of view of libparrot, the only thing we need to care about is what to do once we load bytecode. 15:38
plobsing and the :init behaviour depends on what we do with the packfile. therefore, it *is* libparrot's problem.
whiteknight I don't follow that
plobsing responsibilities: create packfile => compiler; do things with packfile => libparrot 15:39
compiler doesn't know what happens to the packfile
:init depends on what happens to the packfile
whiteknight maybe I'm misremembering some details of :init 15:40
plobsing therefore, :init cannot be implemented with only the information available to the compiler
whiteknight I need to read over that code again
plobsing in fact ./parrot test.pbc fires :init blocks. how is IMCC supposed to handle that? 15:41
whiteknight okay, then I am definitely misremembering 15:42
what exactly does :init do then?
and how exactly is it different from :load right now? 15:43
plobsing the gory details are in do_1_sub_pragma
if we are going to run a main sub, we run :init subs first. 15:44
whiteknight okay 15:45
plobsing so, the same could be accomplished by prepending a call on to :main
whiteknight what I would really like to see is for libparrot to be able to query the packfile: "Give me an ordered list of things to execute now" 15:46
then :main becomes nothing besides the last item in the list of :init
This also gives us the ability to sequence things after main, for cleanup etc
plobsing my vision is that packfiles contain exactly two flagged subs (mentioned in the header) - one for :load, one for :main 15:47
HLLs can implement functions in these to provide whatever they need
whiteknight I would also really love it if :main could be a multi, like what Rakudo does 15:48
plobsing and :load should register functions, methods, classes, etc. they don't register by default
whiteknight but if the packfile returns an invokable, it comes down to the compiler setting that, not anything libparrot needs to care about
plobsing no more looping over all the constants in the PBC a million and one times
whiteknight exactly right. If packfiles cached those things and produced them on demand it would be a huge performance win 15:49
especially considering that people want to be able to specify more constants, and more types of constants in PBC
plobsing its not about cacheing, its about explicitly stating operations (in stead of having parrot perform certain convenient ones automatically)
right now, parrot loops over all the constants, thaws them eagerly, and if they are isa Subroutine, installs them in the appropriate place. 15:51
yuk
oh and some core types (eg: classes) depend on this eager loading to register themselves 15:52
whiteknight yeah, and that's all very stupid 15:54
plobsing whiteknight: the problem with querying for a sequence of invokables is that what needs to be run depends on what you want to do with it. 15:55
you'd have to be able to tell the library "I want you to be initialized so that I can run arbitrary functions out of you" or "I want you to run through main three times over", etc
I prefer a simple interface of "what function will initialize you?" (:load) and "what do you consider main?" (:main) 15:56
whiteknight plobsing: that's fine by me. It should be easy enough for IMCC to take all functions marked :load and combine them into a single onload function 15:58
and easy enough for IMCC to combine all :init functions and the :main function into a single crt0-like entry point
and those two things should be stored someplace special so we can find them O(1), not O(n) 15:59
plobsing I suppose IMCC could do the magic for that. Not really liking the idea of doing that work though.
whiteknight well, in reality it probably won't be IMCC. Jettison the garbage and use PIRATE instead 16:00
plobsing whiteknight: I agree fully on the O(1).
whiteknight and nothing should automatically initialize itself based on the assumption that we eager-load all constants
if it's not in a :load function, it doesn't happen
period
plobsing I'm thinking of creating a temporary flag in PBC to allow IMCC to remain ignorant of our improvements, but force new PBC generators to use the new approach. 16:01
PBC_GENERATED_BY_IMCC
the old cruft has to stay as long as IMCC, but with any luck, that won't be that long 16:02
whiteknight yeah, I hate making those kinds of concessions 16:03
First step is really getting packfile PMCs working, and then getting a good interface together so we can build Packfiles reliably without IMCC
we update PCT to generate PBC directly, then we can start ripping IMCC out 16:04
$P0 = new ["Packfile"] \\n $S0 = freeze $P0 should generate a valid .pbc file every time
plobsing what? no! freeze generates a Packfile or PBC from an arbitrary PMC. 16:06
freezing a packfile would create a PBC whose only element was another PBC
that's like what freeze Eval does now. And I'd like to avoid that in the future. 16:07
16:08 Kristaba joined, allison joined
whiteknight okay, forget the freeze opcode. $P0.write_to_file() method is fine too 16:08
16:12 PerlPilot joined
whiteknight the important point isn't any specific interface. It's that we should be able to turn a Packfile PMC into a .pbc file without too much effort 16:12
it makes intuitive sense to me that a .pbc is simply a frozen Packfile, but I'm not nearly so familiar with the implementation details as you are 16:26
16:30 dmalcolm joined
whiteknight it does seem to me like that's the easiest way to get a packfile PMC back out when we load it in again 16:30
Coke I don't think typeof(freeze(PMC)) is ever == "PBC" 16:31
whiteknight Coke: it isn't now, but I see no reason why it couldn't be 16:32
Coke I could see that being the natural representation for a frozen packfile, though.
plobsing Coke: they share the same header and low-level serialization/deserialization. the idea has always been that they be similar or the same.
whiteknight that's what I'm saying. Freezing a PMC already gives you a packfile header. Just jam in some bytecode after that and the other segments, and we have ourselves a PBC 16:33
plobsing but what happens after the header differs at the moment. my approach to unification is to jam the PMC into a constant table. 16:34
whiteknight I'm not really sure what you mean by that. If we freeze a Packfile PMC we can jam the Packfile itself into the constants table and put in the rest of the segments too 16:36
Maybe that's too complicated
plobsing packfiles have more stuff 16:37
we could expose that to arbitrary PMCs in freeze/thaw, but it would be complicated
eg: debug segments, annotations, etc
whiteknight we can get those PMCs from the Packfile PMC, right? 16:41
like we can look up the annotations segment PMC and play with that?
plobsing whiteknight: the constants table is particularly tricky. freeze/thaw puts strings into the enclosing constants table. what happens when freeze thaw tries to freeze the constants table strings? it puts the strings into the constant table, which it needs to then freeze!
whiteknight ...stupid 16:42
16:42 slavorg left
plobsing freeze/thaw is *how* we find the strings in the first place 16:42
you have to walk the object graph to be able to know what strings you'll need in the the PBC
whiteknight: I suppose it could be made to work with packfile inside of freeze in stead of the other way around; it just seems inside out to me. 16:43
whiteknight I'm getting the impression that we could increase parrot's performance in a wild way if we just cut out all the stupid in the packfile system
plobsing The way I saw it, freeze on a PMC just created 'Packfile { ConstantTable { PMC } }' and let pbc take care of the rest 16:44
whiteknight: you have something better in mind?
oops. misparsed.
whiteknight plobsing: it just seems to me that you freeze a Packfile, which freezes all it's children segments and things. We go from having a constants table inside a packfile to having the constants table and packfile(s) and packfile segments in it
that is, the constants table isn't in the packfile, it is the packfile 16:45
then we can have anything we want in there: arbitrary constants, bytecode segments, one or many packfiles, etc
I get the feeling I am oversimplifying 16:46
plobsing interesting concept
problem though: how do we find which constant is the bytecode segment? 16:47
whiteknight the packfile PMC would contain pointers to it's various children
plobsing right now, we just assume the first couple indexes in the packfile directory are constant table, and bytecode segment (which is wrong)
whiteknight we could put the packfile in a special place (constant #1) or we iterate to find it 16:48
plobsing ah. constant #1 is the only special thing. I like that. it's as close to reasonable as parrot is likely to get.
whiteknight I really like the idea of being able to store multiple independent Packfile PMCs in a single .pbc file
turns PBC merge into a 5-line PIR program
plobsing whiteknight: we already sort of do. check out the output of PBC merge. 16:49
it tacks the old segments on to the end.
whiteknight yeah, I've seen it. I don't like what it does merging the constants tables together and all
that whole program is ugl y
plobsing I like the idea of merging constant tables. it allows (in theory) for the elimination of some duplication. 16:52
16:52 PerlPilot left, PerlPilot joined
plobsing and if the constant segment is the packfile, you *will* have to update the bytecode upon merge. the indices of all the const-variant ops will be off. 16:53
or is that complexity being pushed elsewhere? 16:54
whiteknight it seems to me like if we are going to be merging constants table and expecting to remove duplicates that we should either store items with hashes, or we should order them in some way
what about nested constants tables? Then we never need to merge and never need to update indices 16:55
what we do need is to extend constants to take a table ID and an idex
index
plobsing nested constant tables could work 16:56
they'd be a mapping to the lower level table that remained fixed.
at the cost of a bunch of references
which are cheaper than dups if your strings are on average longer than sizeof(INTVAL) 16:57
no need for constants to take a table ID. every bytecode segment keeps track of what constant segment it uses.
whiteknight yeah, that's cool too 16:58
once we have the pbc loaded into memory, we can store a single cache of thawed entries, and go there directly if we've already thawed something
or maybe even do a little bit of bytecode rewriting to update references in place on lookup 16:59
plobsing sure, if you want to get fancy. I like simple. We tend to do fancy poorly around here.
whiteknight truer words are rarely spoken 17:00
it's not necessarily that we do fancy poorly, but that we try to build fancy on bad foundations, following incomplete designs
this is why I want to design a new packfile system up front 17:01
17:02 ambs joined
whiteknight What I *really* would like to do is to make packfiles more tolerant to change and never have to bump PBC_COMPAT again 17:03
ever
17:03 slavorg joined, JimmyZ joined
whiteknight if we defined Packfile PMCs in Lorito directly, and let them handle their own thaw/load behavior, we get that 17:04
assuming Lorito ops don't change or renumber (and there are ways around that)
plobsing delegating thaw behaviour to packfiles themselves is a *bad* idea
I'd like to be able to introspect code without having to run it first please 17:05
and I've been moving to a more fine-grained approach to PBC_COMPAT. for example, adding/removing an op no longer requires a bump to the global compat, just a library rev bump. 17:06
but seeing as how most people only ever use core ops, that doesn't fix much 17:07
but in theory, if we segregated ops into smaller sets, people would be immune to op changes unless they were using that functionality
I've been thinking of doing something similar to enable supprot for dynpmcs in constant tables. 17:08
but if everyone just uses core PMCs, we're stuck with the same problem.
cxreg reading www.artima.com/lejava/articles/azul...ss_gc.html 17:09
plobsing whiteknight: I'd also like M0 to *not* be the interchange format. M0 implies trust. We want to allow communication and storage of code that is potentially untrusted. M1 (~current PBC) should be what is exchanged. 17:12
JimmyZ github is down? 17:23
whiteknight plobsing: What I have always wanted is to store the M1 op definitions in the PBC itself 17:36
so the beginning of PBC would be a table showing a mapping between M1 and M0 ops
plobsing and how do I know that one of those is safe? 17:38
whiteknight how do you know anything is safe? Define safe
plobsing maybe I don't want anything touching the disk 17:39
maybe I don't want anything touching the network
security layer has to occur below PBC, M0 is below security layer
not to mention, all those op definitions will get repeated for each and every PBC. seems wasteful. why not package them up as libraries? 17:40
what we need is a way for oplibs of multiple versions to coexist 17:41
and PBC compat isn't just about ops. adding/removing/modifying PMCs causes roughly an equal number of PBC_COMPAT bumps. 17:48
M0 doesn't fix that at all.
nor could a self-unpacking packfile 17:49
Kristaba whiteknight: Hi! Have you any interesting task for me today? :) 17:50
17:54 JimmyZ left 18:09 kennym joined
cotto_work ~~ 18:19
Where's fbrito at? 18:24
Coke nqp: say("does this work?") 18:25
p6eval nqp: OUTPUT«does this work?␤»
Coke tcl: puts ok?
whiteknight Kristaba: not today. My computer died last night and I couldn't make any tasks 18:30
Kristaba whiteknight: It died? What happened? 18:35
18:35 slavorg left
atrodo whiteknight> External monitor? 18:35
18:35 slavorg joined
whiteknight the backlights on my monitor stopped working, so I can't see anything on it 18:35
atrodo: yeah, that's probably what I will end up doing in the short-term
atrodo whiteknight> When I got my mini12, it's backlight was DOA. A quick service call and a loose connection later, it was happy again 18:36
Kristaba Oh, your computer was a laptop? 18:37
Bad luck ::
atrodo but using an external monitor was the only way to use it until it was fixed
whiteknight atrodo: I had taken the LCD screen for my laptop apart a while ago to replace a bad hinge. I suspect during that process I left the connection loose, or put the wire back in a position where it was crushed/cut by the new hinge 18:39
atrodo No fun either way
whiteknight so what I ultimately need to do is open that monitor up again (huge PITA) and take a look
if the connector is unseated, it's an easy fix
if the wire is murderlized, different story 18:40
a screen replacement is not cheap. At this point, it might be better for me to just price out a new laptop and spare me from the pain and hassle of buying a new one and installing it, possibly creating new problems 18:42
Kristaba Yes, it's sure 18:43
18:46 nwellnhof joined
Kapace_ ping dukeleto 18:51
19:05 rfw joined
Kapace_ morning rfw 19:06
rfw morning Kapace_ 19:07
19:16 slavorg left, slavorg joined 19:19 Zaur left 19:21 mtk0 left 19:27 Patterner left 19:30 hercynium joined 19:36 nwellnhof left 19:37 Psyche^ joined, Psyche^ is now known as Patterner 19:56 ligne joined 20:00 contingencyplan joined 20:02 PerlPilot left 20:03 perlpilot joined 20:04 perlpilot left, perlpilot joined 20:06 perlpilot left 20:07 perlite_ joined 20:10 perlite left, perlite_ is now known as perlite 20:16 Kovensky left, Kovensky joined 20:17 kennym left 20:22 Andy joined 20:26 muixirt left, bluescreen left 20:31 khisanth_ joined 20:35 Khisanth left 20:36 rurban_ joined 20:37 bluescreen joined 20:39 kennym joined, rurban left, rurban_ is now known as rurban
dalek rrot/nwellnhof/unicode_io: 479e428 | nwellnhof++ | / (12 files):
[str] Implement partial string scan

Add a new function partial_scan to the string vtable:
INTVAL partial_scan(INTERP, STRING *src, INTVAL count, INTVAL delim);
Scans up to src->bufused bytes in src and sets src->bufused and src->strlen to match the maximum number of complete characters found.
For variable length encodings it is possible that the buffer isn't consumed completely. In that case, partial_scan returns the number of additional bytes needed to decode the next incomplete characters. Otherwise returns 0. This assumes that the initial buffer length in src->bufused is aligned to the unit size of the string encoding.
Scans only up to count characters. Set count to -1 to disable this check.
Stops after decoding a character with code delim. Set delim to -1 to disable this check.
20:43
rrot/nwellnhof/unicode_io: 4207774 | nwellnhof++ | / (16 files):
[io] Implement Unicode string IO with partial_scan

And get rid of the kludge in src/io/utf8.c
rrot/nwellnhof/unicode_io: 33be1f5 | nwellnhof++ | / (10 files):
[io] Implement readline for Unicode
rrot/nwellnhof/unicode_io: e3a5f25 | nwellnhof++ | src/ (3 files):
[io] Don't use linebuf flag for reading
20:44
rrot/nwellnhof/unicode_io: 4ab2f48 | nwellnhof++ | src/ (3 files):
codingstd fixes
sorear I should problably set the PEBKAC detection heuristic lower than 15 simultaneous commits
20:45 ambs left
PerlJam or change dalek to only show summary information here and the full output on #dalek (or whatever other channel we create for full output) 20:48
20:52 khisanth_ is now known as Khisanth 20:57 nwellnhof joined 21:00 dd070 joined 21:10 plobsing_ joined 21:11 whiteknight left 21:15 plobsing left 21:22 Khisanth left 21:30 Khisanth joined 21:32 rurban_ joined 21:34 rurban left, rurban_ is now known as rurban 21:40 davidfetter joined 21:45 perlite left 21:47 dd070 left 21:48 khisanth_ joined 21:54 Khisanth left 22:01 ligne left 22:03 khisanth_ left 22:07 fperrad left 22:16 perlite joined 22:18 khisanth_ joined 22:28 khisanth_ left 22:46 Khisanth joined 23:09 Andy left 23:49 kid51 joined
kid51 cotto_work ping 23:54
cotto_work kid51: pong
kid51 Were you able to get the GCI organization administration issue resolved?
cotto_work nope 23:55
the ticket still exists
er, task
dukeleto was on earlier but I missed him 23:56
kid51 k
23:59 whiteknight joined
whiteknight good evening, #parrot 23:59