Skip to content

Latest commit

 

History

History
350 lines (297 loc) · 29.6 KB

CHANGELOG.md

File metadata and controls

350 lines (297 loc) · 29.6 KB

Change log

This document describes changes between versions of rbxmk. The imperative branch is the latest unreleased version.

imperative

Incompatibilities

  • Identifiers with uppercase acronyms are renamed to lowercase to improve familiarity with Roblox's API. The following APIs are affected:
    • HTTPHeaders → HttpHeaders
    • HTTPOptions → HttpOptions
    • HTTPRequest → HttpRequest
    • HTTPResponse → HttpResponse
    • RBXAssetOptions → RbxAssetOptions
      • RbxAssetOptions.AssetID → RbxAssetOptions.AssetId
  • The RootDesc type is renamed to Desc.
  • The Optional functions under the type library are moved to constructors of the Optional type.
  • The path.expand function errors for unknown variables, or in rare cases where a path could not be located.
    • With stdin, certain variables expand to the working directory instead of an empty string. Highlights:
  • Add base64 format for encoding and decoding strings in Base64.
  • Add path.rel function to convert a path into a relative path.
  • Add plugin dump format, which enables custom dump formats.
    • Runs a Lua script in a limited environment.
    • Receives a table that describes the Lua environment, and a function to write output.
  • Add "Priority" field to libraries in dump format.
  • Add support for CFrames in rbxattr format.

Fixes:

  • Fix table.concat being unable to concatenate large tables.
  • Fix fs.dir returning an empty table instead of nil when the path does not point to a directory.
  • Fix nil pointer dereference when writing models that contain UniqueId property types.

See a comparison with the previous version for a thorough list of changes.

The Documentation page provides a complete reference for this version of rbxmk.

v0.9.1

Highlights:

  • Add support for .luau extension.
  • When a descriptor is set while encoding or decoding an instance, the service status is determined by the Service tag from instance's class descriptor instead of the instance's IsService field.
    • This improves conversion from XML Roblox formats to binary Roblox formats.
  • Add support for Optional types.
    • If a descriptor is set, optional properties are handled transparently by accepting either nil (for None), or a value of the optional's type (for Some).
    • Add types.none to create an empty Optional exprim.
    • Add types.some to create an Optional exprim that contains a value.
    • Currently, this only affects the "Model.WorldPivotData" property, which is an optional CFrame.
  • Add support for UniqueId type.
  • Improve interface of the doc command.
    • Frag mode is the default. List mode is enabled with the --list flag.
  • Add RootDesc.Copy method.

Fixes:

  • Fix descriptor IsA checks failing when superclass matches current class.
  • Fix encoding of PhysicalProperties type in rbxl format.
  • Fix options not working for the rbx formats.
  • Fix SetAttribute throwing an error when setting an attribute to nil.
  • Fix SetAttributes pulling wrong argument for dictionary.
  • Fix nondeterministic order of encoded SharedStrings in rbxl format.

Internal:

  • Switch to cobra for handling CLI.
    • When the program is executed from a GUI, a message is displayed indicating that it is a command-line tool.
    • Adds completion command for generating autocompletion scripts for various shells.

See a comparison with the previous version for a thorough list of changes.

The Documentation page provides a complete reference for this version of rbxmk.

v0.9.0

Botched release. See v0.9.1.

v0.8.0

Incompatibilities

Highlights:

  • Improve handling of values in the rbx formats.
  • Add "Desc" option to the rbx formats to set a descriptor used when encoding or decoding.
  • Add "DescMode" option to the rbx formats to set how deviations from the descriptor are handled.
  • Including --desc-* flags causes the "Enum" global variable to be set to the enums generated from the resulting descriptor.
  • Implement members for the DescAction type.
  • Add DescAction.new constructor.
  • xpcall can receive extra arguments that are passed to the called function.
  • Add path.clean function to clean file paths.
  • Add Enum field to rbxmk library to contain enums defined by rbxmk. Note that there are currently no such enums.

