[ANN] Squeak/.NET bridge
ducasse at iam.unibe.ch
Sat Sep 13 18:38:21 UTC 2003
you seems to have a lot of fun. Continue. At ESUG john brant showed
another approach: having a
compiler compiling smalltalk towards .net classes. Georg Heeg showed
also the infrastructure they are building
(more corba like) to talk to .Net objects form VisualWorks.
You can have access to the talk and report at:
On Samedi, sep 13, 2003, at 19:39 Europe/Zurich, Benjamin Schroeder
> Hi everyone,
> I'd like to announce a project that a colleague and I have been
> working on: a bridge from Squeak to .NET.
> First, I should introduce myself.
> My name is Ben Schroeder. I have been interested in Squeak for quite
> a while now, but have only recently started doing much programming
> with it. I think it's a great environment - I like both the language
> and the tools and have been impressed with what I've seen of the
> community and philosophy.
> We do a lot of work with .NET where I work, and a couple of us were
> interested in trying out some more dynamic languages with some of the
> APIs that it had - for example, for databases and for native Windows
> windowing. We wrote a bridge from the Ruby language to .NET, and had
> good success writing some utilities and scripts with it.
> We recently ported that bridge to Squeak, and have posted a first
> release on SqueakMap. The bridge uses TCP sockets to talk to a
> separate .NET VM. (It shares a backend with the Ruby bridge.)
> Although the bridge works fairly well already, and passes a large
> number of tests, I should mention that is certainly alpha code. I'll
> mention a particularly important issue in a moment.
> Here is an example of the kind of code you can write with the bridge.
> | dotNet list reversed |
> dotNet := DotNet startNew.
> list := dotNet ArrayList new.
> list add: 'Hello'.
> list add: 'World'.
> Transcript show: list count. "Prints <<2>>"
> reversed := list collect: [:each | each reversed].
> Transcript show: reversed asArray. "Prints #('elloH' 'dlroW')"
> dotNet exitDotNet.
> There are more examples and more information at our swiki:
> The program itself is available both there and on SqueakMap.
> It is licensed under the GPL, but we plan to release under a more
> liberal license (something like LGPL, MIT, or SqueakL) soon. If the
> licensing is an issue for anybody who'd like to use the bridge, please
> let me know and I'll be happy to relicense it for you.
> The issue that I mentioned above is that the bridge sometimes leaves
> its separate .NET processes running - in particular, if you do not
> send #exitDotNet to a DotNet instance. You can leave one instance
> running as long as you'd like, at least if you do not shut your image
> down, but if you let it go, it will leave its partner process running.
> Of course, it is harmless to simply kill the other processes after
> exiting Squeak. They will be "DotNetBridge.Server.exe" processes.
> You can also send #exitDotNet to any DotNet instances from the same
> session. We plan to fix the problem in the next release (sometime
> within the week) by adding finalization and image shutdown code that
> sends #exitDotNet to live .NET instances. I apologize for the
> I hope you enjoy our bridge! I'd love to hear any questions or
> feedback - either on this list or via private mail.
> Ben Schroeder
More information about the Squeak-dev