Ops Review
Patrick R. Michaud
pmichaud at pobox.com
Tue Jan 20 19:15:26 UTC 2009
On Mon, Jan 19, 2009 at 01:09:14PM -0800, chromatic wrote:
> I've skimmed all of the ops in our .ops files, and here are my
> recommendations for deprecations. [...]
Short answers to chromatic's original list first, then I'll
make longer responses to the other items in the thread.
> How often do we use the bitwise ops?
> - could they become functions?
> - multidispatch functions?
> - means pulling them out of vtables, which doesn't hurt my feelings
Pulling bitwise ops out of vtables sounds good to me;
we currently use them in Rakudo but could use functions
just as easily.
> Ops to remove:
> set_addr/get_addr
Exceptions currently need these (or something like them), Rakudo
makes use of it in a few places. I've used them enough times
that I'd prefer to see them remain rather than disappear.
> pushmark/popmark/pushaction
> exchange
> set[insp]_ind
> clear[insp]
> bytelength
> sizeof
I don't need these.
> Ops we could make into methods:
> schedule
> addhandler
> debug
> bounds
> profile
> trace
> gc_debug
> interpinfo
> getstdin / getstdout / getstderr
> spawnw (make into a Proc object with methods?)
> time* (make into a Time object with methods?)
> sysinfo (make into a Sys object with methods?)
The only items that I use here are trace, getstd*,
and time. Either opcode or methods are fine with me.
The trace opcode is used quite often (for debugging) --
it might be worth leaving it as an opcode so that someone
doesn't have to do PMC manipulations.
> Debug ops:
> - most of these could be methods on a debugger object
> - getline/getfile can possibly stay
Haven't used these.
> Experimental ops:
> - drop all except iter, exec, find_sub_not_null
I definitely use iter and find_sub_not_null. We also make
heavy use of the splice opcode in Rakudo.
> Math ops:
> - ceil/floor
> - transcendental ops
> - gcd/lcm/fact
I use the math ops because they exist, but could easily
switch to a library without too much difficulty.
> Object ops:
> - could add/remove parent become class methods?
IIRC, they already are methods -- the opcodes are simply leftover.
Pm
More information about the parrot-dev
mailing list