[Opensim-dev] My new LSL compiler project

Michael Emory Cerquoni nebadon2025 at gmail.com
Thu Nov 5 01:59:31 UTC 2015


will this run and compile with mono in linux and mac too?
On Nov 4, 2015 5:55 PM, "Eric " <e800 at gmail.com> wrote:

> I also just recently (tonight) adjusted code generation to support script
> resets in code generated on the server, and also to support script state
> persistence.
>
> Previously globals were not being reset when the script reset because they
> were generated in a container class during server side compilation, and
> assigned to a single field in the generated class all together in one
> object.
>
> This was not friendly to the way XEngine script resets occur since the
> current script base class code requires all global variables be a declared
> member of the generated script class that derives from it.
>
> The base class collects the initial values of the generated script global
> fields so it can reset them later, and also has an API for manipulating
> them dynamically that I had not considered before.
>
> ===
>
> I moved the generated global variable initialization into the constructor
> of the actual script class, and declared the fields in the script class
> itself to make script resets/state persistence work;  while still
> maintaining the ability for global variables to reference previously
> defined globals in their declaration.
>
>
>
> On Nov 4, 2015 7:30 PM, "Zadark Portal" <zadarkportal at gmail.com> wrote:
>
>> Thank you for the update Eric
>>
>> Over the next few days we will extend the tests hopefully provide you
>> with additional validation.
>> In the meantime should you wish for any specifics to be considered please
>> shout.
>>
>> Z
>>
>> On 4 November 2015 at 07:56, Eric  <e800 at gmail.com>
>> wrote:
>>
>>> Thanks Zadark, that's also good to know.
>>>
>>>
>>> The OpenSim fork should indeed build without problems in every version
>>> of visual studio that OpenSim is already stated to support.
>>> I have pre-built my library for that repository and stuck it in the
>>> 'bin' folder with its ANTLR 4 dependency.
>>> Then updated prebuild.xml for the places I needed to reference it.
>>>
>>> It does not affect the build OpenSim build very much since they are just
>>> binary files.
>>> prebuild.exe is still used to generate the new OpenSim project that
>>> houses the compiler addon, so everything new is friendly to the existing
>>> build system.
>>>
>>>
>>> You're right, I should probably remove the pre-configuration though.
>>> I had it there so whenever I pulled the repository down onto a new
>>> machine I was testing I would not have to re-configure after building.
>>>
>>> Having it there is not inline with how the OpenSim project actually does
>>> things.
>>>
>>> ==
>>>
>>>
>>> Jak was talking about the actual LibLSLCC library over here: *https://github.com/EriHoss/LibLSLCC
>>> <https://github.com/EriHoss/LibLSLCC>*
>>>
>>>
>>> It has an LSL editor included in it that will not build in vs2010 due to
>>> .NET 4.5 compatibility issues.
>>>
>>> I provide several .sln files in the source tree of that project however,
>>>  I just got done fixing the "LibLSLCC-NoEditor.sln" project file so
>>> that it should build in VS2010 and up.
>>>
>>> That solution file of course excludes the editor, and just builds the
>>> projects related to the library itself, which I made sure so far will
>>> build with at least VS2010.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Wed, Nov 4, 2015 at 12:27 AM, Zadark Portal <zadarkportal at gmail.com>
>>> wrote:
>>>
>>>> FWIW
>>>> The project builds and runs when using VS2012 with no modification
>>>> other than networks adjustments to the various ini files. As these
>>>> adjustments would be required by most test environments I would however
>>>> suggest that opensim.ini and *common.ini files be omitted from the git
>>>> repository.
>>>>
>>>> Great project all the same,
>>>> Z
>>>>
>>>> On 4 November 2015 at 05:53, 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> 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 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
>>>
>>>
>>
>> _______________________________________________
>> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20151104/d5a064b6/attachment-0001.html>


More information about the Opensim-dev mailing list