Skip to content

A Pure C# IL Runner,Run DLL as a Script.直接解析执行IL的脚本引擎

Notifications You must be signed in to change notification settings

lightszero/LSharp

Repository files navigation

A Pure C# IL Runner,Run DLL as a Script.直接解析执行IL的脚本引擎
	L#是FB引擎系列的一部分
	欢迎访问FB引擎主站http://www.FBact.com
	欢迎加入讨论QQ群:223823428
	用途,Unity3D热更(包括IOS平台)等
	Beta阶段,有一定动手能力的小伙伴,已经可以将它用于实战
	更新日志:
2016-03-18 V0.50.1Beta
	修正一处bool成员变量赋值问题
2016-03-04 V0.5Beta
	发现 VBox 复用机制写的有坑,重构了这个部分,极大的优化了栈上计算GC

2015-11-15 V0.48.1Beta
	vs2015 静态数组初始化的代码也不太一样
2015-11-15 V0.48Beta
	发现vs2015的编译结果不太一样,开始处理
	发现vs2015 !=null 的判断用的是gt指令,已处理

2015-04-14 V0.46Beta
	修改unity5 环境下Unittest 到il2cpp绝大部分通过,不通过的要改写绕过
2015-04-11 V0.45Beta
	同步unity unittest代码,unity5 环境下 unittest全部通过
	https://github.com/lightszero/LSharpUnity
2015-04-02 V0.44Beta
	调整了一下ThreadContext机制,每个线程只需要new一次,new的同时设为活动,多new会有个警告log
	修复了几处bug
2015-03-30 V0.43Beta
	修正 bool[] init
	修正 box on convert
2015-03-19 V0.42.7Beta
	修正a[1]++ 这种计算的Bug
2015-03-16 V0.42.6Beta
	修正dup指令的实现bug,导致i++处理顺序出错
2015-03-13 V0.42.5Beta
	修正switch case 偶尔会插入线程修饰不认识的问题
2015-03-13 V0.42.4Beta
	修正char数组的问题
2015-03-09 V0.42.3Beta
	修正bool数组的问题
2015-03-09 V0.42.2Beta
	修正修改函数参数的问题
2015-03-07 V0.42.1Beta
	修正了一处ulong传参转换问题
2015-02-27 V0.42Beta
	修正了一处搜索缺陷,查找LinkedList查找失败
2015-02-16 V0.41Beta
	增加了Mdb的支持,通过反编译MonoDevelop中的mono.cecil.mdb实现
2015-02-13 V0.40.1Beta
	修复脚本中定义的enum 作为参数时的问题
2015-02-05 V0.40Beta
	之前一直插dll,在unity下用的不顺畅,终于排查掉了这个问题,现在可以直接插入源码了
2015-02-02 V0.39.7Beta
	修正了调用函数使用enum参数的问题
2015-01-30 V0.39.6Beta
	修正了数值数组初始化的问题
2015-01-30 V0.39.5Beta
	修正了脚本定义struct
	修正了使用 Type作为参数的函数调用问题
2015-01-28 V0.39.4.1Beta
2015-01-28 V0.39.4Beta
	修改了一小批bug
2015-01-28 V0.39.3Beta
	修改一处参数bug
2015-01-28 V0.39.2Beta
	修改了一些继承检查,有充分的警告
2015-01-27 V0.39.1Beta
	修改了数组取值的一点问题
	时隔5天才发现新的Bug,
	正式作为Beta版。
2015-01-22 V0.39PreBeta
	这几天帮助一个朋友进行了C#Light项目迁移L#的VIP服务(玩笑,只是他集中的发现了不少bug)
	L#的稳定性也得到了极大的增强
	将版本提升到PreBeta.
2015-01-21 V0.38.3Alpha
	修正一处参数传数值问题
2015-01-21 V0.38.2Alpha
	修正一处模板类型查找的问题
2015-01-21 V0.38.1Alpha
	修正一处参数的bug
2015-01-21 V0.38Alpha
	进行了一轮优化
2015-01-21 V0.37Alpha
	构造函数数值类型转换修复
2015-01-21 V0.36.9Alpha
	脚本内置类型数组修复
2015-01-21 V0.36.8Alpha
	参数检查顺序反了,严重bug,两个参数以上的call,不会检查类型了。
	已修复
2015-01-21 V0.36.7Alpha
	修复brfalse语句,if不命中时偶有问题
2015-01-19 V0.36.6Alpha
	修改了脚本对脚本调用传参的一处bug
2015-01-18 V0.36.5Alpha
	修改了一些委托相关的bug
2015-01-18 V0.36.4Alpha
	修改了一些在u3d环境的问题
2015-01-17 V0.36.3Alpha
	修改了一下MethodParamList的接口,防止滥用
	不允许再修改MethodParamList的内容
2015-01-17 V0.36.2Alpha
	Test01增加一个CrossBind的使用例子
