Releases: Shopify/tapioca
v0.7.3
What's Changed
This is a small bug-fix release that changes how Tapioca does backward compatible type_member
/type_template
processing so that it respects references to not-yet-declared types in the blocks passed to those methods.
🐛 Bug Fixes
- Fix type variable patch to respect references to late defined types by @paracycle in #944
Full Changelog: v0.7.2...v0.7.3
v0.8.0
What's Changed
This release is aimed at removing some of the pain points of working with Tapioca. Towards that goal, the headline features added are:
- Tapioca now automatically checks and corrects RBI strictness to work around mismatched method definitions. This allows you to not have to reach for
typed_overrides
manually. - Tapioca now requires gems from the
Gemfile
that are marked asrequire: false
as well. This allows you to not have to add a lot of entries to therequire.rb
file manually. - Tapioca now generates a
sorbet/config
file which ignoresvendor/
directory. - Tapioca now generates the documentation of methods/constants in the generated RBI file by default.
- Tapioca now allows you to check your shim RBI files against gem/DSL RBIs and Sorbet payload RBIs to find shim definitions that are no longer needed.
- Tapioca now includes a prototype of the
annotate
command to fetch signature/type annotation RBI files from remote sources. This command is in its early stages and will be improved in future releases, but we would love to hear what you think about it.
We also have an updated README, a cute new logo and documentation for how to create your own DSL compilers. 🎉
✨ Enhancements
- Prototype: Add
annotations
command by @Morriar in #930 - Check generated RBI files for correctness by @Morriar in #842
- Make DSL generation also autocorrect the gems RBI strictnesses by @Morriar in #837
- Need less entries in
require.rb
by @paracycle in #818 - Set default if
factory
prop is set by @jeffcarbs in #833 - Add
tapioca/dsl
entrypoint for custom DSL compilers by @paracycle in #844 - Always ignore the
vendor/
directory form the sorbet/config by @Morriar in #848 - Check duplicates between shims and Sorbet's RBI payload by @Morriar in #879
- Fairer queueing for parallel workers in RBI generation by @egiurleo in #889
- Validate config values for arrays and hashes by @Morriar in #898
- More effectively determine method ownership for RBI generation by @egiurleo in #896
- Add descriptive message for unexpected DSL exceptions by @paracycle in #913
- Enable documentation generation by default by @Morriar in #920
- Add support for :oneof fields on protobuf messages by @andrewn617 in #929
🐛 Bug Fixes
- Explicitly load descendants patch in ActiveSupport by @KaanOzkan in #924
🛠 Other Changes
- Improve README by @Morriar in #917
- Add README entry for creating custom DSL compilers by @Morriar in #921
New Contributors
- @egiurleo made their first contribution in #889
- @andrewn617 made their first contribution in #929
Full Changelog: v0.7.2...v0.8.0
v0.7.2
What's Changed
🐛 Bug Fixes
- Avoid generating syntax errors for capitalized protobuf fields by @Morriar in #878
- Bump spoom to v1.1.11 by @Morriar in #886
- Bump
rubocop-sorbet
to v0.6.8 by @Morriar in #910 - Support new type variable syntax by @KaanOzkan in #902
Full Changelog: v0.7.1...v0.7.2
v0.7.1
What's Changed
🐛 Bug Fixes
- Fix generic type variable argument serialization by @paracycle in #839
- Do not crash when trying to generate DSL RBIs on non-rails apps by @Morriar in #847
- Update
tapioca todo
to handle constants defined inclass << self
by @jeffcarbs in #850 - Bump rbi to v0.0.14 by @Morriar in #866
- Start filtering old copies of reloaded constants by @paracycle in #869
- Fix block with no param generation by @pjambet in #874
- Start using compared by identity Set operations for
UrlHelpers#includes_helper?
by @paracycle in #877
New Contributors
Full Changelog: v0.7.0...v0.7.1
v0.7.0
What's Changed
🚧 Breaking Changes
- Replace
clean-shims
bycheck-shims
by @Morriar in #706 - Bump Thor requirement by @paracycle in #721
- Refactor DSL compilers by @paracycle in #795
- Load nothing from Tapioca by default by @paracycle in #821
✨ Enhancements
- Add
gems
as an alias to thegem
command by @paracycle in #720 - Generate
requires_ancestor
helpers in gems RBIs by @Morriar in #728 - Expose DSL compiler test helper as a reusable unit by @paracycle in #788
- Also generate Yard @annotations by @Morriar in #803
- Update the strictness of generated RBI files in case of conflicts with DSL files by @Morriar in #801
- Use RBI::Formatter by @Morriar in #808
- Use root/absolute namespace in compiled RBI by @jeffcarbs in #780
🐛 Bug Fixes
- Never generate
T.nilable(T.untyped)
in DSL generators by @paracycle in #756 - In Ruby 2.6
Symbol
s don't haveend_with?
method by @paracycle in #763 - Fix printing or Yard @param annotations by @Morriar in #807
- Handle attribute_method_matchers rename to attribute_method_patterns by @nvasilevski in #811
- Implement support for final method signatures by @paracycle in #771
- Fix path to DSL extensions by @Morriar in #823
🛠 Other Changes
- Improve VSCode experience out of the box by @paracycle in #757
- Update AASM DSL generator by @davebenvenuti in #786
New Contributors
- @nvasilevski made their first contribution in #811
- @davebenvenuti made their first contribution in #786
Full Changelog: v0.6.2...v0.7.0
v0.6.4
What's Changed
This minor release fixes a compatibility problem with latest Rails releases.
🐛 Bug Fixes
- Handle
attribute_method_matchers
rename toattribute_method_patterns
by @nvasilevski in 3ebb3dd.
Full Changelog: v0.6.3...v0.6.4
v0.6.3
What's Changed
This minor release fixes a compatibility problem with latest Sorbet releases and adds a missing Thor version dependency.
🐛 Bug Fixes
- Bump Thor requirement by @paracycle in #721
- Never generate
T.nilable(T.untyped)
in DSL generators by @paracycle in #756
Full Changelog: v0.6.2...v0.6.3
v0.6.2
What's Changed
✨ Enhancements
- Support Ruby 3.1 by @paracycle in #679
- Improve RequiresCompiler performance by @brasic in #682
- RequiresCompiler: handle ruby source files with alternate encodings by @brasic in #681
- Improve generic type variable tracking by @paracycle in #701
- Add configuration validation by @paracycle in #709
- Allow extended/included T::Props* to be present in .rbi by @CraigChilds94 in #705
🐛 Bug Fixes
- Fix and improve method parameter sanitization by @paracycle in #689
- Ignore interpolated strings in RequiresCompiler by @brasic in #683
- Make generic AR column types
T.untyped
by @paracycle in #712
🛠 Other Changes
- Filter out Sorbet modules and modules that would be mixed in by other modules from dynamic extends by @paracycle in #713
New Contributors
- @brasic made their first contribution in #682
- @ghiculescu made their first contribution in #695
- @CraigChilds94 made their first contribution in #705
Full Changelog: v0.6.1...v0.6.2
v0.6.1
This is a quick bug-fix release for the 0.6 series
What's Changed
🐛 Bug Fixes
- Add typing for find_by! by @ryanwilsonperkin in #675
- Fix various DSL compilers matching
XPath
by @paracycle in #677 - Refactor how
SmartProperties
methods are generated by @paracycle in #678
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
This is a major release on our path to releasing 1.0 version. It includes some headline features, like Active Record relation generation and doing parallel RBI generation (which really helps with --doc
mode). But it also includes some breaking changes, especially around Tapioca configuration.
If the addition of ActiveRecordRelations
generator ends up creating too many errors in your code, you can always --exclude ActiveRecordRelations
while migrating to this version and then clean up the errors later. The behaviour of other Active Record generators will change to reflect the fact that relations are not being generated.
🚧 Breaking Changes
- Refactor config infrastructure to be integrated with Thor by @paracycle in #659
✨ Enhancements
- Parallelize the generation of RBI files by @vinistock in #559
- Handle
frozen_record
scopes by @vinistock in #565 - Add error message for missing
ActiveRecordAssociations
by @mutecipher in #578 - Add
MissingConstantError
messaging by @mutecipher in #584 - Merge generated RBIs with gem RBIs by @mojanjz in #453
- Add a command to clean shim files automatically by @Morriar in #641
- Add ActiveRecord relations generator by @paracycle in #236
- Allow DSL generators to change behaviour based on if
ActiveRecordRelations
is enabled or not by @paracycle in #660 - Make
init
create a skeleton Tapioca config by @paracycle in #662 - Add support for Rails generators by @michaelherold in #605
🐛 Bug Fixes
- Support
ActiveRecord::Enum
for abstract classes by @etiennebarrie in #555 - Fix eval'ed constants not being generated in gem RBI generation by @paracycle in #589
- Generate typed store accessors in their own module by @Morriar in #587
- Exclude anonymous or value constants from DSL generation by @paracycle in #595
- Sanitize type aliases by @vinistock in #609
- Fix support for abstract singleton class methods by @mutecipher in #615
- Remove stale gem rbis on generate by @vinistock in #616
- Compare modules by identity for
Tapioca::Compilers::Dsl::Base#processable_constants
by @etiennebarrie in #627 - Fix reflection target class existence check by @paracycle in #634
- Properly load reflections for namespaced
has_many
relations by @jflinter in #637 - Eager load constants registered for
autoload
after loading gems by @paracycle in #639
🛠 Other Changes
- Move test helpers to
lib/tapioca
by @mutecipher in #576
New Contributors
- @etiennebarrie made their first contribution in #555
- @ryanwilsonperkin made their first contribution in #575
- @jflinter made their first contribution in #637
- @michaelherold made their first contribution in #605
Full Changelog: v0.5.4...v0.6.0