SLThree 0.8.0
See the version list below for details.
dotnet add package SLThree --version 0.8.0
NuGet\Install-Package SLThree -Version 0.8.0
<PackageReference Include="SLThree" Version="0.8.0" />
paket add SLThree --version 0.8.0
#r "nuget: SLThree, 0.8.0"
// Install SLThree as a Cake Addin #addin nuget:?package=SLThree&version=0.8.0 // Install SLThree as a Cake Tool #tool nuget:?package=SLThree&version=0.8.0
SLThree
A simple and easily embedded programming language for the .NET platform. Dynamic typing, lightweight reflection, this language is convenient for describing data and behavior.
For more information about syntax: slt-lang.github.io
Embedding
Code example for C#:
using System;
using SLThree;
using SLThree.Embedding;
namespace TestSLThree
{
public class Program
{
public class TC
{
public int x, y;
public Method sum;
public object Sum() => sum.Invoke(x, y);
}
public class TC2
{
public Func<int, int, int> sum2;
}
static void Main(string[] args)
{
//Context.ReturnedValue method
Console.WriteLine("return 2 + 2 * 2;".RunScript().ReturnedValue);
//Uwrapping method
var tc = "x = 3; y = 5; sum = (a, b) => a + b;".RunScript().Unwrap<TC>();
Console.WriteLine(tc.Sum());
//[Experimental] Compilation:
var tc2 = "sum2 = (new using jit).opt(sum2 = (i32 x, i32 y): i32 => x + y, self).CreateDelegate(@System.Func<i32, i32, i32>);".RunScript().Unwrap<TC2>();
Console.WriteLine(tc2.sum2(35, 65));
}
}
}
Download
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
.NET Framework | net471 is compatible. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
0.9.0-alpha.700 | 50 | 10/5/2024 | |
0.9.0-alpha.580 | 52 | 9/1/2024 | |
0.9.0-alpha.555 | 82 | 8/18/2024 | |
0.9.0-alpha.484 | 64 | 8/15/2024 | |
0.9.0-alpha.411 | 51 | 8/8/2024 | |
0.9.0-alpha.333 | 42 | 8/4/2024 | |
0.9.0-alpha.308 | 41 | 8/2/2024 | |
0.9.0-alpha.247 | 55 | 7/31/2024 | |
0.9.0-alpha.209 | 42 | 7/31/2024 | |
0.9.0-alpha.186 | 49 | 7/30/2024 | |
0.9.0-alpha.149 | 42 | 7/29/2024 | |
0.9.0-alpha.115 | 51 | 7/28/2024 | |
0.9.0-alpha.68 | 59 | 6/21/2024 | |
0.9.0-alpha.30 | 57 | 6/18/2024 | |
0.8.1 | 119 | 6/22/2024 | |
0.8.0 | 115 | 6/21/2024 | |
0.8.0-rc.112 | 60 | 6/20/2024 | |
0.8.0-rc.45 | 69 | 6/19/2024 | |
0.8.0-rc.0 | 72 | 6/18/2024 | |
0.8.0-beta.0 | 63 | 6/13/2024 | |
0.8.0-alpha.234 | 63 | 6/12/2024 | |
0.8.0-alpha.208 | 76 | 6/9/2024 | |
0.8.0-alpha.112 | 68 | 6/9/2024 | |
0.8.0-alpha.67 | 72 | 6/8/2024 | |
0.8.0-alpha.48 | 63 | 6/8/2024 | |
0.8.0-alpha.10 | 67 | 6/8/2024 | |
0.7.1.2989 | 118 | 6/1/2024 | |
0.7.0.2988 | 146 | 4/24/2024 | |
0.6.0 | 144 | 1/22/2024 | |
0.5.2.1 | 178 | 12/10/2023 |
------ 0.8.0 Binding&Naming Update ------ [21.06.24]
Language:
- New method definition syntax
`[modifs][Name][<T>](args) {...}`
`[modifs][Name][<T>](args) => value`
- You can now implements contexts with ":" in the following cases:
- New initializers: // [] - optional
`new T [Name][: Ancestors][{...}]`
- New context creators:
`context [Name][: Ancestors] {...}`
`new context [Name][: Ancestors]`
- Statement-like notation (without `;`) for expressions with body:
condition, match, context, new, methods
- Constructor method that creates new contexts
`context TBase { constructor = (f) => this.f = f; };`
`T1 = TBase(5); T2 = TBase(10);`
- The right side of the nested context initializer
assignations now always refers to the self context
`x = 1; context A { context B { x = x; }}`
- Parent keyword in constructed contexts
`T1.parent == TBase;`
- Abstract methods (withoud body)
- Static expression (will be executed only once) `static x`
- Condition statement is now expression
- Using statement is now expression
- Strong method binding
- Changed context syntax:
`new context Name: T {...}` -> `new T Name {...}`
`new context: T {...}` -> `new T {...}`
`new context Name: T` -> `new T Name`
`new context: T` -> `new T`
`new context Name {...}` -> `context Name {...}`
`new context {...}` -> `context {...}`
Optimization:
- Executing method performance has been increased by ~10%
- Wrappers refactoring, minumum 3x faster wrapping
minimum 20x faster unwrapping
Bugfixes:
- Fixed object invokation (#125)