Skip to content

Commit 15381dd

Browse files
authored
Merge pull request rails#51894 from rails/rm-enable-yjit
Move plumbing to enable yjit to inside the framework
2 parents 62501c7 + 30e6a19 commit 15381dd

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
@@ -52,7 +52,6 @@
5252
config/environments/test.rb
5353
config/initializers/assets.rb
5454
config/initializers/content_security_policy.rb
55-
config/initializers/enable_yjit.rb
5655
config/initializers/filter_parameter_logging.rb
5756
config/initializers/inflections.rb
5857
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)