Changes between Version 1 and Version 2 of ReleaseNotes_0.9.4

05/18/13 06:43:57 (5 years ago)



  • ReleaseNotes_0.9.4

    v1 v2  
    1111== Language == 
    13  * Mixins 
    14    * Mixins can now declare protected and private members. 
    15    * Mixins can now be used as proper types, such as the type of a parameter. 
    16    * Fixed: Cannot declare a mix-in inside a namespace. 
    17    * Fixed: Mixins cannot use the `from` declaration form of properties. 
    18  * The `power-to` operator as in `base ** exponent` is now supported. 
    19    * All numeric types work. 
    20    * Augmented assignment (`**=`) works. 
    21    * For `b ** e` where both are ints, a negative int value for `e` will throw an InvalidOperationException. You can address this by casting either term to a fractional type (`number`, `decimal`, `float`). 
    22  * Division 
    23    * Added `//=` for augmented assignment of integers with "integer division". This corresponds to the binary arithmetic operator `//`. 
    24    * Added error check for using "augmented fractional division" to ''modify'' integers: 
    25      * Cannot use fractional division (/=) to modify an integer. Use integer division (//=) instead. 
    26    * Fixed: The operator `//=` for fractional types does not floor the result like `//` does, making the two operators inconsistent. 
    27  * Added support for `int` literals outside a 32-bit range. 
    28    * Inferred types are now int, uint, int64 and uint64. 
    29    * Works for decimal and hexadecimal bases. 
    30  * Added new error check: Cannot raise events for other objects. 
    31  * Don't run the tests of referenced libraries by default. 
    32  * Fixed: Test blocks in generic classes ignored. 
     13 * Added `readonly` keyword. 
     14 * Improved parsing of method sections with respect to contracts, `test` and `body`. 
     15 * Fixed: Enum members that are the same name except in case cause an internal compiler error. Add error check: Cannot have members with the same name in different case ("foo"). 
     16 * Fixed: Incomplete support for `vari` nilable parameters 
    34 == Library == 
     18== Compiler == 
    36  * In CobraCore, added `.isRunningOnWindows` and `.isRunningOnMac`. 
    37  * In CobraCore, changed `.isRunningOnMono` and `.isRunningOnUnix` from properties to methods. 
    38  * Moved `IList<of>.numbered` up to `IEnumerable<of>`. 
    39  * Added `.first`, `.take` and `.skip` extension methods to `IEnumerable<of T>`. 
    40  * Added the overload `IEnumerable<of>.numbered(start as int)`. 
     20 * When method calls have incorrect number of arguments or types, give the method sigs. 
     21 * Turned off reflection-only assembly loading. Use only if the `COBRA_REFLECTION_ONLY` environ var is set to 1, true or yes. 
     22 * Fixed: Some `in` expressions, especially those against arrays, can give an invalid error message. 
     23 * Fixed: A single line comment made with `/# ... #/` silently truncates the source file. 
     24 * Fixed: The compiler can fail with an internal error when reading certain libraries (generic extension methods with test sections). 
     25 * Fixed: The compiler can produce an internal error in obscure situations involving lambda expressions that have an error. 
     26 * Fixed: Unfinished multi-line comments are silently ignored. 
     27 * Fixed: An inline comment nested inside a multi-line comment is erroneously treated as the end of the multi-line comment. 
     28 * Fixed: Arrays of nilables produce false compilation errors. 
     29 * Fixed: Shared constructor wants to initialize instance variables of reference types. 
     30 * Fixed: In compile-time error recovery situations, there are extraneous warnings regarding the `inherits` operator and the `passthrough` type. 
     31 * Fixed: Cobra internal error on mixin method collision. 
     32 * Fixed: Poor error message for whitespace between method name and opening paren for a call. 
     33 * Fixed: `-test` option doesn't handle `@args -target:lib` 
     34 * Fixed: False compilation error for complex expressions involving indexing followed by calling (`[i]()`). 
     35 * Fixed: Internal error on some forward references. 
     36 * Fixed: A program left unfinished in a parameter list results in a Cobra internal error. 
     37 * Fixed: Line numbers mysteriously jump around during debugging. Has to do with local vars. 
     40== Library / Run-time == 
     42Added new `CobraCommand` class to the std lib for conveniently finding and invoking the Cobra command line program from within Cobra. Example usage is r = foo.cobra) and there are more details in the doc strings. 
     43This will subsume the CobraCore shared methods that do the same thing. 
     44It is now easier to specify that you want the .exe and not just the cobra script. 
     45New env vars COBRA_COMMAND_PATH and COBRA_EXE_PATH are supported. Old COBRA env var is not. 
     47 * Split `CobraCore.runAllTests` into `.runAppTests` and `.runAllTests`. 
     48 * Optimization: Add an In() run-time support overload for int arrays. 
     49 * Fixed: Dynamic arithmetic operations throw an exception when used with small int types (int16 for example). 
     50 * Fixed: CobraCore.findCobraExe can fail to find cobra.exe when run under sudo as in sudo mono foo.exe. 
    4253== Command Line == 
    44  * Enhanced `-native-compiler` to search the system `PATH` if the specified compiler could not be found by the Process class. 
    45  * In `cobra -about`, print a warning if `Cobra.Core.dll` is not found next to `cobra.exe`. 
    46  * Fixed: `cobra -embed-run-time` requires write perms to the install directory. 
    47 The -embed-run-time/-ert option now makes a local copy of Cobra.Core which is removed later. 
     55 * New -show-shared-data option used during compilation will output all shared/global data in the program. 
     56 * Give a proper error message for `-pkg:` if the `pkg-config` command cannot be found. 
     57 * The output from `-timeit` can be unreadable in some environments. 
     58 * For `-turbo`, don't exclude `trace` statements anymore. 
     59 * Added `-embed-version` compiler option. Embed a version string in the generated assembly. If version is not explicitly given, embed the current Cobra compiler version. 
    4962== Installer == 
    51  * Support .NET 4.5 (actually released in Cobra 0.9.1) 
    52  * Make the Windows-based install-from-workspace.bat robust against the user's starting directory. 
    53  * Use the environment variables "PROGRAMFILES" and "ProgramW6432" instead of hard coding "\Program Files [(x86)]". 
     64 * Check for another error condition where the installer package has the same path as the install target. 
     65 * Fixed: Fails awkwardly when placed at target directory. 
    5568== Other == 
    57  * Advanced the JVM back-end (could still use open source volunteers). 
    58  * Better reporting of column number in error messages. 
    59  * Updated Notepad.cobra sample to .NET 4.0. 
    60  * Added dump-assembly.cobra command line util in Supplements/. 
    61  * Improvements to the online wiki. 
    62  * There have been concurrent improvements to the MonoDevelop add-in for Cobra, by Ramon Rocha. 
     70 * Improved Samples/Sizes.cobra. 
     71 * dump-assembly.cobra 
     72   * Moved from Source/ to Supplements/ as originally intended 
     73   * Support reading a filename (rather than just a partial name or assembly name). 
    6476== Credits == 
    6981 * hopscc 
    7082 * kobi7 
    71  * vazub 
    72  * jaegs 
     83 * Ajrat 
     84 * DelphiGuy 
     85 * torial 
     86 * didrik 
     87 * nevdelap 
    7489Additional people contributed through testing and discussion.