[Opensim-dev] My new LSL compiler project

Zadark Portal zadarkportal at gmail.com
Sat Nov 7 13:42:50 UTC 2015


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20151107/a15a663d/attachment-0001.html>


More information about the Opensim-dev mailing list