Jump to page: 1 2 3
Thread overview
MiniD 1.0 released!
Aug 01, 2007
Derek Parnell
Aug 01, 2007
Robert Fraser
Aug 02, 2007
renoX
Aug 01, 2007
BLS
Aug 01, 2007
Sean Kelly
Aug 01, 2007
Pragma
Aug 01, 2007
Sean Kelly
Aug 02, 2007
Benji Smith
Aug 02, 2007
Alexander Panek
Aug 03, 2007
Stewart Gordon
Aug 04, 2007
Christopher Wright
Aug 05, 2007
Alan Knowles
August 01, 2007
After more than a year of brainstorming, writing, re-writing, taking ideas from other languages and generally having a good time, I've come to what I feel is a good place to call it 1.0.

== What is MiniD? ==

MiniD is a scripting language written entirely in D, designed around D's features and with D's semantics in mind.  It's based mainly off of Lua and Squirrel, with influences from D and JavaScript.

MiniD is meant to be an extensible extension language, like Lua.  That is, rather than trying to be a huge do-everything language like Python, it's meant to be a smaller, more compact (but still expressive) language for writing programs and scripts meant to be run in the context of a larger program.  It's extensible in that the "host" program can provide functions and classes as hooks into application-specific functionality, and it's an extension language in that it can be used to extend the capabilities of the host program.

MiniD makes it easy to interface between native and script code.  The low-level API is muct simpler to use and cleaner than that of most languages implemented in C, and there is also a Pyd-like binding library to make it possible to quickly expose free functions and class types to MiniD.

== Why MiniD? ==

Why MiniD instead of something like Lua, Python, or DMDScript?  Lua and Python are both written in C, and as such have (compared to what D provides) clumsy APIs.  They also have their own memory management and error handling schemes, two things that D provides natively.  DMDScript has a D implementation, but it's not free for all use.  MiniD is written in D, has a simple-to-use API, takes advantage of as many D features as possible (the GC, exceptions, templates, classes), and is licensed under the zlib/libpng license, which means you can use it for just about anything.

== Describe the language. ==

- Uses a C-style syntax with a lot of D influences.

- Is dynamically typed, with booleans, integers, double-precision floats, UTF-32 characters and strings, tables (maps), arrays, first-class functions, and classes.

- Is object-oriented, with a class-based OOP model with support for single inheritance and dynamic modification of classes (as they are a first-class type).

- Makes it easy to make larger codebases with native support for modules and packages.

- Supports a form of collaborative multithreading with coroutines.  A coroutine is like a function which you pause and resume explicitly. Coroutines can be used to make iterators and to simulate simple multithreading.

== Describe the API. ==

- Supports code sandboxing through the use of multiple "contexts", into which libraries can be loaded.  You can create a sandbox by only loading a restricted set of libraries into a context, and then running code in it.

- Is templated in many places to support IFTI, and converts between native D types and MiniD types in many places as well, in order to avoid lots of tedious explicit types needing to be specified and conversions to be done.

- Makes it easy to write native functions using the API.  No confusing excessive stack manipulation like with Lua or Squirrel.  No reference counting like with Python.  Just get the values and manipulate them with a program state.

- Makes it really easy to expose native functions and classes to MiniD through a templated binding library, similar to Pyd.  Can bind free functions, classes, and in classes, constructors (even multiple constructors with the same number of parameters, unlike Pyd), methods, and properties (through a convention, as MiniD itself does not have explicit properties). Even supports binding multiple D classes which are in an inheritance hierarchy, but notably does _not_ yet support MiniD classes then inheriting from those exposed D classes.

== Licensing and Compatibility ==

MiniD is licensed under zlib/libpng, which basically means (1) I'd like you to give me credit if you use it, (2) you can't say that you made it, and (3) you can modify it all you want and even release your own modified version of the language, but you can't call a modified version "MiniD".

MiniD is, as far as I know, only compatible with D 1 (last compiled with D 1.020).  Because it uses some newer features, it is not known to work with GDC 0.23, but may compile with one of the newer patches.

MiniD is based entirely on Tango, the alternative standard library for D. MiniD was last built with Tango 0.99.

MiniD is built with Bu[il]d, but should also work with DSSS.  Not real sure if it works with dsss net.  DSSS is still largely a mystery to me.

MiniD should compile on any platform for which there's a functional compiler.  It has been developed and tested on Windows, and has also been compiled and tested on Ubuntu 7.04.

== Links ==

The main page for MiniD is http://www.dsource.org/projects/minid.  The forums are at http://www.dsource.org/forums/viewforum.php?f=94; I use the forums for announcements, and you can also start discussions there.

