

Mond – A scripting language for C# .NET/Mono - farmatyr
https://github.com/Rohansi/Mond

======
jmartinpetersen
I've been poking aimlessly around at the code and the wiki and I can't seem to
find an answer to the question "why?". What's it trying to do/be?

The inclusion of a virtual machine (to be run on top of the CLR) was somewhat
of a surprise to me, I had expected it would use the CodeDOM.

~~~
Rohansi
I wasn't really satisfied with the existing scripting libraries available for
C#, many just bind to a native implementation or have terrible interfaces. I
wanted something easy to use that would work (almost) everywhere without any
hassle, even if it means performance suffers.

~~~
dsy73
-C#: [http://www.csscript.net](http://www.csscript.net)

-C#: [http://scriptcs.net](http://scriptcs.net)

-Cobra: [http://cobra-language.com](http://cobra-language.com)

-Boo: [http://boo.codehaus.org](http://boo.codehaus.org)

~~~
Rohansi
I'm always a bit skeptical of the libraries that generate IL. One of the
biggest reasons I consider scripting is to support hot swapping, but the CLR
doesn't do a good job with that.

I have used CS-Script before and it's decent. The assemblies it generates are
eligible for garbage collection (if you use CSScript.Evaluator) but it also
has annoying limitations. Everything must be defined before it's used and must
be in one file.

------
eropple
There's a good use case for a system like this, allowing scripting to be used
on platforms without Reflection.Emit (like iOS). But I'm not seeing anything
differentiating about this particular project. Is there a reason to use this
over Jint[1] or Script#[2]?

(I personally use my own gizmo called Exor[3], which does runtime compiling on
desktop platforms and allows me to embed script assets at compile-time for
platforms without Reflection.Emit. YM, of course, MV.)

[1] -
[https://github.com/sebastienros/jint](https://github.com/sebastienros/jint)

[2] -
[https://github.com/nikhilk/scriptsharp](https://github.com/nikhilk/scriptsharp)

[3] - [https://github.com/eropple/Exor](https://github.com/eropple/Exor)

~~~
Rohansi
Jint is nice but it's really slow. Script# looks like it only compiles C# to
JS, not really relevant here.

Exor looks interesting but the CLR doesn't handle assembly reloading very
well. You either have to use AppDomains or dynamic assemblies (which can be
GC'd but have limitations IIRC) to clean up old assemblies.

~~~
eropple
Jint is pokey, but fast enough for most use cases. I went away from it mostly
out of a desire to enforce contracts and static typing. I personally use Exor
as a one-shot loader when the game using it starts, so yeah, you'd have to get
cute with AppDomains if you're worried about reloading. (Last I checked, Mono
didn't really support AppDomains and about 50% of my development is on a Mac,
so I didn't really care).

------
Jakuv2000
Maybe the creator of this software isn't aware, but in some regions the word
"mond" is slang for the mons pubis:
[https://en.wikipedia.org/wiki/Mons_pubis](https://en.wikipedia.org/wiki/Mons_pubis)

~~~
TillE
It's also the German word for "moon". I was expecting yet another Lua
derivative.

~~~
naranha
m.o.n.d. that spells deaf and dumb

------
AndrewDucker
What advantages does this have over PowerShell?

