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 |
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 (`obj.foo[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. |
| 38 | |
| 39 | |
| 40 | == Library / Run-time == |
| 41 | |
| 42 | Added new `CobraCommand` class to the std lib for conveniently finding and invoking the Cobra command line program from within Cobra. Example usage is r = CobraCommand.find.run(-c foo.cobra) and there are more details in the doc strings. |
| 43 | This will subsume the CobraCore shared methods that do the same thing. |
| 44 | It is now easier to specify that you want the .exe and not just the cobra script. |
| 45 | New env vars COBRA_COMMAND_PATH and COBRA_EXE_PATH are supported. Old COBRA env var is not. |
| 46 | |
| 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. |
| 51 | |
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. |
| 60 | |
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). |
| 74 | |