John Macdonald <[EMAIL PROTECTED]> writes:

> If a int1 (or int2 or nybble or other sub-addressable sized value)
> is being referred to, a similar issue arises since most machines
> these days have byte addressing, but do not have bit addressing.  If
> you can't refer directly to it, the value will have to be extracted
> and re-inserted to provide "is rw" access.

I surely must be misunderstanding what you're saying...  the way I
read that, you're suggesting that it will matter to Perl -- not only
to the compiler but even to user code -- how the underlying hardware
addresses its memory.  I really hope that's not the case.

I thought Parrot would take care of all that fiddly platform-dependent
stuff so that Perl doesn't have to know or care about it.  Perl6 code
shouldn't have to even *know* whether it's running on a big or little
(or middle) endian system, how many bits wide the BUS is, how many
bits are in an integer, whether there's a math coprocessor, whether
the instruction set is RISC or CISC, how many CPUs there are, what
kind of filesystem the underlying OS has, or whether the underlying
GUI is Win32 or Aqua or GTK or Qt.  Perl6 code shouldn't have to know
that stuff *even* to call libraries written in another language; even
the compiler shouldn't have to know about it.  Parrot should have a
wrapper API thingydo that makes it Just Work.

That's the point of having a VM, or such was my understanding.

I don't think I'm dreaming the impossible here, because Inform seems
to manage this stuff just fine, with either of the VMs it compiles to
(except for the parts about calling libraries written in other
languages, and having a GUI; Inform doesn't support those things).
You can write the code and compile it on a DOS system, stick the
binary on an ftp server, and J. Random Nerd can download it, and
assuming he has the appropriate version of the VM for his system, it
will run your code -- whether his system is SPARC/Solaris or Nintendo
Gameboy, your code will never know the difference; as far as your code
is concerned, it's running on the z-machine.  Parrot should be like
that (except that Parrot's minimum requirements for the underlying
system will have to be a little higher, because we want to support
things like disk I/O and allocating more RAM after the program starts
running).

So if the underlying hardware doesn't know how to write a single byte,
then Parrot should have workaround code for that.  Perl shouldn't even
need to know about it.

-- 
$;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}}
split//,"[EMAIL PROTECTED]/ --";$\=$ ;-> ();print$/

Reply via email to