www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - MiniD dsource project set up

reply "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
Link: http://www.dsource.org/projects/minid

== What is MiniD? ==

MiniD is a statically-typed, object-oriented scripting language based on D 
and designed with D in mind as the host language.  It takes some features 
from other scripting languages as well, such as static closures, generators, 
and coroutines.  One of the main ideas behind making it D-based is an almost 
seamless integration of scripting into the host program, so that native code 
can very easily call script code and vice versa.

== How far along is it? ==

It's mostly just a grammar and some language specs right now; however, 
there's a reference compiler in the works which does the lexical and 
syntactic passes, and has the beginnings of the semantic pass as well.  It 
can be found into the repo.

== Is it open?  Licensing? ==

It's open.  Licensing?  It could be public domain for all I care.  If some 
of you more experienced OSS'ers have some comments on that, or if I should 
use something else (like zlib or MIT license), I'd like to hear it.  In 
fact, if someone wanted to bring it up on the MiniD forum on dsource, that'd 
be great.

The development is also open.  I'd love to hear any ideas and suggestions 
for features and other areas of development.

== Why MiniD? ==

It started as a sort of for-fun project, but eventually developed into 
something of a learning project.  I wanted to see what it was like to design 
and implement a compiler and VM.  Maybe I'll end up with a language that 
people want to use; maybe not.  In any case, it's my idea that perhaps by 
offloading things like typechecking into the compiler, the VM will be 
somewhat faster.  Maybe.  I hope :) 
Jun 25 2006
next sibling parent reply James Dunne <james.jdunne gmail.com> writes:
Jarrett Billingsley wrote:
 Link: http://www.dsource.org/projects/minid
 
 == What is MiniD? ==
 
 MiniD is a statically-typed, object-oriented scripting language based on D 
 and designed with D in mind as the host language.  It takes some features 
 from other scripting languages as well, such as static closures, generators, 
 and coroutines.  One of the main ideas behind making it D-based is an almost 
 seamless integration of scripting into the host program, so that native code 
 can very easily call script code and vice versa.
 
 == How far along is it? ==
 
 It's mostly just a grammar and some language specs right now; however, 
 there's a reference compiler in the works which does the lexical and 
 syntactic passes, and has the beginnings of the semantic pass as well.  It 
 can be found into the repo.
 
 == Is it open?  Licensing? ==
 
 It's open.  Licensing?  It could be public domain for all I care.  If some 
 of you more experienced OSS'ers have some comments on that, or if I should 
 use something else (like zlib or MIT license), I'd like to hear it.  In 
 fact, if someone wanted to bring it up on the MiniD forum on dsource, that'd 
 be great.
 
 The development is also open.  I'd love to hear any ideas and suggestions 
 for features and other areas of development.
 
 == Why MiniD? ==
 
 It started as a sort of for-fun project, but eventually developed into 
 something of a learning project.  I wanted to see what it was like to design 
 and implement a compiler and VM.  Maybe I'll end up with a language that 
 people want to use; maybe not.  In any case, it's my idea that perhaps by 
 offloading things like typechecking into the compiler, the VM will be 
 somewhat faster.  Maybe.  I hope :) 
 
 

A cool project! I'm also developing my own language. A few quick notes after browsing through the docs on Trac: 1) Fix /wiki/LanguageSpec/Lexical section after Tokens, a sentence is broken. 2) With the escape sequences in string literals, how would I go about putting the number one after an ASCII character #1? \11? 3) Good to see the ability to define binary integer literals; they're immensely useful 4) Multiple setter functions allowed for properties (and seem to be required to have at least one) but only one getter function is allowed and is optional? Why is this? 5) Regular assignment on /wiki/LanguageSpec/Expressions: Is it a good idea to treat x = obj.prop = 4; as two separate expressions? You're sort-of violating the general rule to not evaluate the property more than once. Why not have the implementation of the setter functions return the value that was set? 6) Operation assignments: you don't state that you're going to check for the same setter/getter function call signature for a property, you just say that the property must have them both set. 7) So custom defined objects cannot be passed in varargs functions? I would recommend renaming 'def' to 'local', just as it's more aesthetically pleasing to me. Also, why do you have the 'def' keyword as the starter to function parsing in addition to global variable parsing, would you not use a separate keyword 'function' for that? It would be nice to have generics implemented in a scripting language :) -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/MU/S d-pu s:+ a-->? C++++$ UL+++ P--- L+++ !E W-- N++ o? K? w--- O M-- V? PS PE Y+ PGP- t+ 5 X+ !R tv-->!tv b- DI++(+) D++ G e++>e h>--->++ r+++ y+++ ------END GEEK CODE BLOCK------ James Dunne
Jun 26 2006
parent reply "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"James Dunne" <james.jdunne gmail.com> wrote in message 
news:e7p9b3$1cps$1 digitaldaemon.com...

 1) Fix /wiki/LanguageSpec/Lexical section after Tokens, a sentence is 
 broken.

