Cobra 0.9.2 Release Notes

2012-11-26 for Cobra 0.9.2
2012-12-01 for Cobra 0.9.3 patch release for installing on 64-bit Windows

Below are the changes included in this release. For even more details, browse the revision log.

To get Cobra 0.9.2/3, visit  Downloads.


  • Mixins
    • Mixins can now declare protected and private members.
    • Mixins can now be used as proper types, such as the type of a parameter.
    • Fixed: Cannot declare a mix-in inside a namespace.
    • Fixed: Mixins cannot use the from declaration form of properties.
  • The power-to operator as in base ** exponent is now supported.
    • All numeric types work.
    • Augmented assignment (**=) works.
    • 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).
  • Division
    • Added //= for augmented assignment of integers with "integer division". This corresponds to the binary arithmetic operator //.
    • Added error check for using "augmented fractional division" to modify integers:
      • Cannot use fractional division (/=) to modify an integer. Use integer division (//=) instead.
    • Fixed: The operator //= for fractional types does not floor the result like // does, making the two operators inconsistent.
  • Added support for int literals outside a 32-bit range.
    • Inferred types are now int, uint, int64 and uint64.
    • Works for decimal and hexadecimal bases.
  • Added new error check: Cannot raise events for other objects.
  • Don't run the tests of referenced libraries by default.
  • Fixed: Test blocks in generic classes ignored.


  • In CobraCore, added .isRunningOnWindows and .isRunningOnMac.
  • In CobraCore, changed .isRunningOnMono and .isRunningOnUnix from properties to methods.
  • Moved IList<of>.numbered up to IEnumerable<of>.
  • Added .first, .take and .skip extension methods to IEnumerable<of T>.
  • Added the overload IEnumerable<of>.numbered(start as int).

Command Line

  • Enhanced -native-compiler to search the system PATH if the specified compiler could not be found by the Process class.
  • In cobra -about, print a warning if Cobra.Core.dll is not found next to cobra.exe.
  • Fixed: cobra -embed-run-time requires write perms to the install directory.

The -embed-run-time/-ert option now makes a local copy of Cobra.Core which is removed later.


  • Support .NET 4.5 (actually released in Cobra 0.9.1)
  • Make the Windows-based install-from-workspace.bat robust against the user's starting directory.
  • Use the environment variables "PROGRAMFILES" and "ProgramW6432" instead of hard coding "\Program Files [(x86)]".


  • Advanced the JVM back-end (could still use open source volunteers).
  • Better reporting of column number in error messages.
  • Updated Notepad.cobra sample to .NET 4.0.
  • Added dump-assembly.cobra command line util in Supplements/.
  • Improvements to the online wiki.
  • There have been concurrent improvements to the MonoDevelop add-in for Cobra, by Ramon Rocha.


Cobra is a community-driven, open source project under the MIT license. For this release, thanks go to:

  • nerdzero
  • hopscc
  • kobi7
  • vazub
  • jaegs

Additional people contributed through testing and discussion.

See Also