moonsharp icon indicating copy to clipboard operation
moonsharp copied to clipboard

Project abandoned?

Open memcorrupt opened this issue 2 years ago • 7 comments

@xanathar @LimpingNinja A new GitHub/NuGet release hasn't been pushed out since 2016, despite numerous commits to the repository since the last release.

I am the founder of Luraph, a Lua code obfuscation platform, and one of my customers have brought it to my attention that a bug (since patched in 4f4e6cd7ccebb853b942d80c0bddadd1ea9e4817) causes my security software to not work with Moonsharp.

Since most developers will bundle Moonsharp based on the last release version, these new bug fixes aren't being widely used. Is this project still maintained, and will a new version be coming out soon?

memcorrupt avatar Jun 10 '23 09:06 memcorrupt

Cool, sounds similar to #317

ferib avatar Jun 13 '23 19:06 ferib

Fair call out; I think I got demoralized last time I went up against the pull requests, given the two maintained versions. I will aim to look at some of the core patches in the next two weeks and see if I can contribute a release.

LimpingNinja avatar Jun 13 '23 21:06 LimpingNinja

@LimpingNinja we did many changes to the bytecode representation, changed some core classes to structs, reduced their runtime size, allocations and overall dramatically improved performance in WattleScript. Currently, we don't have the space to backport changes upstream (probably the scope of changes is at a scale that can't be backported anyway) but if anyone wants just to run a faster version of MoonSharp, we support Lua mode and are 99% backward compatible (just recompile scripts, bytecode will differ).

Some of the core changes: https://github.com/WattleScript/wattlescript/blob/main/src/WattleScript.Interpreter/DataTypes/DynValue.cs https://github.com/WattleScript/wattlescript/blob/main/src/WattleScript.Interpreter/DataTypes/Table.cs https://github.com/WattleScript/wattlescript/blob/main/src/WattleScript.Interpreter/Execution/VM/OpCode.cs https://github.com/WattleScript/wattlescript/blob/main/src/WattleScript.Interpreter/Execution/VM/Processor/Processor_InstructionLoop.cs

On top of that, WattleScript itself is a C#/JS flavor added to Lua, with some syntax-breaking changes. The language is roughly specified here: https://github.com/WattleScript/wattlescript/wiki/roadmap and here https://github.com/WattleScript/wattlescript/tree/main/src/WattleScript.Tests/EndToEnd/CLike/SyntaxCLike

lofcz avatar Jun 13 '23 21:06 lofcz

Sounds nice, I've pulled it down and am going to test on my own project, are you planning on leaving LUA support at the current level or moving towards the next version?

LimpingNinja avatar Jun 28 '23 16:06 LimpingNinja

@LimpingNinja the last two things I wanted to add were gradual typing and LSP for Wattle. We hit a major roadblock with the gradual typing implementation, that's why the last commit is from the previous year. I'm planning to take another shot at it when I feel confident enough about the topic - turns out there's a lot of literature about implementing dynamically typed languages but moving into gradual typing with an existing codebase is pretty hard. Until that is resolved we have no plans to push for a higher LUA version. However, if you were to adopt Wattle in your project, we accept PRs (or it could be implemented upstream and we can backport the changes).

lofcz avatar Jun 29 '23 19:06 lofcz

Given that the last commit appears to be three years ago: Yes.

N3X15 avatar May 11 '24 09:05 N3X15

@LimpingNinja the last two things I wanted to add were gradual typing and LSP for Wattle. We hit a major roadblock with the gradual typing implementation, that's why the last commit is from the previous year. I'm planning to take another shot at it when I feel confident enough about the topic - turns out there's a lot of literature about implementing dynamically typed languages but moving into gradual typing with an existing codebase is pretty hard. Until that is resolved we have no plans to push for a higher LUA version. However, if you were to adopt Wattle in your project, we accept PRs (or it could be implemented upstream and we can backport the changes).

Perhaps you could consider forking my project to implement it.

CppCXY avatar Jun 19 '24 02:06 CppCXY