On 16.10.2008, at 10:40, Antony Blakey wrote:
Anyone else interested in this?
Sounds cool!
Of course, the question always is what means "interested in this", in
the light of no funding and limited spare time?
Marcus
I did some work to integrate LLVM and Clang with VW. I'm moving this
to Squeak. For the platforms supported by LLVM this allows inline C/
ObjC/C++ (although C++ is early days yet), dynamically compiled and
loaded, and highly optimized platform-independent SSA-based native
code generation. As a side effect it can provide an optimized FFI
based on jitted stubs/trampolines. I did this (trivially) for
callout in VW, but didn't bother about callbacks. You can also use
Clang to parse platform headers (and code), which you can obviously
include in inline C, and also produce a parse tree with various
degrees of semantic analysis, which you can then reflect on. Clang
goes to extraordinary lengths to maintain source correspondence,
which is an added bonus in interactive environment such as Smalltalk.
Eliot's aware of that work. AFAIK he decided against using LLVM for
Cog because Qwak wanted something that didn't increase the VM
footprint, although he probably had some other reasons as well. PICs
were an issue he raised, but that can be dealt with - in fact, by
using runtime type recording at the call sites, plus some techniques
used in multi-method dispatch for CLOS, you can optimize for both
sides of a double dispatch, which would given at the very least
highly optimized numeric operations. LLVM also does cool link time
optimization and inlining, and I've got this (largely unformed) idea
that the type-based specialisation could possibly trickle back along
a call chain, resulting in block-aggregation that would expose more
opportunity for optimization by delimiting regions of known type
information. It might be however that such regions never practically
get above a certain size.
I'd like to investigate using LLVM to make plugins that are
dynamically compiled and loaded (i.e. not via VMMaker). A further
thought is that the VM could be regenerated, compiled and switched
whilst running. This leads obviously to a *very* basic cross-
platform headless VM that regenerates itself upon loading, optimized
for the platform it's running on. Of course you'd cache this.
Benefits of LLVM/Clang over roll-your-own native code generation are
a) the significant optimization systems; b) cross-platform code
generation; and c) dynamic C-family integration.
And finally, LLVM/Clang are two of the most beautifully, cleanly
architected and written pieces of C++ code I've ever seen. No, I'm
not a contributor :)
On 16/10/2008, at 6:33 PM, Alexandre Bergel wrote:
Talking about interoperability. I did some experiment a while ago
about making Squeak talk to Java using sockets. Java classes are
accessible within Squeak, and reflection is used to invoke methods.
People interested in this could ask for further info.
Cheers,
Alexandre
On 16 Oct 2008, at 09:55, Lukas Renggli wrote:
But then, the new FFI of Eliot seems to be far, far better then
the old
one.
It would be nice to have that instead. E.g, it supports callbacks
nicely
and
is much faster.
Go Eliot, go! It is crucial that Smalltalk gets better bindings with
the outside world. It should be easy (as with Python or Ruby) to
integrate some external C library.
I hope the new FFI doesn't need to hack the Smalltalk language and
compiler.
Cheers,
Lukas
--
Lukas Renggli
http://www.lukas-renggli.ch
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Antony Blakey
-------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787
When I hear somebody sigh, 'Life is hard,' I am always tempted to
ask, 'Compared to what?'
-- Sydney Harris
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
Marcus Denker -- [EMAIL PROTECTED]
http://www.iam.unibe.ch/~denker
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project