ScriptCS v0.16.0 Release Notes

Release Date: 2016-04-03 // about 8 years ago
  • 0.16.0 is here!

    📦 Go get it via svm, Chocolatey or Homebrew!

    This release brings a MAJOR upgrade to scriptcs.

    🆕 New Roslyn!

    The most prominent feature is we've upgraded to newer Roslyn 1.0.0-rc2 bits! This is a big deal as we've been on the same bits for 3+ years and this brings some major enhancements. The new Roslyn finally brings async/await and dynamic to scripts running on .NET. Not only that, it includes awesome new language enhancements of C# 6.0, like Auto-Property initializers!

    Note - We are updating to Roslyn 1.0.0-rc2 and not the latest Roslyn 1.2.1 as the newer bits require .NET 4.6+ and this allows us to keep .NET 4.5 compat.

    🏁 Look below and see dynamic and Auto-Property initializers in action (On Windows)!

    🍱 screen shot 2016-04-02 at 9 41 49 am

    And here is an example using async/await!

    🍱 screen shot 2016-04-02 at 12 30 25 pm

    REPL enhancements from Mono

    🚀 This release includes enhancements in our REPL to make it behave similar to the Bash shell. This includes Emacs keybindings, history, searching, etc. Special thanks to @migueldeicaza for this contribution.

    👀 Below you can see I have pressed ctrl+R to use reverse-search to find the code that I had entered with a. As it is reverse it found the last line that I had entered.

    🍱 screen shot 2016-04-02 at 9 45 18 am

    Debugging in Visual Studio

    🚀 A long sought after feature for scriptcs has been to enable debugging in Visual Studio. In this release we introduce the :openvs command. From the repl, you can type :openvs "[filename]" and it will create a solution for you including all the files and subdirectories in the same folder. It will then launch Visual Studio where you can execute the script and debug! You can add breakpoints, watches, etc.

    👀 Below you can see a screenshot:

    🍱 debugging

    💥 Breaking API Changes

    Low Impact - The IConsole.ReadLine method signature has changed to string ReadLine(string prompt). This was necessary to properly support the latest REPL enhancements. This change will impact custom hosters who have provided their own IConsole implementation and it will need to get updated to support the new signature.

    Issue Details

    🆕 New: Upgrade to Roslyn packages 1.0.0 rc2 #1059
    🆕 New: OpenVS #1109
    🆕 New: Provide editing capabilities using Mono.Terminal.GetLine. #1118 / #1119

    🛠 Fixed: Cannot use array initializers #1070
    🛠 Fixed: Error on double handling in REPL #864
    🛠 Fixed: Support the dynamic keyword in the Roslyn engine #1057
    🛠 Fixed: v0.9.0 - Using Generic Method Call Results In "ERROR: Unable to change after type..." #580
    🛠 Fixed: Stack overflow in Roslyn when local variable is used before declared #691
    🛠 Fixed: Cannot call external methods with params args #1066
    🛠 Fixed: Change cache folder to being script-local #1086
    🛠 Fixed: NullReferenceException running script (x86 Win10, .NET 4.6) #1095
    🛠 Fixed: Compilation error using dynamic #1110
    🛠 Fixed: scriptcs -install gives a very verbose error for package not found #1114

    Thanks to our contributors!!!

    🚀 Thank you to the following people outside of our core team who contributed filing issues and sending PRs to this release:

    @aikeru, @ClockEndGooner, @ChrSteinert, @migueldeicaza, @nesteruk, @olagjo and @sapiens

    Thanks to Microsoft and the Roslyn team!

    🚀 This release would not have been possible without the support of the Roslyn team and their awesome move of releasing Roslyn under OSS!

    ⚡️ Look for an update in the future that will move on to the latest Roslyn bits!