|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: JRuby 9.4.0.0 Released |
| 4 | +--- |
| 5 | + |
| 6 | +The JRuby community is pleased to announce the release of JRuby 9.4.0.0 |
| 7 | + |
| 8 | +* Homepage: [https://www.jruby.org/](https://www.jruby.org/) |
| 9 | +* Download: [https://www.jruby.org/download](https://www.jruby.org/download) |
| 10 | + |
| 11 | +The release of JRuby 9.4 represents a leap forward to Ruby 3.1 compatibility, which would not have been possible without help from the excellent contributors in our JRuby community: [@k77ch7], [@PurityLake], [@ahorek], [@byteit101], [@mrnoname1000], [@edipofederle], [@chadlwilson], [@philr], [@gtback]. |
| 12 | + |
| 13 | +A special shout out goes to Kiichi Hiromasa ([@k77ch7]) for submitting dozens of feature and fix PRs and to Patrick Plenefisch ([@byteit101]) for his work on the libfixposix-powered subspawn gem. |
| 14 | + |
| 15 | +Ruby Compatibility |
| 16 | +------------------ |
| 17 | + |
| 18 | +* Compatibility is updated to Ruby 3.1 level. This includes all Ruby 2.7, 3.0, and 3.1 features except where noted below. ([#6464], [#6878], [#7015]) |
| 19 | + * Ractor is not yet supported. JRuby users can achieve better parallelism by using threaded libraries and frameworks. |
| 20 | + * The scheduler interface for IO, locks, and fibers is not yet supported. It will be added in an update release. |
| 21 | +* Nearly all features from CRuby's NEWS file have been implemented. Most new tests and specs pass. |
| 22 | +* Remaining 3.0 and 3.1 features will be implemented in an update release. See [#7459] and [#7460]. |
| 23 | + |
| 24 | +Standard Library |
| 25 | +---------------- |
| 26 | + |
| 27 | +* Much of the standard library has moved out to gems, and JRuby supports a large subset of these gems. See [lib/pom.rb] for the complete list of default and bundled gems. |
| 28 | +* Greatly improved PTY and spawn support thanks to the subspawn gem, which is included as part of the standard library. [#7393] |
| 29 | + |
| 30 | +JVM Integration |
| 31 | +--------------- |
| 32 | + |
| 33 | +* Java setFoo methods that do not match JavaBean standards (return value other than void, for example) will now also generate a foo= method when imported into Ruby. ([#7340], [#7352]) |
| 34 | + |
| 35 | +Platform Support |
| 36 | +---------------- |
| 37 | + |
| 38 | +* The JRuby launcher script has been ported to POSIX shell (/bin/sh) and no longer requires Bash. ([#7024]) |
| 39 | +* Initial support for the LoongArch64 platform has been inherited from the Java Native Runtime libraries. |
| 40 | + |
| 41 | +Third-party Libraries and Frameworks |
| 42 | +------------------------------------ |
| 43 | + |
| 44 | +* Initial support for Rails 7. SQLite and MySQL are largely functional, but work remains to update them and PostgreSQL. |
| 45 | + |
| 46 | +[lib/pom.rb]: https://github.com/jruby/jruby/blob/9.4.0.0/lib/pom.rb |
| 47 | +[@chadlwilson]: https://github.com/chadlwilson |
| 48 | +[@edipofederle]: https://github.com/edipofederle |
| 49 | +[@ahorek]: https://github.com/ahorek |
| 50 | +[@k77ch7]: https://github.com/k77ch7 |
| 51 | +[@philr]: https://github.com/philr |
| 52 | +[@mrnoname1000]: https://github.com/mrnoname1000 |
| 53 | +[@PurityLake]: https://github.com/PurityLake |
| 54 | +[@byteit101]: https://github.com/byteit101 |
| 55 | +[@gtback]: https://github.com/gtback |
| 56 | +[#1372]:https://github.com/jruby/jruby/issues/1372 |
| 57 | +[#2383]:https://github.com/jruby/jruby/issues/2383 |
| 58 | +[#3721]:https://github.com/jruby/jruby/issues/3721 |
| 59 | +[#3810]:https://github.com/jruby/jruby/issues/3810 |
| 60 | +[#4845]:https://github.com/jruby/jruby/issues/4845 |
| 61 | +[#5802]:https://github.com/jruby/jruby/issues/5802 |
| 62 | +[#5803]:https://github.com/jruby/jruby/pull/5803 |
| 63 | +[#6417]:https://github.com/jruby/jruby/issues/6417 |
| 64 | +[#6418]:https://github.com/jruby/jruby/pull/6418 |
| 65 | +[#6420]:https://github.com/jruby/jruby/pull/6420 |
| 66 | +[#6439]:https://github.com/jruby/jruby/pull/6439 |
| 67 | +[#6464]:https://github.com/jruby/jruby/issues/6464 |
| 68 | +[#6552]:https://github.com/jruby/jruby/issues/6552 |
| 69 | +[#6677]:https://github.com/jruby/jruby/pull/6677 |
| 70 | +[#6867]:https://github.com/jruby/jruby/issues/6867 |
| 71 | +[#6878]:https://github.com/jruby/jruby/issues/6878 |
| 72 | +[#6885]:https://github.com/jruby/jruby/issues/6885 |
| 73 | +[#6891]:https://github.com/jruby/jruby/pull/6891 |
| 74 | +[#6894]:https://github.com/jruby/jruby/pull/6894 |
| 75 | +[#6901]:https://github.com/jruby/jruby/pull/6901 |
| 76 | +[#6902]:https://github.com/jruby/jruby/pull/6902 |
| 77 | +[#6912]:https://github.com/jruby/jruby/pull/6912 |
| 78 | +[#6915]:https://github.com/jruby/jruby/pull/6915 |
| 79 | +[#6916]:https://github.com/jruby/jruby/pull/6916 |
| 80 | +[#6917]:https://github.com/jruby/jruby/pull/6917 |
| 81 | +[#6918]:https://github.com/jruby/jruby/pull/6918 |
| 82 | +[#6919]:https://github.com/jruby/jruby/pull/6919 |
| 83 | +[#6920]:https://github.com/jruby/jruby/pull/6920 |
| 84 | +[#6927]:https://github.com/jruby/jruby/pull/6927 |
| 85 | +[#6930]:https://github.com/jruby/jruby/pull/6930 |
| 86 | +[#6931]:https://github.com/jruby/jruby/pull/6931 |
| 87 | +[#6932]:https://github.com/jruby/jruby/pull/6932 |
| 88 | +[#6933]:https://github.com/jruby/jruby/pull/6933 |
| 89 | +[#6938]:https://github.com/jruby/jruby/issues/6938 |
| 90 | +[#6939]:https://github.com/jruby/jruby/pull/6939 |
| 91 | +[#6940]:https://github.com/jruby/jruby/pull/6940 |
| 92 | +[#6970]:https://github.com/jruby/jruby/pull/6970 |
| 93 | +[#6980]:https://github.com/jruby/jruby/issues/6980 |
| 94 | +[#6982]:https://github.com/jruby/jruby/pull/6982 |
| 95 | +[#6998]:https://github.com/jruby/jruby/pull/6998 |
| 96 | +[#6999]:https://github.com/jruby/jruby/pull/6999 |
| 97 | +[#7000]:https://github.com/jruby/jruby/pull/7000 |
| 98 | +[#7001]:https://github.com/jruby/jruby/pull/7001 |
| 99 | +[#7002]:https://github.com/jruby/jruby/pull/7002 |
| 100 | +[#7015]:https://github.com/jruby/jruby/issues/7015 |
| 101 | +[#7022]:https://github.com/jruby/jruby/pull/7022 |
| 102 | +[#7023]:https://github.com/jruby/jruby/pull/7023 |
| 103 | +[#7024]:https://github.com/jruby/jruby/pull/7024 |
| 104 | +[#7027]:https://github.com/jruby/jruby/pull/7027 |
| 105 | +[#7028]:https://github.com/jruby/jruby/pull/7028 |
| 106 | +[#7034]:https://github.com/jruby/jruby/pull/7034 |
| 107 | +[#7036]:https://github.com/jruby/jruby/pull/7036 |
| 108 | +[#7037]:https://github.com/jruby/jruby/pull/7037 |
| 109 | +[#7040]:https://github.com/jruby/jruby/pull/7040 |
| 110 | +[#7043]:https://github.com/jruby/jruby/pull/7043 |
| 111 | +[#7044]:https://github.com/jruby/jruby/pull/7044 |
| 112 | +[#7049]:https://github.com/jruby/jruby/pull/7049 |
| 113 | +[#7050]:https://github.com/jruby/jruby/pull/7050 |
| 114 | +[#7051]:https://github.com/jruby/jruby/pull/7051 |
| 115 | +[#7052]:https://github.com/jruby/jruby/pull/7052 |
| 116 | +[#7053]:https://github.com/jruby/jruby/pull/7053 |
| 117 | +[#7054]:https://github.com/jruby/jruby/pull/7054 |
| 118 | +[#7057]:https://github.com/jruby/jruby/pull/7057 |
| 119 | +[#7058]:https://github.com/jruby/jruby/issues/7058 |
| 120 | +[#7062]:https://github.com/jruby/jruby/pull/7062 |
| 121 | +[#7063]:https://github.com/jruby/jruby/pull/7063 |
| 122 | +[#7065]:https://github.com/jruby/jruby/pull/7065 |
| 123 | +[#7067]:https://github.com/jruby/jruby/pull/7067 |
| 124 | +[#7072]:https://github.com/jruby/jruby/pull/7072 |
| 125 | +[#7073]:https://github.com/jruby/jruby/pull/7073 |
| 126 | +[#7076]:https://github.com/jruby/jruby/pull/7076 |
| 127 | +[#7079]:https://github.com/jruby/jruby/pull/7079 |
| 128 | +[#7081]:https://github.com/jruby/jruby/pull/7081 |
| 129 | +[#7082]:https://github.com/jruby/jruby/pull/7082 |
| 130 | +[#7084]:https://github.com/jruby/jruby/pull/7084 |
| 131 | +[#7085]:https://github.com/jruby/jruby/issues/7085 |
| 132 | +[#7088]:https://github.com/jruby/jruby/pull/7088 |
| 133 | +[#7092]:https://github.com/jruby/jruby/pull/7092 |
| 134 | +[#7093]:https://github.com/jruby/jruby/pull/7093 |
| 135 | +[#7094]:https://github.com/jruby/jruby/issues/7094 |
| 136 | +[#7095]:https://github.com/jruby/jruby/pull/7095 |
| 137 | +[#7097]:https://github.com/jruby/jruby/pull/7097 |
| 138 | +[#7105]:https://github.com/jruby/jruby/pull/7105 |
| 139 | +[#7106]:https://github.com/jruby/jruby/issues/7106 |
| 140 | +[#7107]:https://github.com/jruby/jruby/pull/7107 |
| 141 | +[#7109]:https://github.com/jruby/jruby/pull/7109 |
| 142 | +[#7110]:https://github.com/jruby/jruby/pull/7110 |
| 143 | +[#7116]:https://github.com/jruby/jruby/pull/7116 |
| 144 | +[#7118]:https://github.com/jruby/jruby/pull/7118 |
| 145 | +[#7119]:https://github.com/jruby/jruby/pull/7119 |
| 146 | +[#7123]:https://github.com/jruby/jruby/pull/7123 |
| 147 | +[#7124]:https://github.com/jruby/jruby/pull/7124 |
| 148 | +[#7127]:https://github.com/jruby/jruby/pull/7127 |
| 149 | +[#7128]:https://github.com/jruby/jruby/pull/7128 |
| 150 | +[#7129]:https://github.com/jruby/jruby/pull/7129 |
| 151 | +[#7130]:https://github.com/jruby/jruby/pull/7130 |
| 152 | +[#7135]:https://github.com/jruby/jruby/pull/7135 |
| 153 | +[#7144]:https://github.com/jruby/jruby/pull/7144 |
| 154 | +[#7157]:https://github.com/jruby/jruby/pull/7157 |
| 155 | +[#7158]:https://github.com/jruby/jruby/pull/7158 |
| 156 | +[#7173]:https://github.com/jruby/jruby/pull/7173 |
| 157 | +[#7174]:https://github.com/jruby/jruby/issues/7174 |
| 158 | +[#7175]:https://github.com/jruby/jruby/issues/7175 |
| 159 | +[#7178]:https://github.com/jruby/jruby/pull/7178 |
| 160 | +[#7179]:https://github.com/jruby/jruby/pull/7179 |
| 161 | +[#7180]:https://github.com/jruby/jruby/pull/7180 |
| 162 | +[#7188]:https://github.com/jruby/jruby/pull/7188 |
| 163 | +[#7189]:https://github.com/jruby/jruby/pull/7189 |
| 164 | +[#7190]:https://github.com/jruby/jruby/pull/7190 |
| 165 | +[#7191]:https://github.com/jruby/jruby/pull/7191 |
| 166 | +[#7192]:https://github.com/jruby/jruby/pull/7192 |
| 167 | +[#7193]:https://github.com/jruby/jruby/pull/7193 |
| 168 | +[#7195]:https://github.com/jruby/jruby/pull/7195 |
| 169 | +[#7196]:https://github.com/jruby/jruby/pull/7196 |
| 170 | +[#7197]:https://github.com/jruby/jruby/pull/7197 |
| 171 | +[#7198]:https://github.com/jruby/jruby/pull/7198 |
| 172 | +[#7199]:https://github.com/jruby/jruby/issues/7199 |
| 173 | +[#7200]:https://github.com/jruby/jruby/pull/7200 |
| 174 | +[#7201]:https://github.com/jruby/jruby/pull/7201 |
| 175 | +[#7202]:https://github.com/jruby/jruby/pull/7202 |
| 176 | +[#7204]:https://github.com/jruby/jruby/pull/7204 |
| 177 | +[#7206]:https://github.com/jruby/jruby/pull/7206 |
| 178 | +[#7208]:https://github.com/jruby/jruby/pull/7208 |
| 179 | +[#7209]:https://github.com/jruby/jruby/pull/7209 |
| 180 | +[#7210]:https://github.com/jruby/jruby/pull/7210 |
| 181 | +[#7212]:https://github.com/jruby/jruby/pull/7212 |
| 182 | +[#7213]:https://github.com/jruby/jruby/pull/7213 |
| 183 | +[#7214]:https://github.com/jruby/jruby/pull/7214 |
| 184 | +[#7215]:https://github.com/jruby/jruby/pull/7215 |
| 185 | +[#7222]:https://github.com/jruby/jruby/pull/7222 |
| 186 | +[#7223]:https://github.com/jruby/jruby/pull/7223 |
| 187 | +[#7224]:https://github.com/jruby/jruby/pull/7224 |
| 188 | +[#7226]:https://github.com/jruby/jruby/pull/7226 |
| 189 | +[#7227]:https://github.com/jruby/jruby/pull/7227 |
| 190 | +[#7230]:https://github.com/jruby/jruby/pull/7230 |
| 191 | +[#7231]:https://github.com/jruby/jruby/pull/7231 |
| 192 | +[#7235]:https://github.com/jruby/jruby/pull/7235 |
| 193 | +[#7247]:https://github.com/jruby/jruby/issues/7247 |
| 194 | +[#7273]:https://github.com/jruby/jruby/pull/7273 |
| 195 | +[#7276]:https://github.com/jruby/jruby/pull/7276 |
| 196 | +[#7277]:https://github.com/jruby/jruby/pull/7277 |
| 197 | +[#7278]:https://github.com/jruby/jruby/pull/7278 |
| 198 | +[#7283]:https://github.com/jruby/jruby/pull/7283 |
| 199 | +[#7284]:https://github.com/jruby/jruby/pull/7284 |
| 200 | +[#7285]:https://github.com/jruby/jruby/pull/7285 |
| 201 | +[#7293]:https://github.com/jruby/jruby/pull/7293 |
| 202 | +[#7297]:https://github.com/jruby/jruby/pull/7297 |
| 203 | +[#7300]:https://github.com/jruby/jruby/pull/7300 |
| 204 | +[#7301]:https://github.com/jruby/jruby/pull/7301 |
| 205 | +[#7305]:https://github.com/jruby/jruby/pull/7305 |
| 206 | +[#7308]:https://github.com/jruby/jruby/issues/7308 |
| 207 | +[#7309]:https://github.com/jruby/jruby/pull/7309 |
| 208 | +[#7310]:https://github.com/jruby/jruby/pull/7310 |
| 209 | +[#7311]:https://github.com/jruby/jruby/pull/7311 |
| 210 | +[#7312]:https://github.com/jruby/jruby/pull/7312 |
| 211 | +[#7313]:https://github.com/jruby/jruby/pull/7313 |
| 212 | +[#7320]:https://github.com/jruby/jruby/pull/7320 |
| 213 | +[#7322]:https://github.com/jruby/jruby/pull/7322 |
| 214 | +[#7323]:https://github.com/jruby/jruby/issues/7323 |
| 215 | +[#7329]:https://github.com/jruby/jruby/pull/7329 |
| 216 | +[#7330]:https://github.com/jruby/jruby/pull/7330 |
| 217 | +[#7339]:https://github.com/jruby/jruby/pull/7339 |
| 218 | +[#7340]:https://github.com/jruby/jruby/issues/7340 |
| 219 | +[#7347]:https://github.com/jruby/jruby/pull/7347 |
| 220 | +[#7352]:https://github.com/jruby/jruby/pull/7352 |
| 221 | +[#7355]:https://github.com/jruby/jruby/pull/7355 |
| 222 | +[#7357]:https://github.com/jruby/jruby/pull/7357 |
| 223 | +[#7363]:https://github.com/jruby/jruby/pull/7363 |
| 224 | +[#7366]:https://github.com/jruby/jruby/pull/7366 |
| 225 | +[#7368]:https://github.com/jruby/jruby/pull/7368 |
| 226 | +[#7369]:https://github.com/jruby/jruby/pull/7369 |
| 227 | +[#7370]:https://github.com/jruby/jruby/issues/7370 |
| 228 | +[#7371]:https://github.com/jruby/jruby/pull/7371 |
| 229 | +[#7373]:https://github.com/jruby/jruby/pull/7373 |
| 230 | +[#7374]:https://github.com/jruby/jruby/pull/7374 |
| 231 | +[#7375]:https://github.com/jruby/jruby/pull/7375 |
| 232 | +[#7376]:https://github.com/jruby/jruby/pull/7376 |
| 233 | +[#7377]:https://github.com/jruby/jruby/pull/7377 |
| 234 | +[#7378]:https://github.com/jruby/jruby/pull/7378 |
| 235 | +[#7379]:https://github.com/jruby/jruby/pull/7379 |
| 236 | +[#7381]:https://github.com/jruby/jruby/pull/7381 |
| 237 | +[#7382]:https://github.com/jruby/jruby/issues/7382 |
| 238 | +[#7387]:https://github.com/jruby/jruby/pull/7387 |
| 239 | +[#7389]:https://github.com/jruby/jruby/pull/7389 |
| 240 | +[#7390]:https://github.com/jruby/jruby/pull/7390 |
| 241 | +[#7391]:https://github.com/jruby/jruby/pull/7391 |
| 242 | +[#7392]:https://github.com/jruby/jruby/pull/7392 |
| 243 | +[#7393]:https://github.com/jruby/jruby/pull/7393 |
| 244 | +[#7402]:https://github.com/jruby/jruby/pull/7402 |
| 245 | +[#7408]:https://github.com/jruby/jruby/pull/7408 |
| 246 | +[#7409]:https://github.com/jruby/jruby/pull/7409 |
| 247 | +[#7410]:https://github.com/jruby/jruby/pull/7410 |
| 248 | +[#7411]:https://github.com/jruby/jruby/pull/7411 |
| 249 | +[#7412]:https://github.com/jruby/jruby/pull/7412 |
| 250 | +[#7414]:https://github.com/jruby/jruby/pull/7414 |
| 251 | +[#7417]:https://github.com/jruby/jruby/pull/7417 |
| 252 | +[#7418]:https://github.com/jruby/jruby/pull/7418 |
| 253 | +[#7419]:https://github.com/jruby/jruby/pull/7419 |
| 254 | +[#7420]:https://github.com/jruby/jruby/pull/7420 |
| 255 | +[#7421]:https://github.com/jruby/jruby/pull/7421 |
| 256 | +[#7422]:https://github.com/jruby/jruby/pull/7422 |
| 257 | +[#7423]:https://github.com/jruby/jruby/pull/7423 |
| 258 | +[#7424]:https://github.com/jruby/jruby/pull/7424 |
| 259 | +[#7425]:https://github.com/jruby/jruby/pull/7425 |
| 260 | +[#7427]:https://github.com/jruby/jruby/issues/7427 |
| 261 | +[#7428]:https://github.com/jruby/jruby/issues/7428 |
| 262 | +[#7429]:https://github.com/jruby/jruby/pull/7429 |
| 263 | +[#7431]:https://github.com/jruby/jruby/pull/7431 |
| 264 | +[#7432]:https://github.com/jruby/jruby/pull/7432 |
| 265 | +[#7435]:https://github.com/jruby/jruby/pull/7435 |
| 266 | +[#7436]:https://github.com/jruby/jruby/pull/7436 |
| 267 | +[#7438]:https://github.com/jruby/jruby/issues/7438 |
| 268 | +[#7439]:https://github.com/jruby/jruby/issues/7439 |
| 269 | +[#7441]:https://github.com/jruby/jruby/pull/7441 |
| 270 | +[#7443]:https://github.com/jruby/jruby/pull/7443 |
| 271 | +[#7444]:https://github.com/jruby/jruby/pull/7444 |
| 272 | +[#7446]:https://github.com/jruby/jruby/pull/7446 |
| 273 | +[#7447]:https://github.com/jruby/jruby/pull/7447 |
| 274 | +[#7448]:https://github.com/jruby/jruby/pull/7448 |
| 275 | +[#7449]:https://github.com/jruby/jruby/pull/7449 |
| 276 | +[#7450]:https://github.com/jruby/jruby/pull/7450 |
| 277 | +[#7451]:https://github.com/jruby/jruby/pull/7451 |
| 278 | +[#7453]:https://github.com/jruby/jruby/pull/7453 |
| 279 | +[#7454]:https://github.com/jruby/jruby/pull/7454 |
| 280 | +[#7456]:https://github.com/jruby/jruby/pull/7456 |
| 281 | +[#7458]:https://github.com/jruby/jruby/issues/7458 |
| 282 | +[#7461]:https://github.com/jruby/jruby/pull/7461 |
| 283 | +[#7462]:https://github.com/jruby/jruby/pull/7462 |
| 284 | +[#7463]:https://github.com/jruby/jruby/pull/7463 |
| 285 | +[#7464]:https://github.com/jruby/jruby/pull/7464 |
| 286 | +[#7465]:https://github.com/jruby/jruby/pull/7465 |
| 287 | +[#7468]:https://github.com/jruby/jruby/pull/7468 |
| 288 | +[#7469]:https://github.com/jruby/jruby/pull/7469 |
| 289 | +[#7472]:https://github.com/jruby/jruby/pull/7472 |
| 290 | +[#7473]:https://github.com/jruby/jruby/pull/7473 |
| 291 | +[#7459]:https://github.com/jruby/jruby/pull/7459 |
| 292 | +[#7460]:https://github.com/jruby/jruby/pull/7460 |
0 commit comments