[Opensim-dev] My new LSL compiler project

Melanie melanie at t-data.com
Sat Nov 7 14:46:07 UTC 2015


I would be against making the evaluation order optional. It has long
been recognized as a bug in XEngine's compiler and people porting
scripts from SL have been advised to remove evaluation order
dependent code but not write any code that depends on the wrong
XEngine eval order. Therefore, if this compiler breaks content that
content needs to be fixed, not a setting changed for convenience to
perpetuate the bad behavior.

- Melanie

On 07/11/2015 15:36, Eric  wrote:
> Thanks Again Zadark
> 
> This should be easy to fix, I need to change the type validation system
> just little so the syntax tree can be built with these types of implicit
> conversion present.
> 
> The code generator can then be made to generate the cast when necessary,
> since it will pass syntax checking.
> 
> I think I am going to implement it as a compatibility option in the
> compiler that you can turn on or off, depending on if you want the linden
> compilers more strict type checking behavior.
> 
> I should also probably make order of evaluation correction on binary
> operations something you can disable if needed, since I can see that
> causing compatibility problems somewhere too.
> 
> Side Note:  I have not tested on Mac yet, but I plan to do so today if I
> can get time to, sorry.
> On Nov 7, 2015 7:42 AM, "Zadark Portal" <zadarkportal at gmail.com> wrote:
> 
>> Hello Eric,
>>
>> Very useful, thankyou.
>>
>> Caveat
>> XEngine appears to cast library function parameters to the relevant type,
>> though I can see this handy for novice scriptwriters it does encourage some
>> less than elegant techniques
>>
>> Some popular scripts freely available to OpenSim use this feature:
>> For instance:
>> llListFindList takes 2 parameters of the type List, when in fact the
>> existing compiler permits any type (as far as we have tested).
>>
>> example... integer  bah = llListFindList( blah1, llList2String(blah2,
>> blah3)); // compiles and kind of works.
>>
>> This of course fails when compiled with LSLcc, the explanation is clear
>> and precise so easy to fix (enable compile) with a local cast.
>>
>> Z
>>
>>
>> On 5 November 2015 at 12:52, Jak Daniels <jak at ateb.co.uk> wrote:
>>
>>> Hi Eric,
>>>
>>> yes I can confirm now that it does open and compile correctly in VS C#
>>> 2010 express now. Thank you.
>>>
>>> I'm now installing VS2015 in a win10 virtual machine so I don't clobber
>>> my SSD, so I can compile and play with the LSL editor.
>>>
>>> kind regards
>>> Jak
>>>
>>>
>>>
>>>
>>> On 04/11/2015 06:10, Eric  wrote:
>>>
>>> Let me just make a slight correction to my last message, and add some
>>> info...
>>>
>>> After removing the "<LangVersion>5</LangVersion>" stuff from the
>>> non-editor related .csproj files,
>>>
>>> I found that VS2010 is actually able to open the
>>> "MonoDevelop-LibLSLCC.sln" solution file in the source tree and build it
>>> without any problems.
>>>
>>> I'm going to be pushing the changes I made to the .csproj files shortly,
>>>  I will probably rename "MonoDevelop-LibLSLCC.sln" to something like
>>> "LibLSLCC-No-Editor.sln" and update the build instructions in the
>>> README.md to specify that solution as the solution to use for building the
>>> library on Mono.
>>>
>>>
>>> I have not tested that the editor build is working with anything other
>>> than vs2015,  but I will test with the prior versions vs2012+ to see what
>>> all
>>> works, then put some info in the README.md about what IDE's the Editor
>>> portion of the project can be built in.
>>>
>>>
>>>
>>> On Tue, Nov 3, 2015 at 11:53 PM, Eric  <e800 at gmail.com>
>>> wrote:
>>>
>>>> Thanks for letting me know about this problem Jak.   (See the bottom for
>>>> TLDR :P)
>>>>
>>>>
>>>> I am using vs2015 and WiX 3.10.1, it does indeed seem to be a problem
>>>> with vs2010 C#.
>>>>
>>>> I was unable to find an updated download for vs2010 C# to test with,
>>>> only an SP1 ISO I found on stackoverflow:
>>>>
>>>>
>>>> http://stackoverflow.com/questions/6871865/url-for-visual-studio-2010-express-iso
>>>>
>>>> http://go.microsoft.com/?linkid=9709969
>>>>
>>>>
>>>> I tried installing vs2010, however this version will not attempt to open
>>>> my solution files at all as it says they are incompatible.
>>>>
>>>> I can however, load the .csproj files for certain projects in my build.
>>>>
>>>> I cannot get it to update from SP1, I am unsure if updates are still
>>>> available to download for vs2010.
>>>>
>>>> When I try to update, it just directs me to use windows update which
>>>> does not seem to find any updates related to it.
>>>>
>>>>
>>>> === Why it's not loading ===
>>>>
>>>>
>>>> With vs2010 SP1,  I was only able to load: LibLSLCC.csproj,
>>>> lslcc_cmd.csproj and DemoArea.csproj.
>>>>
>>>> LibraryDataScrapingTools was incompatible because it was building
>>>> against .NET 4.5.
>>>>
>>>> I downgraded LibraryDataScrapingTools to .NET 4.0  and re-installed the
>>>> 'System.Data.Sqlite.Core' package from nuget using vs2015 in order to make
>>>> it load in vs2010.
>>>> I then made some code changes to make it compatible with .NET 4.0.
>>>>
>>>> I will be committing the changes to LibraryDataScrapingTools tonight, as
>>>> this project is supposed to be .NET 4.0 compatible.
>>>>
>>>>
>>>>
>>>> The LSLCCEditor related projects I am pretty sure are incompatible at
>>>> the moment due to the .NET framework level they require as well.
>>>>
>>>> The code base for LSLCCEditor requires a minimum of .NET 4.5 to compile,
>>>> and the code changes required to make the editor projects
>>>> compatible with .NET 4.0 are not as trivial as the changes I made to the
>>>> LibraryDataScrapingTools project.
>>>>
>>>> I am not sure if I want to limit the LSLCCEditor part of the project to
>>>> a  .NET 4.0 at the moment, as it is a Windows
>>>> only WPF application, and that sort of compatibility profile is not
>>>> necessary.
>>>>
>>>>
>>>>
>>>> I also noticed when installing WiX v3.10.1 on a Virtual Machine with
>>>> vs2010 installed that It does not try to register itself with vs2010 as a
>>>> project type.
>>>> I do not think the latest version of WiX installer framework supports
>>>> vs2010 anymore.
>>>>
>>>>
>>>> === How I got LibLSLCC, LibraryDataScrapingTools, lslcc_cmd and DemoArea
>>>>  to build.  ===
>>>>
>>>>
>>>>
>>>> After the code changes to LibraryDataScrapingTools and downgrading the
>>>> .NET Framework level...
>>>>
>>>> I created a new vs2010 project and added (LibLSLCC,
>>>> LibraryDataScrapingTools, lslcc_cmd and DemoArea) as existing projects.
>>>>
>>>> When trying to build these projects I got the message "Error 1 Invalid
>>>> option '5' for /langversion; must be ISO-1, ISO-2, 3 or Default"
>>>> for all of the projects except 'DemoArea'
>>>>
>>>> I resolved this by manually editing the .csproj file for each
>>>> non-building project in a text editor, removing the occurrences of:
>>>>
>>>> <LangVersion>5</LangVersion>
>>>>
>>>>
>>>> That particular MSBuild setting is not necessary for vs2015 or Mono to
>>>> build the library anyway, so I am going to remove it and commit the changes.
>>>>
>>>> After that, LibLSLCC, LibraryDataScrapingTools, lslcc_cmd and DemoArea
>>>> were all able to build under vs2010.
>>>>
>>>> ===
>>>>
>>>> That all being said,  I will be adding a vs2010 compatible solution file
>>>> to the repository that contains Projects:
>>>>
>>>> * LibLSLCC,
>>>> * lslcc_cmd
>>>> * LibraryDataScrapingTools
>>>> * DemoArea
>>>>
>>>> So that you can at-least build the library, command line compiler,
>>>> library data scraper and demo project with vs2010.
>>>>
>>>>
>>>> Unfortunately making LSLCCEditor build in vs2010 would require some non
>>>> trivial code changes, a new method of triggering the WiX installer build,
>>>> and a downgrade from .NET 4.5 to .NET 4.0 for the editor related
>>>> projects.
>>>>
>>>> I'm not sure if I want to make these changes to the Editor portion of
>>>> the project just for the sake of being compatible with older versions of
>>>> Visual Studio.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Tue, Nov 3, 2015 at 10:05 AM, Jak Daniels < <jak at ateb.co.uk>
>>>> jak at ateb.co.uk> wrote:
>>>>
>>>>> Hi Eric,
>>>>>
>>>>> Thank you for posting up your work to this group. This all looks very
>>>>> promising, and I was intrigued to give it a try.
>>>>> I checked out the source from github and I tried building in VS C# 2010
>>>>> express... but only 3 of the projects will load.  LibraryDataScrapingTools,
>>>>> LSLCCEditor, LSLCCEditor.CompletionUI all say (incompatible) and
>>>>> LSLCCEditorInstaller says (unavailable) even though I have WIX 3.10.1
>>>>> installed.
>>>>>
>>>>> Is this a VS 2010 problem do you think?
>>>>>
>>>>> I'm a bit loathed to install VS2015 as the last time I installed VS2013
>>>>> it just dumped everything onto my SSD c: drive and filled it up, with no
>>>>> option to put things on drive D: my large harddrive. It also left a mess
>>>>> behind (more than 50% of itself including MSSQL server stuff) when I tried
>>>>> to uninstall it. VS2015 might be better now in this respect, but knowing MS
>>>>> products probably not! I also found VS2013 to be way, way slower loading up
>>>>> large projects like OpenSimulator than VS2010. So before I take the
>>>>> possibly irreversible path of installing VS2015, is there something I can
>>>>> do to make it load in VS2010 express?
>>>>>
>>>>> Thanks
>>>>> Jak
>>>>>
>>>>>
>>>>> On 02/11/2015 19:24, Eric  wrote:
>>>>>
>>>>> Hello all.
>>>>>
>>>>> I am a bit new to OpenSim development (well at-least sharing stuff I
>>>>> have made..) but for a quite a while now I have been working on
>>>>> a new (BSD Licensed) Compilation/Code Generation framework for LSL,
>>>>> tailored towards usage with OpenSim.  I thought I should share it
>>>>> at this point of its development.
>>>>>
>>>>>
>>>>> This is pretty much a "full" or "true" compiler front end.
>>>>>
>>>>> It's built on-top of ANTLR4 and ANTLR4's CSharp target.
>>>>> ANTLR4 however has been completely abstracted and the library provides
>>>>> its own Rich LSL Syntax Tree for users to deal with.
>>>>>
>>>>> My library includes an OpenSim code generation target which I have
>>>>> integrated into my OpenSim fork on GitHub, it's implemented as an
>>>>> optional compiler that you can enable in your OpenSim.ini.
>>>>>
>>>>>
>>>>> The Code validation step my library performs when building a syntax
>>>>> tree implements full front end syntax checking, dead code detection, the
>>>>> works.
>>>>> It also emits extended warning information that is standard to most
>>>>> compilers now days.
>>>>>
>>>>>
>>>>> The OpenSim code generator I have written and included with the library
>>>>> drastically improves compatibility with scripts written for SecondLife.
>>>>> Order of evaluation in generated code is correct for LSL (Right to
>>>>> Left) among many other things.
>>>>>
>>>>> As an example, all of the encryption scripts you can find on the LSL
>>>>> wiki will compile correctly and execute with correct behavior using my
>>>>> compiler.
>>>>>
>>>>>
>>>>> The README.md for the project goes into a bit more detail on what all
>>>>> the library can do.
>>>>>
>>>>>
>>>>> My library LibLSLCC is on GitHub here:
>>>>>
>>>>> <https://github.com/EriHoss/LibLSLCC>
>>>>> https://github.com/EriHoss/LibLSLCC
>>>>>
>>>>>
>>>>> The project includes an LSL Editor (Windows Only, I used AvalonEdit)
>>>>> with the project that features code completion and syntax highlighting.
>>>>>
>>>>> It can be used to test CSharp code generation for OpenSim by compiling
>>>>> LSL into C# using LibLSLCC, which can then be uploaded to an
>>>>> OpenSim server with C# scripting enabled.
>>>>>
>>>>> The library itself is cross-platform, but the editor and editor
>>>>> installer are not.  There's a separate project file for building the
>>>>> library on
>>>>> mono with monodevelop/xbuild.
>>>>>
>>>>>
>>>>> ===
>>>>>
>>>>>
>>>>> The OpenSim fork that integrates my compiler is here:
>>>>>
>>>>> <https://github.com/EriHoss/OpenSim_With_LibLSLCC>
>>>>> https://github.com/EriHoss/OpenSim_With_LibLSLCC
>>>>>
>>>>>
>>>>> It includes a few minor bug fixes to XEngine and Runtime Script
>>>>> functions.
>>>>>
>>>>> Such as the 'IdleTimeout' setting not being honored properly.
>>>>>
>>>>> And llParseString2List using culture specific comparisons, causing it
>>>>> to misbehave when comparing Unicode characters on Mono.
>>>>>
>>>>>
>>>>>
>>>>> I have added new attributes to OpenSim's script module
>>>>> constants/functions and also to ScriptBaseClass.
>>>>> This is so LibLSLCC can de-serialize the classes into library data
>>>>> that's consumable by its code validator and code generator.
>>>>>
>>>>> I have also made some slight changes to IScriptModuleComms and
>>>>> ScriptModuleCommsModule.
>>>>>
>>>>> The old compiler in my fork works as it did before, so you can switch
>>>>> back and forth from LibLSLCC to the old compiler
>>>>> if you want without any problems.
>>>>>
>>>>> There are more details on the changes I have made in the README.md.
>>>>>
>>>>>
>>>>> ==
>>>>>
>>>>> I started working on this sometime early last year when I broke my
>>>>> wrist and was unable to do much for a while, and
>>>>> I have only recently moved the code from my Git server up to GitHub.
>>>>> I'm going to continue improving this in my spare time,
>>>>> right now I am doing rolling releases versioned by date anywhere from
>>>>> once every few days to a few times a day.  I am also keeping my OpenSim
>>>>> fork synced with the latest OpenSim commits.
>>>>>
>>>>> Hopefully this will be useful, any feedback is appreciated :)
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Opensim-dev mailing listOpensim-dev at opensimulator.orghttp://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Opensim-dev mailing list
>>>>> Opensim-dev at opensimulator.org
>>>>> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>>>>>
>>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> Opensim-dev mailing listOpensim-dev at opensimulator.orghttp://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>>>
>>>
>>>
>>> _______________________________________________
>>> Opensim-dev mailing list
>>> Opensim-dev at opensimulator.org
>>> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>>>
>>>
>>
>> _______________________________________________
>> Opensim-dev mailing list
>> Opensim-dev at opensimulator.org
>> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>>
>>
> 
> 
> 
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at opensimulator.org
> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev


More information about the Opensim-dev mailing list