2015-01-17 V0.36.1Alpha
    数组长度没实现,补上
2015-01-16 V0.36Alpha
    修复了一处直接调用函数bool传参的问题
	增加了用反射加载执行和用L#CLR加载执行的快速切换方式,见例子Test01
	增加了一个autoLogDump的参数
	 object IMethod::Invoke(ThreadContext context, object _this, object[] _params, bool bVisual,bool autoLogDump);
	脚本委托默认打开此参数
	打开此参数时,脚本内异常堆栈自动通过ILogger.LogError 输出
2015-01-16 V0.35.2Alpha
	脚本继承脚本时,没有区分虚实调用,导致脚本的base.XX()实际上调用的是this.XX(),已修复。
2015-01-15 V0.35.1Alpha
	给成员变量赋内部值类型时可能发生转换,已修复。
2015-01-14 V0.35Alpha
	Unity_HelloWorld 在WP运行成功
	调整了一个ForUnity目录,里面放基本的支持库
2015-01-14 V0.34Alpha
	Unity_HelloWorld 在IOS运行成功
2015-01-13 V0.33Alpha
	增加Dump机制
	Try catch 脚本执行入口,catch以后,调用
	string CLRSharp.ThreadContext.activeContext.Dump()
	可以Dump出脚本错误堆栈,这个函数完全可以外部实现
	可参考此函数自行Dump
2015-01-13 V0.32Alpha
	支持了CrossBind,让脚本可以通过绑定继承程序类型
	目前实现了yield,就是通过这种方式实现的
	env构造时就执行了这样两句
		RegCrossBind(new CrossBind_IEnumerable());
		RegCrossBind(new CrossBind_IEnumerator());
	这样就可以让脚本继承IEnumerable 和 IEnumerator
	也就是迭代器的基础

2015-01-13 V0.31.5Alpha
	处理了脚本继承脚本的虚函数问题
2015-01-13 V0.31.3Alpha
	处理了枚举值得box转换
2015-01-13 V0.31.2Alpha
	//值管理有泄露。。修复
2015-01-13 V0.31.1Alpha
	从loc来的变量没有Clone,导致计算错误
	//还有其他可能的各种bug
	//需要查一遍
2015-01-13 V0.31Alpha
	继续重构了堆栈数值类型部分,之前的虚调用太多,性能很差,改写
2015-01-13 V0.3Alpha
	重构了堆栈数值类型部分,解决一些数值类型执行上的bug
2015-01-12 V0.23Alpha
	加入一个MethodCache 和FieldCache,期待提升性能
2015-01-12 V0.22.2Alpha
	修复脚本中类中类的查找
2015-01-12 V0.22.1Alpha
	实现了switch指令
2015-01-12 V0.22Alpha
	规范修改了数值计算
2015-01-12 V0.21.1Alpha
	修复bug:if xxx==null问题
2015-01-12 V0.21Alpha
	修复bug:结构体的构造
2015-01-11 V0.20Alpha
	所有用例全部通过
2015-01-11 V0.17Alpha
	线程局部存储Context,委托调用安全
2015-01-11 V0.16Alpha
	try catch用例通过
	用例通过情况(38/39)
2015-01-11 V0.15Alpha
	增加EvilTesto用例九个
	用例通过情况(37/39)
	除try catch以外,基本语法都通了
2015-01-10 V0.10Alpha
	匿名函数实现
	用例通过情况(30/30)
	C#LightTestor所有用例移植完毕
2015-01-10 V0.07Alpha
	调整了代码结构,更顺畅,也为实现匿名函数打下了基础
	用例通过情况(29/30)
2015-01-09 V0.06Alpha
	修改了很多,基本测试基本通过
	用例通过情况(29/30)
2015-01-09 V0.05Alpha
	改进了类型匹配方法,对模板类型可以根据名称任意深度匹配
	用例通过情况(26/30)
2015-01-09 V0.04Alpha
	继续实现,推进了很多CLR的实现
	用例通过情况(24/30)
2015-01-08 V0.03Alpha
	增加了PDB的加载
	改变了界面显示,更容易对照源码和汇编
	增加了DebugLevel
2015-01-08 V0.02Alpha
	开始跑表达式用例
	用例通过情况(14/30)
2015-01-07 V0.01Alpha
	暂定名 L# 
	新坑报道,直接解析执行IL,相当于CLR的工作
	可用于Unity在IOS等奇葩平台解析执行,将所有dotnet语言作为脚本
	可用于Xamarin,silverlight ,wp winstore开发,只要有dotnet 2.0的环境即可。
	语法完美支持c# vb.net F#等任何语言,只要能编译为dll即可。
	目前实现程度还刚开始。
	可以跑个循环,调用静态函数。用例3个

About

A Pure C# IL Runner,Run DLL as a Script.直接解析执行IL的脚本引擎

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages