S# is a weakly-typed dynamic language and runtime infrastructure to make your applications extendable, customizable and highly flexible. It allows introducing expressions and large code blocks evaluation within your applications in the similar way Microsoft Office deals with VBScript, gives you possibilities providing rich formula evaluation capabilities like it can be seen in MS Excel and other office applications.
The key principles of S# are: simplicity, efficiency, intuitive. The S# runtime has been designed to be easily hosted by applications. Minimum script execution scenario requires two lines of code! The important part of S# is its well-defined extendable runtime engine together with the application programming interface that allows full bi-directional communication between script and application code. In particular it is easy to extend S# by embedding external functions and functional objects, shared static or dynamic variables, operator handling and type filters from the host application. Moreover the execution semantics of some language constructs has extensibility mechanisms available externally. This enables developers to create user-friendly executable business/domain specific languages on S# basis.
S# can work in single-expression mode in order to execute string expressions to values. This is especially helpful when application should allow users executing only light-weight portions of the functionality. S# is a pure .NET interpreted language completely written in C#.
Currently S# is compatible and runs on top of the following platforms:
- Microsoft .NET 4
- Microsoft .NET 3.5 (SP1)
- Microsoft Silverlight > 3
- Microsoft .NET Compact Framework
- Microsoft XNA Framework
- MONO
This means that S# runtime can be hosted by applications based on .NET like Console, Windows Forms, ASP.NET, Silverlight 2 and 3, Windows Presentation Foundation (WPF), XNA (both PC and XBox scenarios) and MONO (Linux).
With respect to the DLR and languages like IronPython, S# is:
1. Designed to be easily embedded into applications (several lines of code required to evaluate script);
2. Highly extensible grammar and language (new functions, constants, variables can be added easily);
3. Rich and controlled communication between script and application code in both directions;
4. Sits on the top of .NET, full support for interaction with native .NET code;
5. Works in single-expression mode when executing string expressions to values;
6. No code emitting, CodeDom or background compilation, 100% interpreted language (own Virtual Machine and Debugging is in progress);
7. Totally in-memory execution, does not require temp files, local system access, etc;
8. C#-like language is designed to be familiar for .NET and Java developers; easy to study for non-developer users;
9. Various of platforms are supported (.NET/.NETCF/Mono; WinForms, ASP.NET, WPF, Silverlight, XNA);
10. Fully remotable (expressions and scripts can be sent across the wire and executed on a remote machine);
11. Weakly-typed as IronPython/IronRuby for .NET
S# was originally created by Petro Protsyk and subsequently adapted and improved by Denis Vuyka and Francois Vanderseypen.