I'd fix it but I can't find any broken sentences. Perhaps you meant the second sentence? Maybe I should put quotes around the "...", since that means the D vararg token.
 2) With the escape sequences in string literals, how would I go about 
 putting the number one after an ASCII character #1? \11?

\0011 - The decimal escapes can only be three characters long, so it will suck up \001, and then the next 1 will be the next character.
 3) Good to see the ability to define binary integer literals; they're 
 immensely useful

I've found them to be as well :)
 4) Multiple setter functions allowed for properties (and seem to be 
 required to have at least one) but only one getter function is allowed and 
 is optional?  Why is this?

Setters are optional, but multiple are allowed. I'm also thinking of enforcing the rule that if there are any setters, at least one must take the same type of the property (so if you have an int property, and you have setters, there must be one that takes an int, but all the rest can be whatever). You can only have one getter because of function overloading - getters are defined as something like "<proptype> __get()", and of course you can't overload based on return value. It's optional in case you need a write-only property (for whatever reason). So you can have read-only properties by only having a getter; write-only by only having setters; and read/write by having both.
 5) Regular assignment on /wiki/LanguageSpec/Expressions:  Is it a good 
 idea to treat x = obj.prop = 4; as two separate expressions?  You're 
 sort-of violating the general rule to not evaluate the property more than 
 once.  Why not have the implementation of the setter functions return the 
 value that was set?

I'm not real fond of that either, and that part might change. I suppose it'd be fine to allow property setters to return values so you can chain property assignments like this, but _personally_ I find assignment chaining to be in _bad taste_ ;) and so might disallow chaining property assignments altogether. But that might be a little too draconian for some people.
 6) Operation assignments: you don't state that you're going to check for 
 the same setter/getter function call signature for a property, you just 
 say that the property must have them both set.

If a writeable property is enforced to have one setter that takes the same type as the property as mentioned above, then this can work.
 7) So custom defined objects cannot be passed in varargs functions?

No, they can - you use the .asObject() member of the vararg and then cast down to your class type. All classes will inherit from Object, like in D (yet to write the class spec).
 I would recommend renaming 'def' to 'local', just as it's more 
 aesthetically pleasing to me.

I tried local, but then that doesn't make sense for global variables. I wanted something short and unambiguous. 'def' seemed to fit the bill, despite being a bit .. reminiscient of Lisp? Oh well, it ended up being Python-esque anyway.
 Also, why do you have the 'def' keyword as the starter to function parsing 
 in addition to global variable parsing, would you not use a separate 
 keyword 'function' for that?

'def' begins all variable and function definitions except for function parameters where it's unambiguous what's expected. I did acually have "function" start function declarations before, but with functions that _returned_ functions, it started getting really funny-looking: function void function() foo() { } I also had some grammar ambiguities when using "function" to begin functions when dealing with function literals. As of now, "function" is _just_ used for the type, and it's nice that way.
 It would be nice to have generics implemented in a scripting language :)

It would be TERRIBLE to have generics in a scripting language ;)
Jun 26 2006
parent reply James Dunne <james.jdunne gmail.com> writes:
Jarrett Billingsley wrote:
 "James Dunne" <james.jdunne gmail.com> wrote in message 
 news:e7p9b3$1cps$1 digitaldaemon.com...
 
 
