Skip to content

Commit 30e6a19

Browse files
committed
Move plumbing to enable yjit to inside the framework
There is no reason to expose all those details to users and this has the benefit that now are can ensure that the YJIT is enabled after all initialization is done.
1 parent c906f75 commit 30e6a19

File tree

6 files changed

+21
-14
lines changed

6 files changed

+21
-14
lines changed

guides/source/configuring.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ Below are the default values associated with each target version. In cases of co
6565
- [`config.active_record.postgresql_adapter_decode_dates`](#config-active-record-postgresql-adapter-decode-dates): `true`
6666
- [`config.active_record.validate_migration_timestamps`](#config-active-record-validate-migration-timestamps): `true`
6767
- [`config.active_storage.web_image_content_types`](#config-active-storage-web-image-content-types): `%w[image/png image/jpeg image/gif image/webp]`
68+
- [`config.yjit`](#config-yjit): `true`
6869

6970
#### Default Values for Target Version 7.1
7071

@@ -613,6 +614,16 @@ Used to easily add nested custom configuration to the application config object
613614

614615
See [Custom Configuration](#custom-configuration)
615616

617+
#### `config.yjit`
618+
619+
Enables YJIT as of Ruby 3.3, to bring sizeable performance improvements. If you are
620+
deploying to a memory constrained environment you may want to set this to `false`.
621+
622+
| Starting with version | The default value is |
623+
| --------------------- | -------------------- |
624+
| (original) | `false` |
625+
| 7.2 | `true` |
626+
616627
### Configuring Assets
617628

618629
#### `config.assets.css_compressor`

railties/lib/rails/application/configuration.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class Configuration < ::Rails::Engine::Configuration
2323
:content_security_policy_nonce_generator, :content_security_policy_nonce_directives,
2424
:require_master_key, :credentials, :disable_sandbox, :sandbox_by_default,
2525
:add_autoload_paths_to_load_path, :rake_eager_load, :server_timing, :log_file_size,
26-
:dom_testing_default_html_version
26+
:dom_testing_default_html_version, :yjit
2727

2828
attr_reader :encoding, :api_only, :loaded_config_version, :log_level
2929

@@ -81,6 +81,7 @@ def initialize(*)
8181
@rake_eager_load = false
8282
@server_timing = false
8383
@dom_testing_default_html_version = :html4
84+
@yjit = false
8485
end
8586

8687
# Loads default configuration values for a target version. This includes
@@ -318,6 +319,8 @@ def load_defaults(target_version)
318319
when "7.2"
319320
load_defaults "7.1"
320321

322+
self.yjit = true
323+
321324
if respond_to?(:active_job)
322325
active_job.enqueue_after_transaction_commit = :default
323326
end

railties/lib/rails/application/finisher.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,12 @@ def self.complete(_state)
231231
ActiveSupport::DescendantsTracker.disable_clear!
232232
end
233233
end
234+
235+
initializer :enable_yjit do
236+
if config.yjit && defined?(RubyVM::YJIT.enable)
237+
RubyVM::YJIT.enable
238+
end
239+
end
234240
end
235241
end
236242
end

railties/lib/rails/generators/rails/app/templates/config/initializers/enable_yjit.rb.tt

Lines changed: 0 additions & 11 deletions
This file was deleted.

railties/test/generators/app_generator_test.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
config/environments/test.rb
5656
config/initializers/assets.rb
5757
config/initializers/content_security_policy.rb
58-
config/initializers/enable_yjit.rb
5958
config/initializers/filter_parameter_logging.rb
6059
config/initializers/inflections.rb
6160
config/initializers/permissions_policy.rb

railties/test/generators/plugin_generator_test.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
test/dummy/config/environments/production.rb
5555
test/dummy/config/environments/test.rb
5656
test/dummy/config/initializers/content_security_policy.rb
57-
test/dummy/config/initializers/enable_yjit.rb
5857
test/dummy/config/initializers/filter_parameter_logging.rb
5958
test/dummy/config/initializers/inflections.rb
6059
test/dummy/config/initializers/permissions_policy.rb

0 commit comments

Comments
 (0)