Status Report: March 2018

This month I got the release out that I had been promising for a couple of months. We decided to change the numbering to 1.x from the previous 0.x release numbering for two reasons: One, we’ve broken backward compatibility with any pre-Java8 products — IDEA 15.x and earlier; the second is that the product has been past the minimum viable product stage for a few years now, and there is no reason to continue to make people think that it’s not ready for prime time. That’s not to say that the product is full-featured, or that we’re done by any means.

The folks over at FlowPlay are seeing some performance issues with the new release.  Firstly, a high-CPU usage on macOS, which I haven’t been able to duplicate yet.  Secondly, overall slowdown when typing, with the engineers being able to type several characters ahead of what is displayed on the Windows platform.  I have spent some time on the issue and have some leads on the Windows side, but what I have found is inconsistent.  I’ll keep looking.  In the mean time, if others are seeing the issue, let us know what your setup is (e.g. platform, versions, etc.).

I believe that Flash Debugging is working properly now, but I need you folks to test it and let me know if it’s working for you. The last public release has all of my changes addressing the issue. I can reliably start the AIR debugger *as long as* the debugger is associated with .SWF files at the OS level. Another way to think about it is that simply typing the .SWF name on the command line should launch the app in the AIR player. If it does, then OpenFL — and IDEA for non-OpenFL setups — can run the application; if it does not, then neither can and the AIR debugger must be associated with the .SWF file extension.

What I did this month for my sponsors:
– Flash debugging fixes:
o Projects now use a better algorithm to find and start the built .SWF files.
o Unified calculations of run target names.
– Map Initializers
o Parse map initializers as their own entity instead of treating them like arrays.
o Add new rules for type checking of map initializers. (Removed error annotations.)
– CPU Over-use resolution (incomplete)
o Found Java8 issue on Windows.

Other things I worked on:
– Add local variable type checking (for error annotations).
– Improve array type checking.
– Support arrow functions when evaluating types.
– Infer function typing from code blocks.
– Add $trace() to the list of built-in functions to recognize.
– Made a release.

Community Contributions (mostly @mayakwd):
– Use class paths as sources for the standard lib.
– Validate SDK entries
– Help from @mayakwd finding and fixing an NPE when using “dev” versions of haxelibs.

Next Month:
– Duplicate and fix the CPU over-use issue on macOS.
– 1.0.1 Point release!
– IDEA 2017.3 and 2018.1 support and bugs fixed.
– More work toward parsing and syncing project files, leading to the automatic managing of compiler conditional definitions.

Have a great month!
-Eric

Status Report: February 2018

Hi folks,

I did lots of things this last month, but for a number of reasons I did not get a release out the door. That’s my first goal, but it requires that I get Flash debugging working again for projects that are not OpenFL-based. In my attempt to fix debugging for OpenFL last month, I broke it in other ways. Once that’s fixed, I’ll get the next release out and get moving on other things.

Speaking of that feature-test build I made last month, did anybody test it? I haven’t heard anything, so “No news is good news,” I guess.

For my sponsors:
– More work on collapsible regions
– Fixes to error message parsing.
– Proper Map initialization. (e.g. Understand [ “one” => 1, “two” => 2] as a Map instead of an Array.)
– More changes to Flash Debugging. (Incomplete)

Other things I worked on:
– Added C#-style regions to recognized region folding markers.
– Fixed a couple of NPEs.

Things the community contributed:
– Allow resolving of Enum values.
– Added Enum values to completion lists.
– Some tweaks to import optimizations.
– Added folding for documentation comments.

Next months goals (same as last month :/ ):
– Fix Flash debugging for non-OpenFL projects.
– Make a release.
– 2017.3 support and bugs fixed.
– More work toward parsing and syncing project files, leading to the automatic managing of compiler conditional definitions.

Have a great month, everybody!!

Status Report: January 2018

This month’s status report is a bit late coming because I wanted to report on some things I thought you’d be excited about!

Pre-release Build Available

There’s a test build available on my personal github fork.  You can read the release notes here.  A couple of highlights.

  • Flash debugging fixes:  For OpenFL, We no longer use the “lime test” build command.  Instead we use its component “lime update,” “lime build,” and “lime run” commands. There should be much less chance of a time-out now that the debugger won’t start until after a successful build and won’t have to wait for the build to complete after the debugger has already started and is waiting for a connection.  In other words, the old method was: 1) start debugger (which waits for the app to connect) 2) lime test (which internally ran a build);  the new method is 1) lime update, 2) lime build, 3) start debugger, 4) lime run.  This also allows removing the Pre-Run “Build” task to be effective now — you can run the .SWF file from the last successful build.
  • Some fixes to improve error recognition and reporting.  Flash target builds should now always stop if there is a build error.
  • Folding has been implemented. You can now fold many types of sections within your code:
    + Imports and using sections (Thanks to Ilya Malanin! a.k.a. @mayakwd)
    + Classes, Methods, and, really, anything with curly braces (Also, thanks to Ilya.)
    + Compiler conditional sections (#if, etc.)
    + And, per FlowPlay’s specific request… Commented regions, so your sections marked with “//region Title … //endregion” can now be collapsed to a single line.
  • Support for HL and CPPIA targets.

The test build also has a number of the new things that we expect to release in the next week or so.  We are waiting for me to get the IDEA 2017.3-specific bugs fixed and then it will roll out.  In the mean time, if you have some time, Please, Please, test it!

Other things I worked on this month:

  • Removing IDEA v14 and 15 support.
  • Adding IDEA 2018.1 build support.
  • Parsing Haxe project files and keeping the IDEA project settings in sync with them. (Incomplete.)

Things the community contributed:

  • Several NPE fixes for scenarios that I don’t usually see.  (Multiple contributors.)
  • Initial folding support for import statements and body blocks. (Ilya)
  • Wild-card imports optimization. (Ilya)
  • Rework resolving for imports. (Ilya)

Next month’s goals:

  • Flash target builds should now always stop if there is a build error.
  • 0.12.0 release (or maybe we’ll call it 1.0?).
  • More work toward parsing and syncing project files, leading to the automatic managing of compiler conditional definitions.

 

Status Report: December 2017

Well, another month and year has flown by. I hope that everyone had a very happy holiday season, and here’s wishing you all a fun and profitable new year!

What I worked on this month:

– I’m still working on getting the debugger to start up reliably for Flash Debugging. I was working on getting the file naming right for the .SWF files when running and debugging because there are several wrong solutions in place. Well, that didn’t get completed, and while thinking about things, I thought that there might be a better approach, which I’m experimenting with at the moment. I also realized that when I broke up the lime commands from “lime test” into “lime build” and “lime run”, there is a “lime install” step missing. I’m addressing that last point at the moment, then I’ll probably get a test build out, and then I’ll get back to getting .SWF files to run reliably.

– There was a huge community submission adding new language model classes, laying the foundation for a resolver rewrite.  Roughly 6000 lines of code were added and about 4000 removed.  That review took a week all by itself!  I sure appreciate the help, though.  That code isn’t in the mainline yet; there are a few changes that we are still discussing.

Again, Happy New Year!