- Fix binary name in --help --version so typeshare is the name and not typeshare-cli: #214
- Fix duplicate root added to walker: #209
- Only assert if go package is present if generating go types: #211
- Update shell completions for new generate function: #212
- Update how logging is initialized: #206
- Don't recreate
Codable.swift
when the contents have not changed #205 - Fix target_os parsing when no --target-os is provided #204
- Optional slices in Go no longer trigger a pointer redirection.
- Upgrade to clap 4. This let us remove the dependency on the now unmaintained atty crate.
- wasmbind is now an optional feature
This release promotes 1.10.0-beta.x to stable, and several new features.
- Multiple
--target-os
is now allowed, and#[cfg(not(target_os...))]
is now parsed: #187 - Console output is now handled by flexi_logger: #187
- Variant types are now explicitly formatted in Go: #189
See the full changelog for more details: https://github.com/1Password/typeshare/blob/main/CHANGELOG.md
- Output can now be split into multiple generated files
- Source is now walked in parallel, increasing speed
- Generic type constraints can now be defined for Swift
- Kotlin's Inline value classes are now supported
- You can now specify that a struct should be "redacted"
- The effects are language specific. For Kotlin,
toString
is overridden.
- The effects are language specific. For Kotlin,
- Added support for inline value classes in Kotlin - #182
- Added the ability to specify that a struct should have information redacted - #170
- What this means is language-specific. In Kotlin, the toString method is overridden
- This was actually added in 1.10.0-beta.4 but went unannounced.
- Made the output deterministic (this broke in 1.10.0-beta.6) - #185
- Algebraic Enum Variant names are now capitalized appropriately - #183
- Added support for skipping fields/variants via the
target_os
argument #176
- Added support for Swift generic constraints via
#[typeshare(swiftGenericConstraints)]
#174 - Added Swift config option for defining constraints on
CodableVoid
generated type #174
Fixed a bug involving #[typeshare(skip)]
on fields in struct variants of enums.
Fixed a bug involving type aliases.
This release brings support for multiple file generation, allowing splitting generated files when used in large projects. This can dramatically increase compilation speed of the generated files and increase maintainability.
This is a pre-release version which may have bugs or break compatibility.
- Multiple file output #166
This release fixes a Cargo.lock error introduced in 1.9.1.
This release fixes a bug with Kotlin prefixes introduced in 1.9.0.
- Fix inner class referencing incorrect superclass referencing in Kotlin. #165
This release adds support for prefixing Kotlin type names (similarly to Swift) and some minor fixes.
- Added support for prefixing type names in Kotlin. #159
This release brings support for various Rust std smart pointers, as well as a CLI flag to opt-into following symbolic links. In addition, typeshare has been updated to use syn 2.0
- Added support for various Rust std smart pointers. #134
- Added CLI flag to opt-into following symbolic links. #156
- Migrate to syn version 2.0. #130
Thank you to the following community contributors for your work on this release:
This release brings support for more rust primitive types (slices and chars), as well as support for manually overriding the output type in the #[typeshare]
annotations
- Added support for the Rust slice type, which is treated as a sequence. #131
- Added support for the Rust char type, which is treated as a string. #128
- Better error messages when there's an error reading a file. #117
- It is now possible to manually override the output type for specific fields using the
#[typeshare]
annotation. #119, #118 - Fixed: in Swift, apply generic constraints to enums, in addition to structs. #122
- In an effort to ensure we don't accidentally break compatibility with our Minimum Supported Rust Version, we added a
rust-toolchain.toml
to the rust crates, forcing builds and tests to use that version of rust. #129, #135. This change should have no effect on end users.
Thank you to the following community contributors for your work on this release:
This release brings support for more architectures for Nix and configurable generic constraints in Swift
- The Nix flake now supports all default Nix platforms, rather than only
x86_64-linux
. #113 typeshare-core
- It is now possible to add your own set of generic constraints to Swift generics. This is done with a field called
default_generic_constraints
under[swift]
intypeshare.toml
. #95
- It is now possible to add your own set of generic constraints to Swift generics. This is done with a field called
This release brings support for standalone installations into Nix, as well as corrections for certain unusual edge case behaviors.
- Added a Nix flake, which allows for installing typeshare outside of NixPkgs
typeshare-core
- Now supports types in inline modules. #109
- Now throws an error if
#[serde(flatten)]
is used, instead of silently generating incorrect types #108 - When generating the
CodableVoid
type in swift, we now always include theCodable
decorator, even if it's omitted from the list ofdefault_decorators
intypeshare.toml
#107
Thank you to the following community contributors for your work on this release:
This release brings support for fixed-length arrays and fixes some premature changes made in 1.4.0 involving the representation of unit types and enum variants in Typescript.
typeshare-core
- Fixed-length arrays in the form of
[T; N]
are now supported. - Reverted changes made to the representation of unit types in Typescript.1
- Fixed-length arrays in the form of
1 We apologize for the premature changes to the representation of unit types. This was done to improve correctness and compatibility with various JSON libraries, however it ended up causing a regression by invalidating certain usages. For now, we've reverted the changes so your projects can get back on track, and we are working to bring these improvements while mitigating the issues discovered. Thank you for bringing this to our attention.
Thank you to the following community contributors for your work on this release:
This release brings topological sorting of types based on dependencies to generated files, as well as fixes several bugs.
typeshare-core
- Types are now outputted in order of dependency - types depending on others will be written after those without dependencies.
- Unit types are now represented as null in Typescript
- Deserialization for optional associated types in enum variants has been fixed.
Thank you to the following community contributors for your work on this release:
This release brings minor changes to snapshot testing by adding an additional option to remove version headers from generated code. This will make our snapshot tests more robust by preventing test breakage that used to occur when updating our version.
typeshare-core
- Each language implementation now has an additional public variable that can be set to remove version headers from generated code.
This release brings Scala functionality to the CLI, support for Apple Silicon as a pre-built binary, and refactors how we handle language variants internally to be more type-safe.
typeshare-cli
- Scala is now a language generation target! Try it out with
typeshare --lang=scala --scala-package=com.your.package.here some/file.rs
- Future releases (including this one) now support aarch64-apple-darwin as an additional architecture.
- Scala is now a language generation target! Try it out with
typeshare-core
- Language variants are now represented as enums instead of strings.
Thank you to the following community contributors for your work on this release:
This release brings major new additions, the largest of which is support for Scala as a language generation target. Additionally, the code generation API has been expanded/revised, and many bugs have been fixed.
-
typeshare-cli
- Kotlin now uses
val
consistently for defining fields. - Some issues with the command line options have been corrected.
- Unit structs that don't use bracket syntax are now supported.
- Typescript can now handle type aliases of optional types.
- Empty structs are now represented as objects in Kotlin.
- You can now define read-only Typescript properties with
#[typeshare(typescript(readonly))]
. - Doubly-nested option types (
Option<Option<T>>
) are now supported in Typescript.
- Kotlin now uses
-
typeshare-core
- The
Language
trait now takesself
mutably for more flexibility in implementations. - Scala is now a supported language for code generation, though the CLI does not use it yet.
- The attribute parser has been reworked to be more robust and flexible for future additions.
- The
-
Miscellaneous
- We now have a proper release system and prebuilt binaries for anyone to download 🎉
- Releases will be weekly on every Thursday.
Thank you to the following community contributors for your work on this release:
exoego, Czocher, ccouzens, McAJBen, adriangb, kareid, nihaals, ChrisMcKenzie, justintime4tea, prestontw, and julienfouilhe!