Fixes:

  • Fix missing properties from sym.Properties when instance has a descriptor.
  • Fix unexpected conversion failures when getting certain property types while an instance has descriptor.
  • Fix type conversion error when encoding desc-patch.json format.
  • Fix type conversion error when encoding Objects with rbx formats.
  • Fix encoding of SharedStrings in rbxlx/rbxmx formats.
  • Fix incorrect use of CDATA sections in rbxlx/rbxmx formats.
  • Fix interactive command not having descriptor flags.
  • Fix Cookie.from returning incorrect values when no cookies are found.
  • Fix Instance.new handling DataModel incorrectly.
  • Fix Instance.ClassName being settable to "DataModel".
  • Fix typeof returning "userdata" for Symbol values.
  • Fix incorrect behavior when select is called with index 0.
  • Fix Envelope field being printed as Time field when ColorSequenceKeypoint or NumberSequenceKeypoint is converted to a string.
  • Fix bounds error when calling ColorSequence.new or NumberSequence.new.
  • Fix ColorSequence.new and NumberSequence.new not verifying order of keypoints.
  • Fix NumberRange.new not verifying interval.

See a comparison with the previous version for a thorough list of changes.

The Documentation page provides a complete reference for this version of rbxmk.

v0.7.2

Fixes:

  • Fix fragments failing to resolve due to case-sensitivity.

See a comparison with the previous version for a thorough list of changes.

The Documentation page provides a complete reference for this version of rbxmk.

v0.7.1

Highlights:

  • Add Instance[sym.Properties] to get or set all properties of an instance at once.
  • Add rbxmk i command to enter an interactive prompt.
  • Add flags to run command that preset a global descriptor.
    • The --desc-latest flag uses the latest API dump from Roblox.
    • The --desc-file flag uses a file in the descriptor format (API dump).
    • The --desc-patch flag uses a file in the descriptor patch format.
  • Add --libraries flag to run and i to include and exclude libraries.

Fixes:

  • Fix download-asset flags not working.
  • Fix error handling in download-asset.
  • Fix error when getting certain string exprim types.
  • Fix path security error when running a file outside of working directory.
  • Fix runtime error produced by os.split.

See a comparison with the previous version for a thorough list of changes.

The Documentation page provides a complete reference for this version of rbxmk.

v0.7.0

Botched release. See v0.7.1.

v0.6.2

Highlights:

Fixes:

Internal:

  • Automated tests run on Windows in addition to Linux.
  • Add tool for automatically incrementing version number.
  • Improve documentation.
  • Remove concept of "sources"; they're just libraries.

See a comparison with the previous version for a thorough list of changes.

The Documentation page provides a complete reference for this version of rbxmk.

v0.6.0, v0.6.1

Botched releases. See v0.6.2.

v0.5.1

Internal:

  • Fix automated releases.

See a comparison with the previous version for a thorough list of changes.

The Documentation page provides a complete reference for this version of rbxmk.

v0.5.0

Highlights:

  • Improve handling of HTTP cookies.
  • DataModel metadata is now accessed through the Metadata symbol.
  • Rename "file" source to "fs".
  • Move os.dir and os.stat to the fs library.
  • fs.dir and fs.stat return nil if the file does not exist.
  • Additions to fs library.
  • To reduce the impact of malicious scripts, files can only be accessed by rbxmk from certain locations.
    • The working directory.
    • The directory of the first running script.
    • A temporary directory, accessible via os.expand("$tmp")
  • Changes to os.expand.
    • Add the $root_script_directory variable, which expands to the directory of the first running script.
    • The $temp_directory variable now points to a temporary directory that is unique per run of rbxmk.

Fixes:

  • Fix garbled error messages.

Internal:

  • Implement automated releases.

See a comparison with the previous version for a thorough list of changes.

The Documentation page provides a complete reference for this version of rbxmk.

v0.4.0

Highlights:

Fixes:

  • Fix sorting of members returned by ClassDesc.Members.
  • Fix error with EnumDesc.AddItem.
  • Fix error with RootDesc.AddEnum.
  • Fix error when indexing Enums or calling GetEnums.
  • Fix Enums.GetEnums returning no values.
  • Fix issues with cloned Instances.
  • Fix string and double types being returned as empty userdata.
  • Fix strings not having a metatable.

See a comparison with the previous version for a thorough list of changes.

The Documentation page provides a complete reference for this version of rbxmk.

v0.3.0

Imperative Mode is a complete rewrite of rbxmk from the ground up.

  • Versus the previous quasi-declarative Lua API, the new API is completely imperative.
  • The API is designed to emulate the Roblox Lua API.

The Documentation page provides a complete reference for this version of rbxmk.