- Update for v1.13.3 by @darrell-roberts in #254
- add test with type using #[unsafe(no_mangle)]. by @darrell-roberts in #251
- Bump crossbeam-channel to 0.5.15 by @l004p in #257
- FIx Linting Issues by @l004p in #258
- Use Span to capture line and column numbers for parsing rejections. by @darrell-roberts in #262
- Fix url to 1password.com by @JaKXz in #247
- Bump nix flake.lock by @LuminaSapphira in #263
- Add automated job to update flake.lock file by @charlespierce in #264
- Revert "Add automated job to update flake.lock file" by @charlespierce in #266
- Add automated job to update flake.lock file with signed commits by @charlespierce in #267
- Update flake.lock file with latest versions by @github-actions[bot] in #268
- Update flake.lock file with latest versions by @github-actions[bot] in #269
- support cfg_attr typeshare definitions by @darrell-roberts in #274
- Update book.toml by @darrell-roberts in #279
- Use parallel walker instead of rayon by @darrell-roberts in #216
- Approach to handle serde(rename) references. by @darrell-roberts in #210
- Add Typeshare support for Python by @hculea in #169
- Make changes required for Go translation to support generics by @AndyTitu in #221
- Bump hashbrown version to resolve security alert by @charlespierce in #223
- fix typo by @darrell-roberts in #227
- Add const support for integer types by @edif2008 in #218
- Add support for byte translation by @MOmarMiraj in #230
- Update syn to 2.0.98 by @complexspaces in #232
- Fix writing enum values in Go by @edif2008 in #233
- Fix Bug in JS and Python Typesharing Custom Types by @MOmarMiraj in #234
- Update Reviver/Replacer functions in TS typeshare by @MOmarMiraj in #235
- Add support for DateTime field for Go, JS, Python by @MOmarMiraj in #236
- Fix Equality Check Bug in typescript generator file by @harshils23 in #242
- Update for newer clippy lints by @darrell-roberts in #252
- 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.swiftwhen 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-osis 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,
toStringis 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_osargument #176
- Added support for Swift generic constraints via
#[typeshare(swiftGenericConstraints)]#174 - Added Swift config option for defining constraints on
CodableVoidgenerated 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.tomlto 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_constraintsunder[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
CodableVoidtype in swift, we now always include theCodabledecorator, even if it's omitted from the list ofdefault_decoratorsintypeshare.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
valconsistently 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
Languagetrait now takesselfmutably 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!