1) Fix /wiki/LanguageSpec/Lexical section after Tokens, a sentence is 
broken.

I'd fix it but I can't find any broken sentences. Perhaps you meant the second sentence? Maybe I should put quotes around the "...", since that means the D vararg token.

Yeah that was it. It just parsed weird in my brain.
2) With the escape sequences in string literals, how would I go about 
putting the number one after an ASCII character #1? \11?

\0011 - The decimal escapes can only be three characters long, so it will suck up \001, and then the next 1 will be the next character.

I completely forgot about 0 padding. Still, it's weird and wasn't intuitively obvious to me (obviously). ;)
3) Good to see the ability to define binary integer literals; they're 
immensely useful

I've found them to be as well :)
4) Multiple setter functions allowed for properties (and seem to be 
required to have at least one) but only one getter function is allowed and 
is optional?  Why is this?

Setters are optional, but multiple are allowed. I'm also thinking of enforcing the rule that if there are any setters, at least one must take the same type of the property (so if you have an int property, and you have setters, there must be one that takes an int, but all the rest can be whatever). You can only have one getter because of function overloading - getters are defined as something like "<proptype> __get()", and of course you can't overload based on return value. It's optional in case you need a write-only property (for whatever reason). So you can have read-only properties by only having a getter; write-only by only having setters; and read/write by having both.

Okay, I see now. I was thinking in terms of indexors as properties, like myobj.a[3] = 4; and a = myobj.b[6,7], etc.
5) Regular assignment on /wiki/LanguageSpec/Expressions:  Is it a good 
idea to treat x = obj.prop = 4; as two separate expressions?  You're 
sort-of violating the general rule to not evaluate the property more than 
once.  Why not have the implementation of the setter functions return the 
value that was set?

I'm not real fond of that either, and that part might change. I suppose it'd be fine to allow property setters to return values so you can chain property assignments like this, but _personally_ I find assignment chaining to be in _bad taste_ ;) and so might disallow chaining property assignments altogether. But that might be a little too draconian for some people.

Yeah I also find myself avoiding chained assignments, but I don't know why. I guess I like to limit the horizontal span of my code. It's much easier to scroll vertically (go mouse-wheel!) than it is to scroll horizontally. :)
6) Operation assignments: you don't state that you're going to check for 
the same setter/getter function call signature for a property, you just 
say that the property must have them both set.

If a writeable property is enforced to have one setter that takes the same type as the property as mentioned above, then this can work.
7) So custom defined objects cannot be passed in varargs functions?

No, they can - you use the .asObject() member of the vararg and then cast down to your class type. All classes will inherit from Object, like in D (yet to write the class spec).
I would recommend renaming 'def' to 'local', just as it's more 
aesthetically pleasing to me.

I tried local, but then that doesn't make sense for global variables. I wanted something short and unambiguous. 'def' seemed to fit the bill, despite being a bit .. reminiscient of Lisp? Oh well, it ended up being Python-esque anyway.

Oh yeah, the globals - I always forget about the globals... They're local to the global scope, yes?
Also, why do you have the 'def' keyword as the starter to function parsing 
in addition to global variable parsing, would you not use a separate 
keyword 'function' for that?

'def' begins all variable and function definitions except for function parameters where it's unambiguous what's expected. I did acually have "function" start function declarations before, but with functions that _returned_ functions, it started getting really funny-looking: function void function() foo() { } I also had some grammar ambiguities when using "function" to begin functions when dealing with function literals. As of now, "function" is _just_ used for the type, and it's nice that way.

How about switching to a Pascal-inspired declaration syntax in combination with the 'function' keyword: function max(x,y : int) : int { return (x < y) ? y : x; } function hello(a, b : int) : function(c,d : int) : int { return max; } Reads nicely left-to-right.
It would be nice to have generics implemented in a scripting language :)

It would be TERRIBLE to have generics in a scripting language ;)

LOL - you don't get more disagreeable than that. Overall, I like your idea! A D-looking script language that's easily embeddable in a D host program really makes it easy on the developer. Just don't put in too many 'gotchas' that would deviate far from the original D. -- Regards, James Dunne
Jun 26 2006
parent "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"James Dunne" <james.jdunne gmail.com> wrote in message 
news:e7qdqp$k3m$1 digitaldaemon.com...

 Okay, I see now.  I was thinking in terms of indexors as properties, like 
 myobj.a[3] = 4; and a = myobj.b[6,7], etc.

