Skip to content

Releases: roblox-csharp/roblox-cs

1.2.0

03 Aug 16:25
81a4ab8
Compare
Choose a tag to compare
  • Add -w/--watch option to CLI
  • Transform file-scoped namespaces to namespace declarations
  • params keyword parameters codegen (varargs)
  • Relational pattern codegen (e.g. case >= 1)
  • const declaration codegen
  • Fixed ClassInstance#$base() RuntimeLib method
  • Fixed full qualification issues
  • Warn if using bitwise operators with 64 or 128-bit number types
  • Throw if using extern keyword
  • New roblox-cs.yml fields:
    • EmitNativeAttributeOnClassOrNamespaceCallbacks (bool)
    • EnabledBuiltInTransformers (string[])

New Contributors

Full Changelog: 1.1.2...1.2.0

1.1.2

02 Aug 01:08
Compare
Choose a tag to compare
  • try/catch/finally codegen
  • throw codegen
  • nameof codegen

Full Changelog: 1.1.1...1.1.2

1.1.1

01 Aug 22:32
Compare
Choose a tag to compare
  • this expression codegen (#8)
  • Removed Console.Write & Console.WriteLine in favor of print
  • Fixed Utility.FixPathSep() replacing ../ with .
  • Fixed debug transformer not adding file info if invocation is fully qualified
  • Fixed Roblox.Globals members fully qualifying
  • Implicitly add using Roblox; & using static Roblox.Globals;

Full Changelog: 1.1.0...1.1.1

1.1.0

30 Jul 21:49
Compare
Choose a tag to compare
  • Variables & assignment now emits declarations from is patterns
  • Fixed initializers being emitted for type patterns (#7)
  • Fixed one entry point for both client & server not being allowed (#3)
  • Fixed member access not fully qualifying at top-level
  • Revamped CLI
    • --help flag
    • -v/--version flag
    • --init option (to initialize a project)

Full Changelog: 1.0.8...1.1.0

1.0.8

30 Jul 19:20
Compare
Choose a tag to compare
  • Do statement codegen (e.g. do Console.WriteLine("epic") while (true);)
  • New anonymous type codegen (e.g. var x = new { IsCool = true };
  • Included System.Collections library
  • Macro'd Equals method to __eq metamethod and a == b on call
  • Throw if using unsupported syntaxes:
    • Abstract classes (for now)
    • Virtual methods in interfaces (for now)
    • Unsafe contexts
    • Partial modifier (for now)
    • Refs
    • Using statements
    • Goto statements/labels
  • Write class instead of the class name when referring to static class members
  • Fixed files from obj/ being included in compilation

Full Changelog: 1.0.7...1.0.8

1.0.7

29 Jul 06:15
Compare
Choose a tag to compare
  • is (and is not) pattern expression codegen (e.g. instance is BasePart part)
  • Fixed nested safe navigation
  • Transform BinaryExpressions using 'is' operator to IsPatternExpressions

Full Changelog: 1.0.6...1.0.7

1.0.6

29 Jul 00:43
Compare
Choose a tag to compare
  • Emit Luau types for strict type checking
  • Added Native attribute to run functions/constructors natively
  • Macro string methods which have the same functionality as their Luau counterparts
  • Parenthesized expression codegen
  • Added enum declaration codegen
  • Switch statement codegen (including when clause as well as not, discard, and declaration patterns)
  • Fixed for statements with no declarations/conditions/incrementors
  • Added @native attributed to class/namespace callbacks in emitted code
  • Added EntryPointRequired option to roblox-cs.yml config

Full Changelog: 1.0.5...1.0.6

1.0.5

25 Jul 05:03
Compare
Choose a tag to compare
  • rbxcs_include folder is now located via Rojo project file
  • Fixed superclass names passed into CS.classDef() (#1)
  • Check inherited members when prepending self./class. to a member
  • Fixed some inheritance metatable issues
  • Local function declaration codegen (#5)
  • Namespace loading issues (#2)

Full Changelog: 1.0.4...1.0.5

1.0.4

23 Jul 00:46
Compare
Choose a tag to compare
  • Inheritance class A : B & base initializers public A() : base(a, b)
  • Analyze namespaces for members used as values instead of only using directives

Full Changelog: 1.0.3...1.0.4

1.0.3

21 Jul 20:53
Compare
Choose a tag to compare
  • default keyword support
  • Omit require() if only types are used from imports
  • Add type stubs for most built-in Luau libraries
  • Move Roblox types to different repository
  • Create & macro ToNumber, ToFloat, etc. methods to tonumber()
  • Transform @ out of identifier names
  • Disallow Luau keywords in identifier names
  • Transform ToString method identifiers into __tostring
  • Macro bitwise operators to bit32 library methods
  • Various fixes

Full Changelog: 1.0.2...1.0.3