<p dir="ltr">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.</p>
<p dir="ltr">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.</p>
<p dir="ltr">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. </p>
<p dir="ltr">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.</p>
<p dir="ltr">===</p>
<p dir="ltr">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.<br><br><br><br></p>
<div class="gmail_quote">On Nov 4, 2015 7:30 PM, "Zadark Portal" <<a href="mailto:zadarkportal@gmail.com">zadarkportal@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thank you for the update Eric<div><br><div>Over the next few days we will extend the tests hopefully provide you with additional validation.</div><div>In the meantime should you wish for any specifics to be considered please shout.</div><div><br></div><div>Z</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 4 November 2015 at 07:56, Eric Blundell <span dir="ltr"><<a href="mailto:eblundell800@gmail.com" target="_blank">eblundell800@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thanks Zadark, that's also good to know.<div><br></div><div><br></div><div>The OpenSim fork should indeed build without problems in every version of visual studio that OpenSim is already stated to support.</div><div>I have pre-built my library for that repository and stuck it in the 'bin' folder with its ANTLR 4 dependency. </div><div>Then updated prebuild.xml for the places I needed to reference it. </div><div><br></div><div>It does not affect the build OpenSim build very much since they are just binary files.</div><div>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.</div><div><br></div><div><br></div><div>You're right, I should probably remove the pre-configuration though. </div><div>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.</div><div><br></div><div>Having it there is not inline with how the OpenSim project actually does things.</div><div><br></div><div>==</div><div><br></div><div><br></div><div>Jak was talking about the actual LibLSLCC library over here: <font color="#1155cc"><span style="font-size:12.8px"><u><a href="https://github.com/EriHoss/LibLSLCC" target="_blank">https://github.com/EriHoss/LibLSLCC</a></u></span></font></div><div><font color="#1155cc"><span style="font-size:12.8px"><u><br></u></span></font></div><div><font color="#1155cc"><span style="font-size:12.8px"><u><br></u></span></font></div><div>It has an LSL editor included in it that will not build in vs2010 due to .NET 4.5 compatibility issues.</div><div><br></div><div>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</div><div>that it should build in VS2010 and up.</div><div><br></div><div>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</div><div>build with at least VS2010.</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 4, 2015 at 12:27 AM, Zadark Portal <span dir="ltr"><<a href="mailto:zadarkportal@gmail.com" target="_blank">zadarkportal@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">FWIW<div>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.</div><div><br></div><div>Great project all the same, </div><span><font color="#888888"><div>Z</div></font></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On 4 November 2015 at 05:53, Eric Blundell <span dir="ltr"><<a href="mailto:eblundell800@gmail.com" target="_blank">eblundell800@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Thanks for letting me know about this problem Jak. (See the bottom for TLDR :P)</div><div><br></div><div><br></div>I am using vs2015 and WiX 3.10.1, it does indeed seem to be a problem with vs2010 C#.<div><br></div><div>I was unable to find an updated download for vs2010 C# to test with, only an SP1 ISO I found on stackoverflow:</div><div><br></div><div><a href="http://stackoverflow.com/questions/6871865/url-for-visual-studio-2010-express-iso" target="_blank">http://stackoverflow.com/questions/6871865/url-for-visual-studio-2010-express-iso</a><br></div><div><br></div><div><a href="http://go.microsoft.com/?linkid=9709969" target="_blank">http://go.microsoft.com/?linkid=9709969</a><br></div><div><br></div><div><br></div><div>I tried installing vs2010, however this version will not attempt to open my solution files at all as it says they are incompatible.</div><div><br></div><div>I can however, load the .csproj files for certain projects in my build.</div><div><br></div><div>I cannot get it to update from SP1, I am unsure if updates are still available to download for vs2010.</div><div><br></div><div>When I try to update, it just directs me to use windows update which does not seem to find any updates related to it.</div><div><br></div><div><br></div><div>=== Why it's not loading ===</div><div><br></div><div><br></div><div>With vs2010 SP1, I was only able to load: LibLSLCC.csproj, lslcc_cmd.csproj and DemoArea.csproj.</div><div><br></div><div>LibraryDataScrapingTools was incompatible because it was building against .NET 4.5.</div><div><br></div><div>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.</div><div>I then made some code changes to make it compatible with .NET 4.0.</div><div><br></div><div>I will be committing the changes to LibraryDataScrapingTools tonight, as this project is supposed to be .NET 4.0 compatible.</div><div><br></div><div><br></div><div><br></div><div>The LSLCCEditor related projects I am pretty sure are incompatible at the moment due to the .NET framework level they require as well. </div><div><br></div><div>The code base for LSLCCEditor requires a minimum of .NET 4.5 to compile, and the code changes required to make the editor projects</div><div>compatible with .NET 4.0 are not as trivial as the changes I made to the LibraryDataScrapingTools project.</div><div><br></div><div>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</div><div>only WPF application, and that sort of compatibility profile is not necessary.</div><div><br></div><div><br></div><div><br></div><div><div>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.</div><div>I do not think the latest version of WiX installer framework supports vs2010 anymore.</div></div><div><br></div><div><br></div><div>=== How I got LibLSLCC, LibraryDataScrapingTools, lslcc_cmd and DemoArea to build. ===</div><div><br></div><div><br></div><div><br></div><div>After the code changes to LibraryDataScrapingTools and downgrading the .NET Framework level...</div><div><br></div><div>I created a new vs2010 project and added (LibLSLCC, LibraryDataScrapingTools, lslcc_cmd and DemoArea) as existing projects.</div><div><br></div><div>When trying to build these projects I got the message "Error<span style="white-space:pre-wrap"> </span>1<span style="white-space:pre-wrap"> </span>Invalid option '5' for /langversion; must be ISO-1, ISO-2, 3 or Default<span style="white-space:pre-wrap">"</span></div><div><span style="white-space:pre-wrap">for all of the projects except 'DemoArea'</span></div><div><br></div><div><span style="white-space:pre-wrap">I resolved this by manually editing the .csproj file for each non-building project in a text editor, removing the occurrences of:</span></div><div><br></div><div><LangVersion>5</LangVersion></div><div><br></div><div><br></div><div>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.</div><div><br></div><div>After that, LibLSLCC, LibraryDataScrapingTools, lslcc_cmd and DemoArea were all able to build under vs2010.</div><div><br></div><div>===</div><div><br></div><div>That all being said, I will be adding a vs2010 compatible solution file to the repository that contains Projects:</div><div><br></div><div>* LibLSLCC, </div><div>* lslcc_cmd<br></div><div>* LibraryDataScrapingTools</div><div>* DemoArea</div><div><br></div><div>So that you can at-least build the library, command line compiler, library data scraper and demo project with vs2010.</div><div><br></div><div><br></div><div>Unfortunately making LSLCCEditor build in vs2010 would require some non trivial code changes, a new method of triggering the WiX installer build, </div><div>and a downgrade from .NET 4.5 to .NET 4.0 for the editor related projects.</div><div><br></div><div>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.</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 3, 2015 at 10:05 AM, Jak Daniels <span dir="ltr"><<a href="mailto:jak@ateb.co.uk" target="_blank">jak@ateb.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hi Eric,<br>
<br>
Thank you for posting up your work to this group. This all looks
very promising, and I was intrigued to give it a try.<br>
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.<br>
<br>
Is this a VS 2010 problem do you think?<br>
<br>
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?<br>
<br>
Thanks <br>
Jak<div><div><br>
<br>
On 02/11/2015 19:24, Eric Blundell wrote:<br>
</div></div></div>
<blockquote type="cite"><div><div>
<div dir="ltr">
<div>Hello all.</div>
<div><br>
</div>
<div>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</div>
<div>a new (BSD Licensed) Compilation/Code Generation framework
for LSL, tailored towards usage with OpenSim. I thought I
should share it </div>
<div>at this point of its development.</div>
<div><br>
</div>
<div><br>
</div>
<div>This is pretty much a "full" or "true" compiler front end.</div>
<div><br>
</div>
<div>It's built on-top of ANTLR4 and ANTLR4's CSharp target.</div>
<div>ANTLR4 however has been completely abstracted and the
library provides its own Rich LSL Syntax Tree for users to
deal with.</div>
<div><br>
</div>
<div>My library includes an OpenSim code generation target which
I have integrated into my OpenSim fork on GitHub, it's
implemented as an </div>
<div>optional compiler that you can enable in your OpenSim.ini.</div>
<div><br>
</div>
<div><br>
</div>
<div>The Code validation step my library performs when building
a syntax tree implements full front end syntax checking, dead
code detection, the works.</div>
<div>It also emits extended warning information that is standard
to most compilers now days. </div>
<div><br>
</div>
<div><br>
</div>
<div>The OpenSim code generator I have written and included with
the library drastically improves compatibility with scripts
written for SecondLife.</div>
<div>Order of evaluation in generated code is correct for LSL
(Right to Left) among many other things.</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div><br>
</div>
<div>The README.md for the project goes into a bit more detail
on what all the library can do.</div>
<div><br>
</div>
<div><br>
</div>
<div>My library LibLSLCC is on GitHub here:</div>
<div><br>
</div>
<div><span style="white-space:pre-wrap"> </span><a href="https://github.com/EriHoss/LibLSLCC" target="_blank"></a><a href="https://github.com/EriHoss/LibLSLCC" target="_blank">https://github.com/EriHoss/LibLSLCC</a></div>
<div><span style="white-space:pre-wrap"> </span></div>
<div><br>
</div>
<div><br>
</div>
<div>The project includes an LSL Editor (Windows Only, I used
AvalonEdit) with the project that features code completion and
syntax highlighting.</div>
<div><br>
</div>
<div>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</div>
<div>OpenSim server with C# scripting enabled.</div>
<div><br>
</div>
<div>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</div>
<div>mono with monodevelop/xbuild.</div>
<div><br>
</div>
<div><br>
</div>
<div>===</div>
<div><br>
</div>
<div><br>
</div>
<div>The OpenSim fork that integrates my compiler is here:</div>
<div><br>
</div>
<div><span style="white-space:pre-wrap"> </span><a href="https://github.com/EriHoss/OpenSim_With_LibLSLCC" target="_blank"></a><a href="https://github.com/EriHoss/OpenSim_With_LibLSLCC" target="_blank">https://github.com/EriHoss/OpenSim_With_LibLSLCC</a></div>
<div><br>
</div>
<div><br>
</div>
<div>It includes a few minor bug fixes to XEngine and Runtime
Script functions. </div>
<div><br>
</div>
<div>Such as the 'IdleTimeout' setting not being honored
properly.</div>
<div><br>
</div>
<div>And llParseString2List using culture specific comparisons,
causing it to misbehave when comparing Unicode characters on
Mono.</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>I have added new attributes to OpenSim's script module
constants/functions and also to ScriptBaseClass. </div>
<div>This is so LibLSLCC can de-serialize the classes into
library data that's consumable by its code validator and code
generator.</div>
<div><br>
</div>
<div>I have also made some slight changes to IScriptModuleComms
and ScriptModuleCommsModule.</div>
<div><br>
</div>
<div>The old compiler in my fork works as it did before, so you
can switch back and forth from LibLSLCC to the old compiler</div>
<div>if you want without any problems.</div>
<div><br>
</div>
<div>There are more details on the changes I have made in the
README.md.<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>==</div>
<div><br>
</div>
<div><span style="white-space:pre-wrap"> </span></div>
<div>I started working on this sometime early last year when I
broke my wrist and was unable to do much for a while, and</div>
<div>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,</div>
<div>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.</div>
<div><br>
</div>
<div>Hopefully this will be useful, any feedback is appreciated
:)</div>
<div><br>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
</div></div><pre>_______________________________________________
Opensim-dev mailing list
<a href="mailto:Opensim-dev@opensimulator.org" target="_blank">Opensim-dev@opensimulator.org</a>
<a href="http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev" target="_blank">http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev</a>
</pre>
</blockquote>
<br>
</div>
<br>_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@opensimulator.org" target="_blank">Opensim-dev@opensimulator.org</a><br>
<a href="http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev" rel="noreferrer" target="_blank">http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@opensimulator.org" target="_blank">Opensim-dev@opensimulator.org</a><br>
<a href="http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev" rel="noreferrer" target="_blank">http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@opensimulator.org" target="_blank">Opensim-dev@opensimulator.org</a><br>
<a href="http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev" rel="noreferrer" target="_blank">http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@opensimulator.org" target="_blank">Opensim-dev@opensimulator.org</a><br>
<a href="http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev" rel="noreferrer" target="_blank">http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@opensimulator.org">Opensim-dev@opensimulator.org</a><br>
<a href="http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev" rel="noreferrer" target="_blank">http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev</a><br>
<br></blockquote></div>