I was originally toying with the idea of namespaces for properties which would hold special functions like opSet and opGet, and then could also hold things like opIndex[Assign] and opSlice[Assign]. That started getting a little complex, but I suppose some special functions could be allowed in the property blocks, such as property int x { def int opIndex(int index) { return mArray[index]; } def int opIndexAssign(int value, int index) { return mArray[index] = value; } } ... def A a = new A; a.x[5] = 4; io.writefln(a.x[5]); It could work. It's something that I always wanted in D - the ability to easily wrap an array in a class, allowing access to the members but to nothing else (so the user couldn't resize, sort, delete etc. the array).
 Yeah I also find myself avoiding chained assignments, but I don't know 
 why.  I guess I like to limit the horizontal span of my code.  It's much 
 easier to scroll vertically (go mouse-wheel!) than it is to scroll 
 horizontally. :)

I always follow the mantra of one statement per line. That's partly why you can't have multiple variable declarations on one line, and also why there's no postfix ++ and -- (since IMO they cause nothing but confusion).
 Oh yeah, the globals - I always forget about the globals...  They're local 
 to the global scope, yes?

Mmmmmm..... maybe. ;)
 How about switching to a Pascal-inspired declaration syntax in combination 
 with the 'function' keyword:

 function max(x,y : int) : int {
 return (x < y) ? y : x;
 }

 function hello(a, b : int) : function(c,d : int) : int {
 return max;
 }

 Reads nicely left-to-right.

Huuhh.. I've seen that kind of mix of C and Pascal before, and I'm not entirely fond of it. It does certainly make parsing declarations much easier.
 LOL - you don't get more disagreeable than that.

Yeah, templates scare me a bit. Especially something as complex as D's templates. Perhaps very simple generics could work (basically just allow templated classes / functions, with simple specialization), but that'd be something for MiniD 2.0 ;)
 Overall, I like your idea!  A D-looking script language that's easily 
 embeddable in a D host program really makes it easy on the developer. Just 
 don't put in too many 'gotchas' that would deviate far from the original 
 D.

I'll try not to. Most of the things I'm changing are simply removing more complex features, while trying to keep the rest as close as possible.
Jun 27 2006
prev sibling next sibling parent reply Rmy Mouza <ray.jay.ay.moueza DoNtSpAm.gmail.com> writes:
In article <e7ngne$a46$1 digitaldaemon.com>, Jarrett Billingsley says...
Link: http://www.dsource.org/projects/minid

== What is MiniD? ==

MiniD is a statically-typed, object-oriented scripting language based on D 
and designed with D in mind as the host language.  It takes some features 
from other scripting languages as well, such as static closures, generators, 
and coroutines.  One of the main ideas behind making it D-based is an almost 
seamless integration of scripting into the host program, so that native code 
can very easily call script code and vice versa.

== How far along is it? ==

It's mostly just a grammar and some language specs right now; however, 
there's a reference compiler in the works which does the lexical and 
syntactic passes, and has the beginnings of the semantic pass as well.  It 
can be found into the repo.

== Is it open?  Licensing? ==

It's open.  Licensing?  It could be public domain for all I care.  If some 
of you more experienced OSS'ers have some comments on that, or if I should 
use something else (like zlib or MIT license), I'd like to hear it.  In 
fact, if someone wanted to bring it up on the MiniD forum on dsource, that'd 
be great.

The development is also open.  I'd love to hear any ideas and suggestions 
for features and other areas of development.

== Why MiniD? ==

It started as a sort of for-fun project, but eventually developed into 
something of a learning project.  I wanted to see what it was like to design 
and implement a compiler and VM.  Maybe I'll end up with a language that 
people want to use; maybe not.  In any case, it's my idea that perhaps by 
offloading things like typechecking into the compiler, the VM will be 
somewhat faster.  Maybe.  I hope :) 

