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