Starting with this release i'm now building native packages again. I haven't done this since version 2.6.0 which was like a year and a half ago, because javapackager was removed from the JDK. Luckily it's being re-added as jpackage in JDK 14 so i just used an early access version to make the packages.
For linux, in addition to a deb package, there is now an AppImage, which is a really nice format that is becoming popular now. I'm not building a native package for Mac OS for now, so mac users will need to use the jar. I don't want to pay apple $100 just to be able to sign the damn thing. I gave my mac to my sister anyway, so it's a pain to even build for it.
I also updated the templates. The game template now creates a play-cljc project, instead of play-cljs (my old library). I also updated quil in the graphics template so it should actually work on modern JDKs now. Lastly, i fixed a problem where the horizontal scroll bar would cover up the last line of the file, making it impossible to see.
In this release i finally gave in and decided to build jars for each OS separately. I was always annoyed at how large the nightcode jar became (100+ MB) after the JDK 8 -> 11 transition, and most of that was because JavaFX depends on native libraries, so the jar file had to contain binaries for all three OSes.
I resisted building separate jars for a long time because, if you think about it, it's pretty ridiculous. The whole point of jar files is to be platform independent. But i think a 100+ MB jar file is absurd for a small and relatively feature-less IDE. The new platform specific jars are much smaller.
In retrospect i miss the simplicity of swing and kind of regret moving to JavaFX. The upside is that it made lightmod possible, which i couldn't have built with swing since it needs a webview. But i don't think nightcode benefited much from the transition.
You can find links to each jar on the website: https://sekao.net/nightcode/
This release updates javafx to 13 and clojure to 1.10.1. I also tried to fix issues with viewing/editing non-clojure files. Previously they were using codemirror but now all files (clojure and non-clojure) use paren-soup, so they should behave consistently now. Unfortunately it looks like the jpackage tool is still under development so for now i can only update the jar link on the website.
This release updates Clojure to 1.10 along with many other libraries, and fixes several editor bugs. It also uses the new external version of JavaFX. Starting with Java 11, JavaFX has been extracted out of the JDK and distributed as a library. I think this is a good thing, even though it significantly increased the size of Nightcode's jar.
The bad news is that Java 11 no longer includes the javapackager tool, so I can't build native installers. There is a successor in the works, but it looks like we won't get it until Java 13 (which should be this year if they release every 6 months). I decided to cut a release now, but only the JAR link on the website will have the new version. The native installers will still be 2.6.0 until the new packager is released.
Apparently this is the 100th release of nightcode...dear god what have i done with my life. 60 of those were the 1.x version and the rest are 2.x. It's my oldest active project...the 0.0.1 release was August 2013! I remember that version had some kind of infinite loop bug that would max out your CPU...good times.
Three years later I released the rewrite...but admittedly it was extremely rough and took a very long time to stabilize. Probably the worst issue was my mother of all bugs which i am sure bit a lot of people and dissuaded them from trying nightcode again. I think it's become pretty decent since then, but lately I've almost exclusively used Nightlight as my editor. These days nightcode is basically in maintenance mode because I'm not dogfooding it as much.
Anyway, this release brings fixes for the "Run with REPL" feature. On Windows it was broken in Boot projects, and in the Linux deb/rpm versions I think it was just broken across the board. I'm now using Boot's newish task called
bare-repl which works much better. If you see an error about the task not existing, you probably have an old version of Boot installed and should update it with
I also improved the editor in non-Clojure files. I also added
carp to the list of file extensions that are treated as Clojure files, so you can edit Carp projects in Nightcode. Lastly the music template is updated to the latest version of edna. Keep in mind that even though Nightcode's instaREPL doesn't work with most 3rd party libraries, it actually does work with edna! I cheated and made Nightcode keep a copy of the library internally.
This release brings the same instaREPL improves as are in Nightlight: reader conditionals now don't throw errors, and long results are truncated. New project names are sanitized much better now. It also updates a bunch of templates. The new ones for play-cljs and edna are significantly better.
In the last release, I made the editor scroll to your cursor when you undo/redo. I didn't realize until after release that the scrolling happened before the undo/redo operation, so it wouldn't necessarily scroll to the right place.
As I mentioned before, I also updated the internal JRE to 10 and replaced the old Audio template with a new one called Music that uses my new library, edna.