Sorry, I don't want to be offensive, but I don't see lots of "interest" of doing a scripting language so close to D, althought without adding any "new" stuff that are typical of dynamic language. The way I see it : D has lot of strength and weaknesses. What about doing a dynamic language that would make a kind of balance by supporting features that would releave D where it kind of fails ? From what I have seen, this is not what MiniD is planning to do. And maybe it is not what you intended to do. First, I would either leave the strongly typing system for something more dynamic ( more like scripting language ), or keep it strong but would make much more type inference, going beyond what D is doing, something looking like Nemerle. Second, I would implement some symbolic stuff or some kind of reflection to manipulate the type system or make something like meta object protocol to be able to programatically transform the MiniD programs. This could allow for aspect oriented stuffs and more. Actually, I think that I am too demanding with a for-fun project. Maybe I should keep quiet and implement my own Pythonish/Smalltalkish language in D. Anyway, D is a high level programming language, with features closed to dynamic languages and high performance. I think it's the language of choice to implement a scripting language. The more scripting language implemention we'll have, the best we'll be able to prove it. MiniD is a good idea. Good luck !
Jun 26 2006
next sibling parent reply =?ISO-8859-1?Q?Jari-Matti_M=E4kel=E4?= <jmjmak utu.fi.invalid> writes:
Rmy Mouza wrote:
 Actually, I think that I am too demanding with a for-fun project. Maybe I
should
 keep quiet and implement my own Pythonish/Smalltalkish language in D.

I guess there's not much use to make yet another scripting language unless it's a for-fun project. You might want to try Ruby. It has many features in common with D. I'm not sure if someone has already made an attempt to implement a Ruby interpreter in D.
Jun 26 2006
next sibling parent reply Rmy Mouza <Rmy_member pathlink.com> writes:
In article <e7pe35$1ote$1 digitaldaemon.com>,
=?ISO-8859-1?Q?Jari-Matti_M=E4kel=E4?= says...
Rmy Mouza wrote:
 Actually, I think that I am too demanding with a for-fun project. Maybe I
should
 keep quiet and implement my own Pythonish/Smalltalkish language in D.

I guess there's not much use to make yet another scripting language unless it's a for-fun project. You might want to try Ruby. It has many features in common with D. I'm not sure if someone has already made an attempt to implement a Ruby interpreter in D.

I've tried to learn Ruby several times, but I did not manage to get really interested and keep going mainly because it has all the good things I like in Python ( and even code blocks la Smalltalk ) but seems to have a little less clear syntax. It made me stick to Python. And D of course. As I know Python more than Ruby, maybe I should look forward using PyPy to implement a Python interpreter in D. The problem also is that I want to do too much things... and don't have time to do them all.
Jun 26 2006
parent =?ISO-8859-1?Q?Jari-Matti_M=E4kel=E4?= <jmjmak utu.fi.invalid> writes:
Rmy Mouza wrote:
 I've tried to learn Ruby several times, but I did not manage to get really
 interested and keep going mainly because it has all the good things I like in
 Python ( and even code blocks  la Smalltalk ) but seems to have a little less
 clear syntax. It made me stick to Python. And D of course.

I myself am starting to like Ruby - pure OOP :) Reminds me of Smalltalk, Perl and D - in a good way.
 As I know Python more than Ruby, maybe I should look forward using PyPy to
 implement a Python interpreter in D.

There's already PyD, http://dsource.org/projects/pyd. But it's only a wrapper around existing stuff. Perhaps converting existing code would be much easier from projects like Jython / IronPython since they're already syntactically almost like D.
Jun 26 2006
prev sibling parent "Kashia Buch" <kashia.buch web.de> writes:
------------CYdtspzW7hEWNvLXPRxSOq
Content-Type: text/plain; format=flowed; delsp=yes; charset=iso-8859-15
Content-Transfer-Encoding: 7bit

Hi,

 I guess there's not much use to make yet another scripting language
 unless it's a for-fun project. You might want to try Ruby. It has many
 features in common with D. I'm not sure if someone has already made an
 attempt to implement a Ruby interpreter in D.

