← Back to team overview

modred team mailing list archive

Re: Ideas

 

Great.  Just make sure it doesn't come with a performance hit.

On 12/29/09, Michael Cohen <gnurdux@xxxxxxxxx> wrote:
> So I *think* we might be able to make a cross-platform sandbox.  Well,
> make is not quite the write word.  "Use".  Google's Native Client is
> designed to make safe, cross-platform native code for use as a browser
> plugin, but apparently the sandboxy part is available separately.  If we
> can get this working, this would let the client send the *same native
> code* to the Windows and Linux clients, and have them *both* execute it
> safely (since it uses system-call-free code).  I am checking out the
> source now.
>
> Michael Cohen
>
> Scott Lawrence wrote:
>> Short answer: no.
>>
>> Long answer: We're not writing a C sandbox that works on
>> windows/non-unix.  That's the only restriction.  Windows people can
>> run the java, perl, python, and whatever other clients we write.
>> Furthermore, they can submit code with a C client, but there better be
>> a java client to run code to give them CPU time credits (provided that
>> the cluster they're using has that feature enabled).
>>
>> On 12/28/09, Frederic Koehler <fkfire@xxxxxxxxx> wrote:
>>> Um...Are we going to require that all clients run linux?
>>>
>>> On Mon, Dec 28, 2009 at 11:08 PM, Michael Cohen <gnurdux@xxxxxxxxx>
>>> wrote:
>>>
>>>> ptrace tells you whenever the process tried to make a system call.  You
>>>> can
>>>> then do whatever you want with that information, including recording it
>>>> and
>>>> passing it on to the kernel or doing your own action.
>>>>
>>>>
>>>> Michael Cohen
>>>>
>>>> Scott Lawrence wrote:
>>>>
>>>>> Actually, not.  Ignore that last message.
>>>>>
>>>>> Can you build a prototype, that calls a specified function in place of
>>>>> the kernel??
>>>>>
>>>>> On 12/28/09, Scott Lawrence <bytbox@xxxxxxxxx> wrote:
>>>>>
>>>>>> Ok.  I think that for the most part, we should block system calls.
>>>>>>
>>>>>> On 12/28/09, Michael Cohen <gnurdux@xxxxxxxxx> wrote:
>>>>>>
>>>>>>> Very little to not at all if the code doesn't make many system calls.
>>>>>>> I
>>>>>>> wouldn't expect it to make many anyway; the tasks that this is good
>>>>>>> for
>>>>>>> shouldn't be ones that require much communication (because the
>>>>>>> Internet
>>>>>>> is fairly slow; if it's always sending stuff and requiring responses
>>>>>>> that gives probably a .1 second latency each step at least), so its
>>>>>>> mostly just running on the CPU.  It would certainly add less overhead
>>>>>>> for CPU-intensive things than say, Java.
>>>>>>>
>>>>>>> Michael Cohen
>>>>>>>
>>>>>>> Scott Lawrence wrote:
>>>>>>>
>>>>>>>> And this is the only thing that needs to be done? How much will it
>>>>>>>> slow the code down? More importantly
>>>>>>>>
>>>>>>>>
>>>>>>>> On 12/28/09, Michael Cohen <gnurdux@xxxxxxxxx> wrote:
>>>>>>>>
>>>>>>>>> We can't actually block interrupts; that require kernel mode code.
>>>>>>>>> Also, I think there are other mechanisms for system calls.
>>>>>>>>>
>>>>>>>>> BUT
>>>>>>>>>
>>>>>>>>> lucky for us, Linux (and other unixes, but with slightly different
>>>>>>>>> implementations) has a built-in way to intercept system calls.
>>>>>>>>> It's
>>>>>>>>> called ptrace, and it is what is used for the USACO sandbox.
>>>>>>>>>
>>>>>>>>> Michael Cohen
>>>>>>>>>
>>>>>>>>> Scott Lawrence wrote:
>>>>>>>>>
>>>>>>>>>> Oh. I see.
>>>>>>>>>>
>>>>>>>>>> My first instinct is to say: "ban them!"  But it would be really
>>>>>>>>>> nice
>>>>>>>>>> if most existing source code could run out-of-the-box on the
>>>>>>>>>> cluster,
>>>>>>>>>> even if there wouldn't be a speedup.
>>>>>>>>>>
>>>>>>>>>> I'm not planning on support C/C++ on windows - that's way too much
>>>>>>>>>> trouble - so we only have to worry about unix systems.  Are
>>>>>>>>>> interrupts
>>>>>>>>>> the only things we would have to block?
>>>>>>>>>>
>>>>>>>>>> On 12/28/09, Michael Cohen <gnurdux@xxxxxxxxx> wrote:
>>>>>>>>>>
>>>>>>>>>>> You are simply incorrect here.  The issue isn't library calls,
>>>>>>>>>>> it's
>>>>>>>>>>> system calls.  Libc calls themselves use system calls, which are
>>>>>>>>>>> interrupts.  You can do everything without touching libc.  You
>>>>>>>>>>> just
>>>>>>>>>>> do
>>>>>>>>>>> the right stuff to the stuck and do an interrupt or whatever.
>>>>>>>>>>> The
>>>>>>>>>>> library doesn't have some special way to access the kernel.
>>>>>>>>>>>
>>>>>>>>>>> Michael Cohen
>>>>>>>>>>>
>>>>>>>>>>> Scott Lawrence wrote:
>>>>>>>>>>>
>>>>>>>>>>>> You're all missing the point.  I'm claiming that, properly
>>>>>>>>>>>> implemented, Modred should require no sandboxing outside of what
>>>>>>>>>>>> is
>>>>>>>>>>>> necessary to implement it's logic.
>>>>>>>>>>>>
>>>>>>>>>>>> So back to our good friends Alice, Bob, and Mallory.  Alice
>>>>>>>>>>>> sends
>>>>>>>>>>>> the
>>>>>>>>>>>> cluster (which means she directs it to the hub, but let's just
>>>>>>>>>>>> consider the cluster a big black box for now) some C source
>>>>>>>>>>>> code.
>>>>>>>>>>>> This code does some strange stuff - lots of file i/o and memory
>>>>>>>>>>>> access.  What does the cluster do with this?
>>>>>>>>>>>>
>>>>>>>>>>>> It links the program with its own special libraries.  Even
>>>>>>>>>>>> inline
>>>>>>>>>>>> assembly has to call functions to interface with the hard drive
>>>>>>>>>>>> and
>>>>>>>>>>>> allocate memory and such. Malicious code that gets submitted to
>>>>>>>>>>>> the
>>>>>>>>>>>> server will be sanitized in this fashion.  The only problem I
>>>>>>>>>>>> see
>>>>>>>>>>>> is
>>>>>>>>>>>> with illegal memory access - but I suspect this will be dealt
>>>>>>>>>>>> with,
>>>>>>>>>>>> because the cluster has to analyze what data the client program
>>>>>>>>>>>> accesses anyway...
>>>>>>>>>>>>
>>>>>>>>>>>> Now Bob wants to compile and link his program on his own
>>>>>>>>>>>> computer.
>>>>>>>>>>>> Fine.  He uses a different (smaller, incidentally) set of
>>>>>>>>>>>> libraries.
>>>>>>>>>>>> These libraries don't intercept every call of malloc and stuff -
>>>>>>>>>>>> those
>>>>>>>>>>>> are run on his computer.  But if he wants to access cluster
>>>>>>>>>>>> data,
>>>>>>>>>>>> he
>>>>>>>>>>>> has to use special functions.  And he can't actually run code on
>>>>>>>>>>>> the
>>>>>>>>>>>> cluster.
>>>>>>>>>>>>
>>>>>>>>>>>> Now what does Mallory do again?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On 12/28/09, Michael Cohen <gnurdux@xxxxxxxxx> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Server-side I don't see an issue.  (java's, lua's,
>>>>>>>>>>>>>  >  javascript's, .NET/mono, some other random thing) is
>>>>>>>>>>>>> basically
>>>>>>>>>>>>> what
>>>>>>>>>>>>> I already said.  There are other sandboxing systems that are
>>>>>>>>>>>>> designed
>>>>>>>>>>>>> to
>>>>>>>>>>>>> work on x86 native code, such as vx32 (I think I mentioned that
>>>>>>>>>>>>> also).
>>>>>>>>>>>>> Many of these schemes (with the exception of vx32) have the
>>>>>>>>>>>>> advantage
>>>>>>>>>>>>> that they also automatically make the code cross-platform.
>>>>>>>>>>>>> Even
>>>>>>>>>>>>> vx32
>>>>>>>>>>>>> is
>>>>>>>>>>>>> supposedly portable to Windows, but nobody has done it yet and
>>>>>>>>>>>>> I
>>>>>>>>>>>>> have
>>>>>>>>>>>>> no
>>>>>>>>>>>>> idea if any of us have the expertise to.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Frederic Koehler wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> As far as sandboxing, server-side you can presumably rely on
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> operating
>>>>>>>>>>>>>> system's sandboxes (per-user or perhaps some more elaborate
>>>>>>>>>>>>>> mechanism
>>>>>>>>>>>>>> like
>>>>>>>>>>>>>> FreeBSD's jails).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> But as soon as the cluster sends code out to clients,
>>>>>>>>>>>>>> obviously
>>>>>>>>>>>>>> there
>>>>>>>>>>>>>> is
>>>>>>>>>>>>>> a
>>>>>>>>>>>>>> big issue if we let them do whatever the hell they want. Just
>>>>>>>>>>>>>> preventing
>>>>>>>>>>>>>> assembly or anything like that simply doesn't work in C/C++,
>>>>>>>>>>>>>> (not
>>>>>>>>>>>>>> to
>>>>>>>>>>>>>> mention
>>>>>>>>>>>>>> it would be suprisingly hard/irritating,) since the code could
>>>>>>>>>>>>>> still
>>>>>>>>>>>>>> execute
>>>>>>>>>>>>>> the system-calls (you could try not linking against libc,too,
>>>>>>>>>>>>>> but
>>>>>>>>>>>>>> then
>>>>>>>>>>>>>> you
>>>>>>>>>>>>>> _really_ have no portability :P).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> System-call controlling is possible, but is either pretty
>>>>>>>>>>>>>> unportable
>>>>>>>>>>>>>> (lots
>>>>>>>>>>>>>> of x86 assembly stuff) or slow-ish (virtual machines).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> That being said, if you completely seperate client-sendable
>>>>>>>>>>>>>> code
>>>>>>>>>>>>>> from
>>>>>>>>>>>>>> server-code, I think that allays a lot of the concerns.
>>>>>>>>>>>>>> Requiring
>>>>>>>>>>>>>> client-sendable code to be written for some safe VM (java's,
>>>>>>>>>>>>>> lua's,
>>>>>>>>>>>>>>  javascript's, .NET/mono, some other random thing) could avoid
>>>>>>>>>>>>>> this.
>>>>>>>>>>>>>> In
>>>>>>>>>>>>>> addition, client-sendable code would intentionally be written
>>>>>>>>>>>>>> with
>>>>>>>>>>>>>> knowledge
>>>>>>>>>>>>>> of the sensitivity of the data it handles (i.e. not written at
>>>>>>>>>>>>>> all
>>>>>>>>>>>>>> if
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> data is important).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Mon, Dec 28, 2009 at 7:49 PM, Michael Cohen <
>>>>>>>>>>>>>> gnurdux@xxxxxxxxx>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>  I would still be happier if there were a sandbox, actually.
>>>>>>>>>>>>>>> There
>>>>>>>>>>>>>>> are
>>>>>>>>>>>>>>> ways
>>>>>>>>>>>>>>> of getting around that sort of thing that are too complicated
>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>> prevent
>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>> the source level IMO.  For instance, you can use inline
>>>>>>>>>>>>>>> assembly.
>>>>>>>>>>>>>>> So
>>>>>>>>>>>>>>> we
>>>>>>>>>>>>>>> block inline assembly.  That's all well and good, but now
>>>>>>>>>>>>>>> we've
>>>>>>>>>>>>>>> blocked
>>>>>>>>>>>>>>> people using legitimate assembly optimizations. Worse, what
>>>>>>>>>>>>>>> happens
>>>>>>>>>>>>>>> if
>>>>>>>>>>>>>>> they
>>>>>>>>>>>>>>> execute some shellcody stuff, allowing them to escape?  I
>>>>>>>>>>>>>>> don't
>>>>>>>>>>>>>>> really
>>>>>>>>>>>>>>> know
>>>>>>>>>>>>>>> how to block that at all.  On the other hand, a sandbox would
>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>> add
>>>>>>>>>>>>>>> much
>>>>>>>>>>>>>>> overhead since these tasks will most likely use lots of CPU
>>>>>>>>>>>>>>> time
>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>> few
>>>>>>>>>>>>>>> system calls or whatever.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Michael Cohen
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Scott Lawrence wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  Ok, I'm going to build a prototype of my privacy model.  I'm
>>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>> going
>>>>>>>>>>>>>>>> to implement the challenge-response stuff, I'll assume
>>>>>>>>>>>>>>>> there's
>>>>>>>>>>>>>>>> an
>>>>>>>>>>>>>>>> implementation of that and that it works.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I think I've isolated the misunderstanding about the
>>>>>>>>>>>>>>>> sandboxes.
>>>>>>>>>>>>>>>> You
>>>>>>>>>>>>>>>> don't submit binary code the the Modred cluster - you either
>>>>>>>>>>>>>>>> submit
>>>>>>>>>>>>>>>> source, to be linked by the modred cluster with the relevant
>>>>>>>>>>>>>>>> libraries, or you link the code yourself with the libraries.
>>>>>>>>>>>>>>>> The
>>>>>>>>>>>>>>>> libraries that you would link with merely copy the program
>>>>>>>>>>>>>>>> over
>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> cluster, where it can be executed in a manner deemed fit by
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> code
>>>>>>>>>>>>>>>> there.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I suppose you could say that that is a sandbox. ;-)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On 12/28/09, Michael Cohen <gnurdux@xxxxxxxxx> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>  If you read my email more carefully, you will see that I am
>>>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>>> necessary objecting to Scott's suggestion.  I say that it
>>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>>> necessary, but that it would be the only thing necessary to
>>>>>>>>>>>>>>>>> allow
>>>>>>>>>>>>>>>>> more
>>>>>>>>>>>>>>>>> problem-specific privacy tasks to be used.  The need for a
>>>>>>>>>>>>>>>>> sandbox
>>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>> pretty simple.  If we make untrusted users able to ask for
>>>>>>>>>>>>>>>>> tasks,
>>>>>>>>>>>>>>>>> if
>>>>>>>>>>>>>>>>> they upload code, then I don't want it running unsandboxed
>>>>>>>>>>>>>>>>> on
>>>>>>>>>>>>>>>>> my
>>>>>>>>>>>>>>>>> computer.  Otherwise, their code could steal my files, wipe
>>>>>>>>>>>>>>>>> my
>>>>>>>>>>>>>>>>> harddisk,
>>>>>>>>>>>>>>>>> install Windows or do other undesirable things.  If it is
>>>>>>>>>>>>>>>>> sandboxed,
>>>>>>>>>>>>>>>>> then arbitary code can be executed safely, as long as we
>>>>>>>>>>>>>>>>> trust
>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>> sandbox.  Sandboxed environments are often also
>>>>>>>>>>>>>>>>> cross-platform,
>>>>>>>>>>>>>>>>> another
>>>>>>>>>>>>>>>>> plus, since they typically replace or intercept any kind of
>>>>>>>>>>>>>>>>> system
>>>>>>>>>>>>>>>>> call.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Michael Cohen
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Scott Lawrence wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>  Well, I'm glad someone expresses opinions I don't agree
>>>>>>>>>>>>>>>>>> with...
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I think Mikey's objection to privacy concerns is that it's
>>>>>>>>>>>>>>>>>> so
>>>>>>>>>>>>>>>>>> problem-specific, we can't reasonably expect to have a
>>>>>>>>>>>>>>>>>> general
>>>>>>>>>>>>>>>>>> implementation.  But if the user specifies which parts of
>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>> data
>>>>>>>>>>>>>>>>>> are
>>>>>>>>>>>>>>>>>> private, the Modred hub just has to be sure to divvy up
>>>>>>>>>>>>>>>>>> tasks
>>>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>> a
>>>>>>>>>>>>>>>>>> way
>>>>>>>>>>>>>>>>>> that gives those bits of information only to the trusted,
>>>>>>>>>>>>>>>>>> dedicated
>>>>>>>>>>>>>>>>>> servers.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> For the purposes of clarity, I will be referring to
>>>>>>>>>>>>>>>>>> dedicated
>>>>>>>>>>>>>>>>>> servers
>>>>>>>>>>>>>>>>>> as simply "servers", and the central server as the "hub".
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I don't see the need for a sandbox.  Could you present
>>>>>>>>>>>>>>>>>> some
>>>>>>>>>>>>>>>>>> specific
>>>>>>>>>>>>>>>>>> attacks that a sandbox would fix?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On 12/28/09, Michael Cohen <gnurdux@xxxxxxxxx> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>  It seems to me that dealing with privacy concerns is an
>>>>>>>>>>>>>>>>>>> extremely
>>>>>>>>>>>>>>>>>>> problem-specific issue.  In any given case you need to
>>>>>>>>>>>>>>>>>>> work
>>>>>>>>>>>>>>>>>>> out
>>>>>>>>>>>>>>>>>>> how
>>>>>>>>>>>>>>>>>>> much
>>>>>>>>>>>>>>>>>>> you can give to people without letting private
>>>>>>>>>>>>>>>>>>> information
>>>>>>>>>>>>>>>>>>> leak,
>>>>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> details vary greatly from problem to problem.  That isn't
>>>>>>>>>>>>>>>>>>> our
>>>>>>>>>>>>>>>>>>> business,
>>>>>>>>>>>>>>>>>>> and I don't think we should concern ourselves with it too
>>>>>>>>>>>>>>>>>>> much.
>>>>>>>>>>>>>>>>>>> The
>>>>>>>>>>>>>>>>>>> way
>>>>>>>>>>>>>>>>>>> I see it there are two options:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> 1. make this designed for stuff without privacy concerns
>>>>>>>>>>>>>>>>>>>       I think this is both the easiest and the best
>>>>>>>>>>>>>>>>>>> option.
>>>>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>>>> don't
>>>>>>>>>>>>>>>>>>> really
>>>>>>>>>>>>>>>>>>> like the idea of a public, free service doing
>>>>>>>>>>>>>>>>>>> computations
>>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>>>> an
>>>>>>>>>>>>>>>>>>> evil
>>>>>>>>>>>>>>>>>>> corporation anyway; if it's being done BY the public it
>>>>>>>>>>>>>>>>>>> should
>>>>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>>> done
>>>>>>>>>>>>>>>>>>> FOR the public.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> 2. add in a small amount of functionality designed to
>>>>>>>>>>>>>>>>>>> facilitate
>>>>>>>>>>>>>>>>>>> dealing
>>>>>>>>>>>>>>>>>>> with privacy concerns
>>>>>>>>>>>>>>>>>>>       At the level of this project, that would probably
>>>>>>>>>>>>>>>>>>> just
>>>>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> controls
>>>>>>>>>>>>>>>>>>> on what data gets sent to what people.  There might be
>>>>>>>>>>>>>>>>>>> reasons
>>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>>>> adding such controls anyway; some tasks could be
>>>>>>>>>>>>>>>>>>> designated
>>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>>>> only
>>>>>>>>>>>>>>>>>>> "trusted" users.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Either way I doubt that this will be a big issue.  I
>>>>>>>>>>>>>>>>>>> think
>>>>>>>>>>>>>>>>>>> maybe
>>>>>>>>>>>>>>>>>>> a
>>>>>>>>>>>>>>>>>>> bigger issue is how to run arbitrary code efficiently and
>>>>>>>>>>>>>>>>>>> securely.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I see only a few solutions
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>       Don't allow arbitrary code, but only a defined set
>>>>>>>>>>>>>>>>>>> of
>>>>>>>>>>>>>>>>>>> tasks.
>>>>>>>>>>>>>>>>>>>  Or,
>>>>>>>>>>>>>>>>>>> similarly, allow some "trusted" set of tasks, each
>>>>>>>>>>>>>>>>>>> separately
>>>>>>>>>>>>>>>>>>> ported
>>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>> each platform (like boinc).
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>       Use Java.  This lets us easily sandbox it and is
>>>>>>>>>>>>>>>>>>> cross-platform,
>>>>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>>> sacrifices a bit on efficiency.  Also, Java can be
>>>>>>>>>>>>>>>>>>> annoying
>>>>>>>>>>>>>>>>>>> (although
>>>>>>>>>>>>>>>>>>> other JVM languages would also work in this situation).
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>       There are ways of running cross-platform, C/C++
>>>>>>>>>>>>>>>>>>> code
>>>>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>>> a
>>>>>>>>>>>>>>>>>>> sandbox as
>>>>>>>>>>>>>>>>>>> well.  One possibility is to use LLVM, although the LLVM
>>>>>>>>>>>>>>>>>>> developers
>>>>>>>>>>>>>>>>>>> specifically say that LLVM is NOT designed to be used
>>>>>>>>>>>>>>>>>>> this
>>>>>>>>>>>>>>>>>>> way.
>>>>>>>>>>>>>>>>>>>  Another
>>>>>>>>>>>>>>>>>>> possibility is to use a sandboxed code system that works
>>>>>>>>>>>>>>>>>>> on
>>>>>>>>>>>>>>>>>>> multiple
>>>>>>>>>>>>>>>>>>> operating systems but only on x86.  This includes things
>>>>>>>>>>>>>>>>>>> like
>>>>>>>>>>>>>>>>>>> VX32,
>>>>>>>>>>>>>>>>>>> which is apparently portable to Windows, but hasn't been
>>>>>>>>>>>>>>>>>>> ported.
>>>>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>>>> don't know whether or not that sort of thing is within
>>>>>>>>>>>>>>>>>>> our
>>>>>>>>>>>>>>>>>>> abilities.
>>>>>>>>>>>>>>>>>>> Another option might be Google Native Client; that is
>>>>>>>>>>>>>>>>>>> designed
>>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>>> used in a web browser but I don't know how hard it would
>>>>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>> "rip
>>>>>>>>>>>>>>>>>>> out"
>>>>>>>>>>>>>>>>>>> the sandboxing/cross-OS x86 code stuff.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Michael Cohen
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>>>>> Mailing list: https://launchpad.net/~modred
>>>>>>>>>>>>>>>>>>> Post to     : modred@xxxxxxxxxxxxxxxxxxx
>>>>>>>>>>>>>>>>>>> Unsubscribe : https://launchpad.net/~modred
>>>>>>>>>>>>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>  _______________________________________________
>>>>>>>>>>>>>>>>> Mailing list: https://launchpad.net/~modred
>>>>>>>>>>>>>>>>> Post to     : modred@xxxxxxxxxxxxxxxxxxx
>>>>>>>>>>>>>>>>> Unsubscribe : https://launchpad.net/~modred
>>>>>>>>>>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>  _______________________________________________
>>>>>>>>>>>>>>> Mailing list: https://launchpad.net/~modred
>>>>>>>>>>>>>>> Post to     : modred@xxxxxxxxxxxxxxxxxxx
>>>>>>>>>>>>>>> Unsubscribe : https://launchpad.net/~modred
>>>>>>>>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  _______________________________________________
>>>>>>>>>>>>> Mailing list: https://launchpad.net/~modred
>>>>>>>>>>>>> Post to     : modred@xxxxxxxxxxxxxxxxxxx
>>>>>>>>>>>>> Unsubscribe : https://launchpad.net/~modred
>>>>>>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>>>>>>>
>>>>>>>>>>>>>  _______________________________________________
>>>>>>>>>>> Mailing list: https://launchpad.net/~modred
>>>>>>>>>>> Post to     : modred@xxxxxxxxxxxxxxxxxxx
>>>>>>>>>>> Unsubscribe : https://launchpad.net/~modred
>>>>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>>>>>
>>>>>>>>>>>  _______________________________________________
>>>>>>>>> Mailing list: https://launchpad.net/~modred
>>>>>>>>> Post to     : modred@xxxxxxxxxxxxxxxxxxx
>>>>>>>>> Unsubscribe : https://launchpad.net/~modred
>>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>>>
>>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Mailing list: https://launchpad.net/~modred
>>>>>>> Post to     : modred@xxxxxxxxxxxxxxxxxxx
>>>>>>> Unsubscribe : https://launchpad.net/~modred
>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Scott Lawrence
>>>>>>
>>>>>> Webmaster
>>>>>> The Blair Robot Project
>>>>>> Montgomery Blair High School
>>>>>>
>>>>>>
>>>>>
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~modred
>>>> Post to     : modred@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~modred
>>>> More help   : https://help.launchpad.net/ListHelp
>>>>
>>
>>
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~modred
> Post to     : modred@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~modred
> More help   : https://help.launchpad.net/ListHelp
>


-- 
Scott Lawrence

Webmaster
The Blair Robot Project
Montgomery Blair High School



Follow ups

References