Sequel 6 Planning #2381
jeremyevans
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Planning for Sequel 6 has started. I expect to release Sequel 6.0.0 in December 2027, with the last minor release of Sequel 5 being 5.122.0 in November 2027. I currently expect to make the following high-level changes:
The minimum Ruby version will be 3.2. Ruby is deprecating ruby2_keywords support in Ruby 4.2, so at the very least, the minimum would be 3.0. However, Ruby 3.1 and 3.2 have some nice syntax features that I would like to take advantage of (hash value omission, anonymous rest and block args). Additionally, Ruby 3.2 added Queue#pop :timeout option, which would allow the dropping of the threaded connection pool classes. This will be right before the Ruby 4.2 release, by which time Ruby 3.2 will have been out of support for almost 2 years. Note that Ruby 1.9 support will be dropped from Sequel in 5.109.0, to prepare for the use of keyword arguments. It's possible support for additional Ruby versions will be dropped before the release of Sequel 6, if it is necessary or significantly simplifies the upgrade planning.
Methods and plugins that currently accept option hashes may switch to accepting keyword arguments (decision on a case-by-case basis).
Passing arguments to plugins that don't use them will be an error (warned for many versions).
Sequel.split_symbols= and Sequel.split_symbol will be removed. Sequel will stop supporting symbol splitting.
Sequel.datetime_class= will be removed. Time will be the only supported datetime_class.
Sequel.require will be removed (the method will exist, but Sequel will not override it).
Model will no longer extend Enumerable, but instead forward those methods to the model's dataset.
Plugins.def_sequel_method will raise instead of warn if a user provides a block with an unexpected arity (this is called internally to define methods from user-provided blocks).
The connection pool connect_sqls/after_connect API will be removed (the :after_connect and :connect_sqls Database options will still work).
Currently unused methods and constants only kept for backwards compatibility will be removed. Constants that are not expected to be used by the user will be made private.
Plugin changes:
The xml_serializer plugin will be removed, in order to drop the nokogiri dependency.
The set_literalizer plugin will be removed as the behavior is now supported by default (it is already deprecated).
The hook_blocks method will be removed from the hook_class_methods plugin.
The validation_helpers_generic_type_messages behavior will be merged into validation_helpers.
Extension changes
The sequel_4_dataset_methods extension will be removed, in line with the removal of sequel_3_dataset_methods in Sequel 5.
The auto_restrict_eager_graph plugin will be integrated into the default model associations behavior.
Adapter changes:
The jdbc/derby adapter will be removed, as Derby is no longer supported.
The sqlite3 adapter will default the :disable_dqs option to true.
The tinytds adapter will default the :ansi option to true.
There will likely be significant additional changes. I plan on doing a line-by-line review of all code over the next few months and will likely decide to deprecate additional parts while performing that review. I'll be opening additional discussion topics for additional planned deprecations.
I welcome community feedback on these plans. If there is something I plan to deprecate that you rely on, speak up, providing details on why you need the feature. If there is something you don't like that you would like to see deprecated, advocate for it, explaining why you think we should deprecate it. One of the reasons for this early announcement (15 months before planned release) is to allow plenty of time for community feedback.
Best,
Jeremy
All reactions