You can find information on downloading the library on the main page. There's also a link to MDCL, the MiniD Command-Line interpreter, for which Windows binaries are provided.  If you're on another system, you can check out the trunk and compile MDCL manually.

Any questions, comments etc.  Either reply here or post on the forums :)


August 01, 2007
On Wed, 1 Aug 2007 02:05:40 -0400, Jarrett Billingsley wrote:

Congratulations Jarrett! This is a gem of a D project.

-- 
Derek
(skype: derek.j.parnell)
Melbourne, Australia
1/08/2007 4:59:18 PM
August 01, 2007
Jarrett Billingsley Wrote:

> After more than a year of brainstorming, writing, re-writing, taking ideas from other languages and generally having a good time, I've come to what I feel is a good place to call it 1.0.
> 
> == What is MiniD? ==
> 
> MiniD is a scripting language written entirely in D, designed around D's features and with D's semantics in mind.  It's based mainly off of Lua and Squirrel, with influences from D and JavaScript.
> 
> MiniD is meant to be an extensible extension language, like Lua.  That is, rather than trying to be a huge do-everything language like Python, it's meant to be a smaller, more compact (but still expressive) language for writing programs and scripts meant to be run in the context of a larger program.  It's extensible in that the "host" program can provide functions and classes as hooks into application-specific functionality, and it's an extension language in that it can be used to extend the capabilities of the host program.
> 
> MiniD makes it easy to interface between native and script code.  The low-level API is muct simpler to use and cleaner than that of most languages implemented in C, and there is also a Pyd-like binding library to make it possible to quickly expose free functions and class types to MiniD.
> 
> == Why MiniD? ==
> 
> Why MiniD instead of something like Lua, Python, or DMDScript?  Lua and Python are both written in C, and as such have (compared to what D provides) clumsy APIs.  They also have their own memory management and error handling schemes, two things that D provides natively.  DMDScript has a D implementation, but it's not free for all use.  MiniD is written in D, has a simple-to-use API, takes advantage of as many D features as possible (the GC, exceptions, templates, classes), and is licensed under the zlib/libpng license, which means you can use it for just about anything.
> 
> == Describe the language. ==
> 
> - Uses a C-style syntax with a lot of D influences.
> 
> - Is dynamically typed, with booleans, integers, double-precision floats, UTF-32 characters and strings, tables (maps), arrays, first-class functions, and classes.
> 
> - Is object-oriented, with a class-based OOP model with support for single inheritance and dynamic modification of classes (as they are a first-class type).
> 
> - Makes it easy to make larger codebases with native support for modules and packages.
> 
> - Supports a form of collaborative multithreading with coroutines.  A coroutine is like a function which you pause and resume explicitly. Coroutines can be used to make iterators and to simulate simple multithreading.
> 
> == Describe the API. ==
> 
> - Supports code sandboxing through the use of multiple "contexts", into which libraries can be loaded.  You can create a sandbox by only loading a restricted set of libraries into a context, and then running code in it.
> 
> - Is templated in many places to support IFTI, and converts between native D types and MiniD types in many places as well, in order to avoid lots of tedious explicit types needing to be specified and conversions to be done.
> 
> - Makes it easy to write native functions using the API.  No confusing excessive stack manipulation like with Lua or Squirrel.  No reference counting like with Python.  Just get the values and manipulate them with a program state.
> 
> - Makes it really easy to expose native functions and classes to MiniD through a templated binding library, similar to Pyd.  Can bind free functions, classes, and in classes, constructors (even multiple constructors with the same number of parameters, unlike Pyd), methods, and properties (through a convention, as MiniD itself does not have explicit properties). Even supports binding multiple D classes which are in an inheritance hierarchy, but notably does _not_ yet support MiniD classes then inheriting from those exposed D classes.
> 
> == Licensing and Compatibility ==
> 
> MiniD is licensed under zlib/libpng, which basically means (1) I'd like you to give me credit if you use it, (2) you can't say that you made it, and (3) you can modify it all you want and even release your own modified version of the language, but you can't call a modified version "MiniD".
> 
> MiniD is, as far as I know, only compatible with D 1 (last compiled with D 1.020).  Because it uses some newer features, it is not known to work with GDC 0.23, but may compile with one of the newer patches.
> 
> MiniD is based entirely on Tango, the alternative standard library for D. MiniD was last built with Tango 0.99.
> 
> MiniD is built with Bu[il]d, but should also work with DSSS.  Not real sure if it works with dsss net.  DSSS is still largely a mystery to me.
> 
> MiniD should compile on any platform for which there's a functional compiler.  It has been developed and tested on Windows, and has also been compiled and tested on Ubuntu 7.04.
> 
> == Links ==
> 
> The main page for MiniD is http://www.dsource.org/projects/minid.  The forums are at http://www.dsource.org/forums/viewforum.php?f=94; I use the forums for announcements, and you can also start discussions there.
> 
> You can find information on downloading the library on the main page. There's also a link to MDCL, the MiniD Command-Line interpreter, for which Windows binaries are provided.  If you're on another system, you can check out the trunk and compile MDCL manually.
> 
> Any questions, comments etc.  Either reply here or post on the forums :)
> 
> 

