| 1 | = Cobra 0.9.6 Release Notes = |
| 2 | |
| 3 | 2013-12-23 |
| 4 | |
| 5 | To get Cobra 0.9.6, visit [http://cobra-language.com/downloads/ Downloads]. |
| 6 | |
| 7 | Below are the changes included in this release. There are 5 enhancements, 12 refinements, 17 fixes and new IDE support. At this point, the Cobra language is very stable and we're mostly refining and fixing as we put it into practice. |
| 8 | |
| 9 | For even more details, browse the [http://cobra-language.com/trac/cobra/log/ revision log] which includes check-in comments and source code changes. |
| 10 | |
| 11 | This release requires .NET 4.0 and higher (.NET 4.0 is now three years old). Cobra also runs on Mono and is tested on both Mac and Linux. |
| 12 | |
| 13 | == IDE == |
| 14 | |
| 15 | One of the most notable recent developments for Cobra is actually outside the compiler. The Cobra add-in for MonoDevelop / XamarinStudio offers |
| 16 | * syntax highlighting |
| 17 | * background compilation |
| 18 | * member completion suggestions |
| 19 | * parameter completion |
| 20 | * mouseover tooltips |
| 21 | * go to declaration |
| 22 | |
| 23 | |
| 24 | == Language == |
| 25 | |
| 26 | * Support optional and named parameters. For example: |
| 27 | {{{ |
| 28 | #!cobra |
| 29 | class X |
| 30 | |
| 31 | def main |
| 32 | .show('foo') |
| 33 | .show('bar', 5) |
| 34 | .show('baz', count = 3) |
| 35 | .show(s = 'can', count = 2) |
| 36 | |
| 37 | def show(s as String, count as int = 2) |
| 38 | for i in count, print s |
| 39 | print |
| 40 | }}} |
| 41 | |
| 42 | |
| 43 | * Added modifier sections in type declarations. For example: |
| 44 | {{{ |
| 45 | #!cobra |
| 46 | class C |
| 47 | |
| 48 | private, shared |
| 49 | |
| 50 | def foo |
| 51 | pass |
| 52 | |
| 53 | def bar |
| 54 | pass |
| 55 | |
| 56 | def baz |
| 57 | pass |
| 58 | }}} |
| 59 | |
| 60 | |
| 61 | == Compiler == |
| 62 | |
| 63 | * Improved error checking on arguments of initializer/constructor calls. |
| 64 | * Improved error checking on missed `of` in generics call. |
| 65 | * Fixed: An unfinished assignment statement causes an internal error instead of a normal error message ("unexpected end of file"). |
| 66 | * Fixed: Internal error for dynamic argument on a method overload. |
| 67 | * Fixed: Internal error if source file ends in the middle of a comma separated expression. |
| 68 | * Fixed: Cobra internal error when mixin declared after class. |
| 69 | * Fixed: In libraries, a field and property that differ only by case of a type with the same name triggers an internal compiler error. |
| 70 | * Fixed: Token on line after end of docstring causes parser confusion and 'useless error'. |
| 71 | * Fixed: Calling a method with an underscore name from within an initializer/constructor that is overloaded, causes an internal compiler error. |
| 72 | * Fixed: The compiler gracefully handles I/O exceptions when trying to delete intermediate files, but not unauthorized access exceptions. |
| 73 | * Fixed: If the compiler cannot delete an intermediate file, no warning is recorded. |
| 74 | * Fixed: Cobra gives a false parse error if there is a blank line after a doc string and before the get section of a property. |
| 75 | * Fixed: Using a namespace as a generic parameter can cause an internal error. |
| 76 | * Fixed: Raising a `shared` event causes an internal compiler error. |
| 77 | * Fixed: An anonymous method inside a method with a local variable named `result` causes a false compilation error. |
| 78 | * Fixed: Some CLR libraries cause an internal error when read by the compiler, specifically static readonly generics. |
| 79 | * Fixed: Some object creation expressions can cause an internal compiler error if one or more of the arguments has an error. |
| 80 | |
| 81 | |
| 82 | == Library / Run-time == |
| 83 | |
| 84 | * Changed Cobra's Set<of T> to inherit from .NET 4's HashSet<of T>. |
| 85 | * Added new Process extension methods: |
| 86 | {{{ |
| 87 | #!cobra |
| 88 | def runAndCaptureOutput as ProcessOutput? |
| 89 | def runAndCaptureOutput(verbose as false) as ProcessOutput? |
| 90 | }}} |
| 91 | The return value can be queried for .standardOutput, .errorOutput and .combinedOutput. |
| 92 | * In `CobraCommand.find`, check the C: drive if an attempted file system path is not found on the current drive. |
| 93 | * New compiler API improvements. See changeset:2987 changeset:2990 changeset:3014 changeset:3016 |
| 94 | * Fixed: Accessing Keywords.groups in Cobra.Compiler throws an exception |
| 95 | * Added `INode.goToDefinitionLocation` for IDEs. |
| 96 | |
| 97 | |
| 98 | == Command Line == |
| 99 | |
| 100 | * Enhanced -lib: option to accept {!EnvironmentVariables} and {@latest}. |
| 101 | * Minor tweaks to -native-compiler-arg command line option. Now singular. Was always an accumulator. |
| 102 | |
| 103 | |
| 104 | == Installer == |
| 105 | |
| 106 | * There is no explicit -net4 option as .NET 4.0 and higher is now the base requirement. |
| 107 | * Verify that libraries installed in the GAC have the correct version number. |
| 108 | * Locate the gacutil that comes with Visual Studio 2012. |
| 109 | * Added installer support for Windows 8.1 SDK. |
| 110 | * Fixed: When the installer is testing that hello.cobra can be compiled with the new compiler, it does not respect any -platform argument that was passed to the installer, resulting in an error. |
| 111 | |
| 112 | |
| 113 | == Other == |
| 114 | |
| 115 | * Added MonoDevelop solution file for the Cobra compiler. |
| 116 | * Added msbuild/xbuild support. For example, there is now a CobraCompiler ToolTask. See also changeset:3052 |
| 117 | * There have been plenty of documentation improvements through the wiki. See StandardLibraryExtensionMethods, which will lead to other documentation pages. |
| 118 | |
| 119 | |
| 120 | == Credits == |
| 121 | |
| 122 | Cobra is a community-driven, open source project under the MIT license. For this release, thanks go to: |
| 123 | |
| 124 | * hopscc |
| 125 | * nerdzero |
| 126 | * dwilliamii |
| 127 | * Chasm |
| 128 | * DelphiGuy |
| 129 | * Jonno |
| 130 | * sephthir |
| 131 | |
| 132 | Additional people contributed through testing and discussion. |
| 133 | |
| 134 | |
| 135 | == See Also == |
| 136 | |
| 137 | * [http://cobra-language.com/downloads/ Downloads] |
| 138 | * previous: [wiki:ReleaseNotes_0.9.4] |
| 139 | * LanguageTopics |
| 140 | * LibraryTopics |