Date: Mon, 19 Jan 2009 11:27:52 -0500 From: Jerry McAllister <jerrymc@msu.edu> To: Linda Messerschmidt <linda.messerschmidt@gmail.com> Cc: freebsd-questions <freebsd-questions@freebsd.org> Subject: Re: Embedded scripting language advice sought Message-ID: <20090119162751.GD51908@gizmo.acns.msu.edu> In-Reply-To: <237c27100901181541n412f66c3v24ebae43b9efc313@mail.gmail.com> References: <237c27100901181541n412f66c3v24ebae43b9efc313@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jan 18, 2009 at 06:41:59PM -0500, Linda Messerschmidt wrote: > For a project I'm working on, I need to find an scripting language, and I > have a long wishlist: Oh Oh, you're going to start a religious war now. Well, good luck and be ready to take everything you hear with a shovelful of salt or preferrably maybe something either mindnumbing or psychodelic. ////jerry > > > - able to be "easily" embedded in a C++ application > > - "real" object-oriented with inheritance (preferably multiple inheritance) > > - able to implement object methods in C++ where needed > > - "sandbox" operation (e.g. ability to suppress any file I/O & system > libraries, but keep math and string libraries) > > - thread-safe, or, at least able to have multiple coexisting execution > contexts in one running process > > - relatively user-friendly syntax (i.e. (not (lisp (based)))) > > - has to build and embed on FreeBSD > > > This is a mathematical model, and the goal is to write certain > high-performance parts in C++, but to provide the user a command-line style > interface where they can "explore" interactively, examine/tweak data values, > etc, and then override certain behavior by subclassing from the C++ base > classes using the scripting language to see how it affects the next model > iteration. One thread is handling the model calculations, and one handles > the user's exploration, with appropriate synchronization when changes are > made. (We are doing this already, but since the code is C++, only the data > can be edited while it's running and inspection is limited to our hacky > pseudo-language.) > > > The obvious choice for this was Lua; it hits a lot of the marks, but not all > of them and not all well. I got as far as creating a Lua "object" in C++ > that exposes some core functionality, which is great, but when it comes to > inheritance, and especially multiple inheritance, Lua's object model wasn't > thrilling me. Also, it uses setjmp for error handling, which I'm worried > will mess around with C++ exceptions; they are already fragile enough in > threaded applications. > > > I do like Lua, but I'd really rather find an embedded scripting language > designed from the start to support OO, if one exists. Are there other > alternatives I should look at? Lua is to C as ______ is to C++? > > > I tried to give Guile a look but a quick poll of the users vetoed the > syntax. Lua is clearly ahead in the user-friendly department. > > > I also wondered if Python would be a good choice, but I'm just not sure > about how well it handles having new code generated more or less on the fly > in the middle of a running application. I somewhat suspect that if it were > done in Python, it would end up being a Python app with C++ add-ins, rather > than a C++ app with an embedded scripting language. That isn't a > deal-breaker, of course, as long as it works; results matter. That's not > exactly "lightweight" though, and I'm not sure if (or how) Python sandboxes. > > > One last "wouldn't it be nice" wish... If the user creates something they > particularly like on the fly, compositing up an object a piece at a time on > the command line, it would be just grand if the scripting language were able > to reproduce a class definition for that arbitrary object that could be > saved or tweaked for later reference and reuse. If not, we'll just have to > abstract the editing process enough to keep one ourselves, which would > probably be a bit user-unfriendly but hardly the end of the world. > > > But with a wishlist this long and exotic, I'm afraid the question here is > not whether something can do it all, but how disappointed I'm going to be. > :-( > > > I'm grateful for any language suggestions or feedback. Is Lua as close as > we can get? Python? Other?! > > > Thanks! > > > -LM > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090119162751.GD51908>