Awesome; great job. From a cursory look, I like what's going on there, but the things keeping me from turning away from Perl for general scripting purposes are the lack of an eval() and first-class regexes. Still, this looks like an awesome language for scripting within the context of another application, which I guess is the point.

Anyways, congratulations on 1.0!
August 01, 2007
Well done, allways good to see a 1.0 for D.

Jarrett Billingsley schrieb:

> == Describe the API. ==
> 
> - Supports code sandboxing through the use of multiple "contexts", into which libraries can be loaded.  You can create a sandbox by only loading a restricted set of libraries into a context, and then running code in it.
> 
> - Is templated in many places to support IFTI, and converts between native D types and MiniD types in many places as well, in order to avoid lots of tedious explicit types needing to be specified and conversions to be done.
> 
> - Makes it easy to write native functions using the API.  No confusing excessive stack manipulation like with Lua or Squirrel.  No reference counting like with Python.  Just get the values and manipulate them with a program state.
> 
> - Makes it really easy to expose native functions and classes to MiniD through a templated binding library, similar to Pyd.  Can bind free functions, classes, and in classes, constructors (even multiple constructors with the same number of parameters, unlike Pyd), methods, and properties (through a convention, as MiniD itself does not have explicit properties). Even supports binding multiple D classes which are in an inheritance hierarchy, but notably does _not_ yet support MiniD classes then inheriting from those exposed D classes.


Jarret, I miss some API examples. I also can not figure out how DDL fits into the picture.
Bjoern
August 01, 2007
Great work!


Sean
August 01, 2007
"Robert Fraser" <fraserofthenight@gmail.coim> wrote in message news:f8pdsq$1p4l$1@digitalmars.com...
> Awesome; great job. From a cursory look, I like what's going on there, but the things keeping me from turning away from Perl for general scripting purposes are the lack of an eval() and first-class regexes. Still, this looks like an awesome language for scripting within the context of another application, which I guess is the point.
>
> Anyways, congratulations on 1.0!

Oh, but it *does* have eval!  OK, so because of the design of the implementation, it can't access local variables, but it's still there in both the scripting language and the native API.

Thanks for the reply :)


August 01, 2007
"BLS" <nanali@nospam-wanadoo.fr> wrote in message news:f8pgoi$1thd$1@digitalmars.com...
> Jarret, I miss some API examples. I also can not figure out how DDL fits into the picture.

Cause I haven't written them yet XD  This is what I plan to be working on for the next couple of weeks: examples and documentation.

DDL will come in once it's been converted to Tango.  Basically what you can do now is (1) import other MiniD source code modules, (2) import MiniD modules which have been compiled to bytecode and serialized, and (3) expose native functions to MiniD from the host application.  What you can do with DDL is write a library of native functions, compile them into a DDL file, and then import that DDL module at run-time into the MiniD interpreter. This makes it really easy to develop and distribute native-code MiniD libraries (think of the use of DLLs/SOs in Lua and Python).


August 01, 2007
Jarrett Billingsley wrote:
> 
> DDL will come in once it's been converted to Tango.

I think the SVN version of DDL may actually work with Tango.  Eric was doing some work on it not too long ago.


Sean
August 01, 2007
Sean Kelly wrote:
> Jarrett Billingsley wrote:
>>
>> DDL will come in once it's been converted to Tango.
> 
> I think the SVN version of DDL may actually work with Tango.  Eric was doing some work on it not too long ago.
> 
> 
> Sean

It's mostly there, but I'd consider it unstable at this time, since I have yet to fully test things.

-- 
- EricAnderton at yahoo
August 01, 2007
"Pragma" <ericanderton@yahoo.removeme.com> wrote in message news:f8q921$3fh$1@digitalmars.com...
>
> It's mostly there, but I'd consider it unstable at this time, since I have yet to fully test things.

Wheee :D


« First   ‹ Prev
1 2 3