Not exactly interpreter, but a bridge from myself: untested beyond myself, might require special ares/phobos mix, not for the faint of heart. For support, you can ask me, don't expect too much though. License is unspecified. Do with it what you want (it probably won't work for you anyway, if it does, great). Kash -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ ------------CYdtspzW7hEWNvLXPRxSOq Content-Disposition: attachment; filename=rbDbridge.tar.bz2 Content-Type: application/bzip2; name=rbDbridge.tar.bz2 Content-Transfer-Encoding: Base64 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 H/xdyRThQkFO/mcQ ------------CYdtspzW7hEWNvLXPRxSOq--
Jun 27 2006
prev sibling parent "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"Rmy Mouza" <ray.jay.ay.moueza DoNtSpAm.gmail.com> wrote in message 
news:e7p9ui$1eoh$1 digitaldaemon.com...

 Sorry, I don't want to be offensive, but I don't see lots of "interest" of 
 doing
 a scripting language so close to D, althought without adding any "new" 
 stuff
 that are typical of dynamic language.

 The way I see it : D has lot of strength and weaknesses. What about doing 
 a
 dynamic language that would make a kind of balance by supporting features 
 that
 would releave D where it kind of fails ? From what I have seen, this is 
 not what
 MiniD is planning to do. And maybe it is not what you intended to do.

You're absolutely right, and as I go along, MiniD might evolve into something far different from what it is now.
 First, I would either leave the strongly typing system for something more
 dynamic ( more like scripting language ), or keep it strong but would make 
 much
 more type inference, going beyond what D is doing, something looking like
 Nemerle.

A type-inferred language would be very interesting to write. Though I'd kind of like to stick to some form of static typing, if nothing else as a proof-of-concept that a statically-typed scripting language can be higher-performance than dynamically typed ones.
 Second, I would implement some symbolic stuff or some kind of reflection 
 to
 manipulate the type system or make something like meta object protocol to 
 be
 able to programatically transform the MiniD programs. This could allow for
 aspect oriented stuffs and more.

Bizarre!
 Actually, I think that I am too demanding with a for-fun project. Maybe I 
 should
 keep quiet and implement my own Pythonish/Smalltalkish language in D.

Hehe :) I'd like to see it.
 Anyway, D is a high level programming language, with features closed to 
 dynamic
 languages and high performance. I think it's the language of choice to 
 implement
 a scripting language. The more scripting language implemention we'll have, 
 the
 best we'll be able to prove it.

 MiniD is a good idea.
 Good luck !

You too!
Jun 26 2006
prev sibling next sibling parent reply clayasaurus <clayasaurus gmail.com> writes:
Jarrett Billingsley wrote:
 Link: http://www.dsource.org/projects/minid
 
 == What is MiniD? ==
 
 MiniD is a statically-typed, object-oriented scripting language based on D 
 and designed with D in mind as the host language.  It takes some features 
 from other scripting languages as well, such as static closures, generators, 
 and coroutines.  One of the main ideas behind making it D-based is an almost 
 seamless integration of scripting into the host program, so that native code 
 can very easily call script code and vice versa.
 
 == How far along is it? ==
 
 It's mostly just a grammar and some language specs right now; however, 
 there's a reference compiler in the works which does the lexical and 
 syntactic passes, and has the beginnings of the semantic pass as well.  It 
 can be found into the repo.
 
 == Is it open?  Licensing? ==
 
 It's open.  Licensing?  It could be public domain for all I care.  If some 
 of you more experienced OSS'ers have some comments on that, or if I should 
 use something else (like zlib or MIT license), I'd like to hear it.  In 
 fact, if someone wanted to bring it up on the MiniD forum on dsource, that'd 
 be great.
 
 The development is also open.  I'd love to hear any ideas and suggestions 
 for features and other areas of development.
 
 == Why MiniD? ==
 
 It started as a sort of for-fun project, but eventually developed into 
 something of a learning project.  I wanted to see what it was like to design 
 and implement a compiler and VM.  Maybe I'll end up with a language that 
 people want to use; maybe not.  In any case, it's my idea that perhaps by 
 offloading things like typechecking into the compiler, the VM will be 
 somewhat faster.  Maybe.  I hope :) 
 
 

