Details
-
Type:
New Feature
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: Phoenix Firestorm 4.1.1
-
Component/s: None
-
Labels:
-
SL Avatar Name:Agent Tairov
-
Reported In:Firestorm 3.2.2.24336 Release
Description
So, basically, my team have become highly dependent on the LSL Preprocessor, because LSL lacks so many features, and so we have tons of libraries, and we now have proper version control via a mercurial repository (on bitbucket, no less). Not having these features would be like being back in the stone age, so we can't migrate to Firestorm until it does. : (
I've developed a set of tools for working with LSL, that I'm willing to offer in exchange for this getting implemented soonish. I might be willing to throw in libraries as well. We've actually been doing some work on developing a standard public library*, but I don't know if anyone else uses it. (I wish I could just offer straight-up cash, but I can't afford it.)
"Offer" could mean a variety of things in this case. If you want, I can open source it, or I can make it available to just the Firestorm devs and their friends, or what have you. Of course, I still need to be able to use it myself, and provide it to possible clients, if necessary.
The tools are in Ruby (mostly. We make a command line call to the GNU C preproc), and it's cross-platform (tested on Win7 and OSX).
Currently, it does the following:
+ Use Phoenix XML export to export LSL files from SL. These are cleaned up, then routed using information in comments to specific paths and filenames.
+ Use Phoenix XML import to batch import LSL files into SL. These are preprocessed, then optimized (I included a simple optimizer), then inserted into either an "lsl" or "mono" object to be imported into SL. These also use information from the files to generate the LSL script asset's name.
++ What does this mean? It means that not only can you store all your scripts in real version control, and without copy-pasting, but you can literally choose whether to work on the script in an external editor, the internal editor, or mix 'n' match. Because of batch import and version control capability, you can even rebuild the exact set of scripts at a specific changeset for testing and debugging, and gain pretty much all the other advantages of real version control software. Combine this with an SL based updater script set, and mass updates of large linksets to specific versions are possible. This is incredibly useful for teams of multiple developers.
+ Documentation generator. Generates XHTML documents from marked up LSL files.
++ The new version is pretty flexible, and shouldn't be too difficult to extend.
++ Already supports macros, macro-functions, marking custom types, creating general documentation sections, bullet points, tables of messages, tables of flags, etc...
+ GUI wrapper (using Ruby Shoes, also cross-platform) for the other tools, which saves the last used conditions.
++ The other tools generally use Dir.glob, so you can have them work through multiple files or directories recursively.
You can probably see why I'm hesitant to give up on the preproc.
That LSL toolset is still under active development, too, so if it were open sourced, I could just open up a repository with it on github or bitbucket for people to access and submit patches to.
- A standard public LSL library may be worth considering on its own, for inclusion with Firestorm/etc.
Issue Links
- is duplicated by
-
FIRE-1525
Lacks of support for Phoenix LSL Preprocessed scripts
-
- is related to
-
FIRE-9154
#include stops processing of LSL code
-
-
FIRE-7791
LSL PreProcessor String Parse Error
-
-
FIRE-8149
LSL Preprocessor skips globally defined strings when containing brackets ()
-
-
FIRE-9155
LSL optimizer can cause errors by changing order of global variable declarations
-
-
FIRE-6122
Script contents get wiped when preprocessor is enabled when clicking Edit
-
-
FIRE-6117
LSL Preproc panel missing features
-
-
FIRE-6118
[CRASH] Crash to desktop when setting texture repeats/meter to 1 & clicking apply after preprocessor merge.
-
-
FIRE-6119
Spinners broken after preprocessor merge
-
-
FIRE-6124
Syntax errors when using preprocessor
-
-
FIRE-9602
LSL/Script Optimizer removes globally defined string variables whose value contains a parenthesis
-
-
FIRE-7714
[LSL Preprocessor] [CRASH] Script - Keyword Help and save crash
-
-
FIRE-2385
Request for preprocessor directive to disable the preprocessor for a script
-
-
FIRE-6183
Issue to track the addition of LSL Tools into Firestorm
-
-
FIRE-9335
Add a way to deactivate the precompiler per-script
-
-
FIRE-10173
Save button in script editor should always remain enabled when preprocessor is turned on
-
-
FIRE-294
Externalized Script Preprocessor
-
- relates to
-
FIRE-6573
Search/Replace does not work with a preprocessed script
-
-
FIRE-6571
In script editor, load from file should default to #include folder if preprocessor is enabled
-
-
FIRE-6576
Rename the "Preprocessed" tab in script edit floater
-
We have a fix version! :O
But, nobody's marked as assigned? :<