v3.2.0
We skipped from 3.1.5 to 3.2.0 as the feature list grew a fair amount. See below for details.
3.2.0 August 2023
When the language server does not use a full parse, extract structure definitions. Before, this was a logic gap (and made the code faster), but they should be correctly resolved now with minimal performance hits.
- For context, using non-full parse can give a 4x improvement in performance (parse rate with 6 workers goes from 90k lines/second to 425k lines/second).
Change execution path for notebooks so cells are compiled in the same folder that a notebook lives in. This makes it much easier to load datasets that are next to the notebook (for data scientists) and mimics the behavior of PRO code. This means that, if you use "routine_dir()" or "routine_filepath()" from a notebook, it will resolve to the path that you expect.
For images, added a button that allows you to save the graphic to disk. All files saved to disk are in PNG format and come from the embedded images within the notebook file format. However, this makes it easy to generate graphics and export them from notebooks!
Added auto-complete for structure names when there are no properties or only the beginning of a name has been typed
Fixed a bug where task files and idl.json files were being processed as PRO files and reporting crazy errors
Re-worked the notebook file format to be human readable (as JSON). Do not edit the files by hand as you risk breaking your notebooks. This new format:
-
Is pretty-printed JSON which can easily be read and is easier for git GUI applications to manage
-
Has a reduced size when we embed graphics
-
Uses a schema for complex output types (i.e. images, animations) with the pipes in place to have custom renderers or applets embedded in notebooks
-
Normalizes line endings on save which makes sure notebooks are the same on Windows vs Linux/Mac
-
Allows some transparency into the notebook format with what gets stored
-
All outputs from IDL are stored as a JSON string. This is to reduce file size and improve parsing speed (future concept is embedding plots/graphs which requires data that pretty-printed JSON would make unreasonably large)
For all notebooks, we add extra catches when attempting to restore notebook outputs saved in the file. This means that we can update the way outputs are stored/processed in the future without breaking notebooks completely. You would just need to re-run cells and regenerate outputs in the format that we expect it to be.
Fix an un handled case for auto-doc with structures where we didn't add spaces after an empty structure definition (even though that is invalid for IDL).
Fixed a bug with notebooks where cells weren't cleaned up properly and you would get fake duplicate routines reported as a problem. Added tests to catch this in the future.
Fixed a bug where docs header regular expressions were being over-zealous and grabbing more than they should.
Fixed some bugs with styles of embedded graphics not appearing quite like they should when the notebooks are small.
Fixed a bug where error resolving completion would show a message about hover help
Fixed a bug where auto-complete would fail when you had fatal syntax errors in code and for/foreach loops
Fixed a bug where auto-complete in notebooks wouldn't get the code from the cell for the right auto-complete user experience
Further increase node.js timeout for edge cases where it wouldn't respond/start fast enough
Changed the formatting behavior for structures when they have line continuations.
-
Before:
!null = $ {MyStruct, $ _foo: 5} !null = $ { $ _foo: 5}
-
After:
!null = $ {MyStruct, $ _foo: 5} !null = $ { $ _foo: 5}