If you use zlib/png license, then you can freely borrow code from the Squirrel project (with acknowledgment of course), and commercial applications can freely use it. :)
Jun 26 2006
parent reply "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"clayasaurus" <clayasaurus gmail.com> wrote in message 
news:e7pa43$1f94$1 digitaldaemon.com...

 If you use zlib/png license, then you can freely borrow code from the 
 Squirrel project (with acknowledgment of course), and commercial 
 applications can freely use it. :)

Cool, thanks for the tip. I'm not real familiar with all the licensing that usually goes along with OSS.
Jun 26 2006
parent Chris Nicholson-Sauls <ibisbasenji gmail.com> writes:
Jarrett Billingsley wrote:
 "clayasaurus" <clayasaurus gmail.com> wrote in message 
 news:e7pa43$1f94$1 digitaldaemon.com...
 
 
If you use zlib/png license, then you can freely borrow code from the 
Squirrel project (with acknowledgment of course), and commercial 
applications can freely use it. :)

Cool, thanks for the tip. I'm not real familiar with all the licensing that usually goes along with OSS.

I've been using the Artistic License 2.0 for some things, and rather like it. http://dev.perl.org/perl6/rfc/346.html The zlib/png license is good too, however. Personal taste will probably decide it. On a side note, I rather like the look of the language, and do appreciate a very D-ish feel. I might just try to use it in some projects in the future once you get a referance implementation together. -- Chris Nicholson-Sauls
Jun 26 2006
prev sibling next sibling parent reply "Boris Wang" <nano.kago hotmail.com> writes:
Can we make the whole D running interpreted or something just-in-time 
compile?

"Jarrett Billingsley" <kb3ctd2 yahoo.com>
дϢ:e7ngne$a46$1 digitaldaemon.com...
 Link: http://www.dsource.org/projects/minid

 == What is MiniD? ==

 MiniD is a statically-typed, object-oriented scripting language based on D 
 and designed with D in mind as the host language.  It takes some features 
 from other scripting languages as well, such as static closures, 
 generators, and coroutines.  One of the main ideas behind making it 
 D-based is an almost seamless integration of scripting into the host 
 program, so that native code can very easily call script code and vice 
 versa.

 == How far along is it? ==

 It's mostly just a grammar and some language specs right now; however, 
 there's a reference compiler in the works which does the lexical and 
 syntactic passes, and has the beginnings of the semantic pass as well.  It 
 can be found into the repo.

 == Is it open?  Licensing? ==

 It's open.  Licensing?  It could be public domain for all I care.  If some 
 of you more experienced OSS'ers have some comments on that, or if I should 
 use something else (like zlib or MIT license), I'd like to hear it.  In 
 fact, if someone wanted to bring it up on the MiniD forum on dsource, 
 that'd be great.

 The development is also open.  I'd love to hear any ideas and suggestions 
 for features and other areas of development.

 == Why MiniD? ==

 It started as a sort of for-fun project, but eventually developed into 
 something of a learning project.  I wanted to see what it was like to 
 design and implement a compiler and VM.  Maybe I'll end up with a language 
 that people want to use; maybe not.  In any case, it's my idea that 
 perhaps by offloading things like typechecking into the compiler, the VM 
 will be somewhat faster.  Maybe.  I hope :)

 

Jun 26 2006
parent reply "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"Boris Wang" <nano.kago hotmail.com> wrote in message 
news:e7q6kq$aq7$1 digitaldaemon.com...

 Can we make the whole D running interpreted or something just-in-time 
 compile?

MiniD is not a scriptable D; it's just a scripting language that looks like D. You'll have a native host program, most likely written in D, which will load MiniD code (either source or compiled into bytecode) and run it. JIT compiling is a little over my head :S
Jun 26 2006
next sibling parent reply James Dunne <james.jdunne gmail.com> writes:
Jarrett Billingsley wrote:
 "Boris Wang" <nano.kago hotmail.com> wrote in message 
 news:e7q6kq$aq7$1 digitaldaemon.com...
 
 
Can we make the whole D running interpreted or something just-in-time 
compile?

[snip] ... JIT compiling is a little over my head :S

