Wiki

Changes between Initial Version and Version 1 of ReleaseNotes_0.9.6

Show
Ignore:
Timestamp:
12/23/13 09:09:26 (4 years ago)
Author:
Charles
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ReleaseNotes_0.9.6

    v1 v1  
     1= Cobra 0.9.6 Release Notes = 
     2 
     32013-12-23 
     4 
     5To get Cobra 0.9.6, visit [http://cobra-language.com/downloads/ Downloads]. 
     6 
     7Below 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 
     9For even more details, browse the [http://cobra-language.com/trac/cobra/log/ revision log] which includes check-in comments and source code changes. 
     10 
     11This 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 
     15One 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 
     29class 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 
     46class 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 
     88def runAndCaptureOutput as ProcessOutput? 
     89def runAndCaptureOutput(verbose as false) as ProcessOutput? 
     90}}} 
     91The 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 
     122Cobra 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 
     132Additional 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