With that attitude it always will be... -- Regards, James Dunne
Jun 26 2006
parent "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"James Dunne" <james.jdunne gmail.com> wrote in message 
news:e7qdv5$k3m$2 digitaldaemon.com...

 With that attitude it always will be...

Oh foo!
Jun 27 2006
prev sibling parent reply Rmy Mouza <ray.jay.ay.moueza DoNtSpAm.gmail.com> writes:
In article <e7q97v$e04$1 digitaldaemon.com>, Jarrett Billingsley says...
"Boris Wang" <nano.kago hotmail.com> wrote in message 
news:e7q6kq$aq7$1 digitaldaemon.com...

 Can we make the whole D running interpreted or something just-in-time 
 compile?

MiniD is not a scriptable D; it's just a scripting language that looks like D. You'll have a native host program, most likely written in D, which will load MiniD code (either source or compiled into bytecode) and run it. JIT compiling is a little over my head :S

A few years ago, when I was dreaming to make my own little programming language, I've seen the libjit library : http://www.southern-storm.com.au/libjit.html (I am still dreaming now, but I have more ideas of how to do it.) I know very little about it. There is a C interface and it aims to be portable. Native code generation is not the only way to optimize a bytecode program : I've heard about some Smalltalk variant that was not using the 256 bytes possible to code the bytecode instructions. The remaining bytes where used to create macro instructions. The bytecode was first analysed, the bytecode sequences that was appearing frequently where detected and kind of precompiled into a macro instruction wich number was placed in the available bytes. Then, the bytecode was reduced : the sequences where replaced with their corresponding macro numbers. The program sized was shorten and the macros allowed to reduce the amount of lookup and stack frame to be used and made the program more efficient/fast.
Jun 27 2006
parent "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"Rmy Mouza" <ray.jay.ay.moueza DoNtSpAm.gmail.com> wrote in message 
news:e7ruk6$2o5n$1 digitaldaemon.com...

 A few years ago, when I was dreaming to make my own little programming 
 language,
 I've seen the libjit library :
 http://www.southern-storm.com.au/libjit.html

 (I am still dreaming now, but I have more ideas of how to do it.)
 I know very little about it. There is a C interface and it aims to be 
 portable.

Wow; that library looks amazing. I'll definitely keep it in mind! It certainly doesn't look very difficult to use.
Jun 27 2006
prev sibling parent clayasaurus <clayasaurus gmail.com> writes:
Just want to say that this project looks good in the "Scripting language 
that can easily be used by D users" category. For this reason I favor 
MiniD over a native Squirrel port. Goodluck!
~ Clay

Jarrett Billingsley wrote:
 Link: http://www.dsource.org/projects/minid
 
 == What is MiniD? ==
 
 MiniD is a statically-typed, object-oriented scripting language based on D 
 and designed with D in mind as the host language.  It takes some features 
 from other scripting languages as well, such as static closures, generators, 
 and coroutines.  One of the main ideas behind making it D-based is an almost 
 seamless integration of scripting into the host program, so that native code 
 can very easily call script code and vice versa.
 
 == How far along is it? ==
 
 It's mostly just a grammar and some language specs right now; however, 
 there's a reference compiler in the works which does the lexical and 
 syntactic passes, and has the beginnings of the semantic pass as well.  It 
 can be found into the repo.
 
 == Is it open?  Licensing? ==
 
 It's open.  Licensing?  It could be public domain for all I care.  If some 
 of you more experienced OSS'ers have some comments on that, or if I should 
 use something else (like zlib or MIT license), I'd like to hear it.  In 
 fact, if someone wanted to bring it up on the MiniD forum on dsource, that'd 
 be great.
 
 The development is also open.  I'd love to hear any ideas and suggestions 
 for features and other areas of development.
 
 == Why MiniD? ==
 
 It started as a sort of for-fun project, but eventually developed into 
 something of a learning project.  I wanted to see what it was like to design 
 and implement a compiler and VM.  Maybe I'll end up with a language that 
 people want to use; maybe not.  In any case, it's my idea that perhaps by 
 offloading things like typechecking into the compiler, the VM will be 
 somewhat faster.  Maybe.  I hope :) 
 
 

Jun 28 2006