summaryrefslogtreecommitdiff
path: root/encoding.c
Commit message (Collapse)AuthorAgeFilesLines
* Mark Encoding as Write Barrier protectedJean Boussier2023-02-071-1/+1
| | | | | | It doesn't even have a mark function. It's only about a hundred objects, but not reason to scan them every time.
* Remove Encoding#replicateBenoit Daloze2023-01-111-32/+0
|
* surpress warningKoichi Sasada2022-12-161-1/+1
| | | | now `enc_table->list` is not a pointer.
* fixed encoding tableKoichi Sasada2022-12-161-112/+42
| | | | | This reduces global lock acquiring for reading. https://bugs.ruby-lang.org/issues/18949
* Remove get_actual_encoding() and the dynamic endian detection for dummy ↵Benoit Daloze2022-09-121-9/+0
| | | | | | | | UTF-16/UTF-32 * And simplify callers of get_actual_encoding(). * See [Feature #18949]. * See https://github.com/ruby/ruby/pull/6322#issuecomment-1242758474
* Deprecate Encoding#replicateBenoit Daloze2022-09-101-1/+5
| | | | * See [Feature #18949].
* Expand tabs [ci skip]Takashi Kokubun2022-07-211-179/+179
| | | | [Misc #18891]
* Rename ENCINDEX_ASCII to ENCINDEX_ASCII_8BITJean Boussier2022-07-191-6/+8
| | | | Otherwise it's way too easy to confuse it with US_ASCII.
* [DOC] Main doc for encodings moved from encoding.c to doc/encodings.rdoc (#5748)Burdette Lamar2022-04-011-190/+20
| | | Main doc for encodings moved from encoding.c to doc/encodings.rdoc
* suppress warnings for probable NULL dererefencesNobuyoshi Nakada2021-10-241-1/+4
|
* include/ruby/encoding.h: convert macros into inline functions卜部昌平2021-10-051-14/+0
| | | | Less macros == huge win.
* Make encoding loading not issue warningJeremy Evans2021-10-021-4/+3
| | | | | | | | | | | | | Instead of relying on setting an unsetting ruby_verbose, which is not thread-safe, restructure require_internal and load_lock to accept a warn argument for whether to warn, and add rb_require_internal_silent to require without warnings. Use rb_require_internal_silent when loading encoding. Note this does not modify ruby_debug and errinfo handling, those remain thread-unsafe. Also silent requires when loading transcoders.
* Add rb_encoding_check functionS-H-GAMELINKS2021-08-221-10/+12
|
* Using RBOOL macroS.H2021-08-021-2/+2
|
* rb_enc_interned_str: handle autoloaded encodingsJean Boussier2021-03-221-16/+12
| | | | | | | | If called with an autoloaded encoding that was not yet initialized, `rb_enc_interned_str` would crash with a NULL pointer exception. See: https://github.com/ruby/ruby/pull/4119#issuecomment-800189841
* No sync on ASCII/US_ASCCII/UTF-8Koichi Sasada2020-12-171-3/+10
| | | | | | | | | | | | rb_enc_from_index(index) doesn't need locking if index specify ASCII/US_ASCCII/UTF-8. rb_enc_from_index() is called frequently so it has impact. user system total real r_parallel/miniruby 174 0.000209 0.000000 5.559872 ( 1.811501) r_parallel/master_mini 175 0.000238 0.000000 12.664707 ( 3.523641) (repeat x1000 `s.split(/,/)` where s = '0,,' * 1000)
* Set default for Encoding.default_external to UTF-8 on Windows (#2877)Lars Kanis2020-12-081-1/+3
| | | | | | * Use UTF-8 as default for Encoding.default_external on Windows * Document UTF-8 change on Windows to Encoding.default_external fix https://bugs.ruby-lang.org/issues/16604
* fix public interfaceKoichi Sasada2020-11-181-1/+0
| | | | | | | | | | | | | | | | | | To make some kind of Ractor related extensions, some functions should be exposed. * include/ruby/thread_native.h * rb_native_mutex_* * rb_native_cond_* * include/ruby/ractor.h * RB_OBJ_SHAREABLE_P(obj) * rb_ractor_shareable_p(obj) * rb_ractor_std*() * rb_cRactor and rm ractor_pub.h and rename srcdir/ractor.h to srcdir/ractor_core.h (to avoid conflict with include/ruby/ractor.h)
* Don't redefine #rb_intern over and over againStefan Stüben2020-10-211-2/+0
|
* Revert "reduce lock for encoding"Koichi Sasada2020-10-201-72/+53
| | | | | | | | This reverts commit de17e2dea137bc5ba9f00e3acec32792d0dbb2eb. This patch can introduce race condition because of conflicting read/write access for enc_table::default_list. Maybe we need to freeze default_list at the end of Init_encdb() in enc/encdb.c.
* reduce lock for encodingKoichi Sasada2020-10-191-53/+72
| | | | | | | | | To reduce the number of locking for encoding manipulation, enc_table::list is splited to ::default_list and ::additional_list. ::default_list is pre-allocated and no need locking to access to the ::default_list. If additional encoding space is needed, use ::additional_list and this list need to use locking. However, most of case, ::default_list is enough.
* Check encoding name to replicateNobuyoshi Nakada2020-10-151-14/+28
| | | | https://hackerone.com/reports/954433
* freeze Encoding objectsKoichi Sasada2020-10-141-1/+4
| | | | | | Encoding objects can be accessed in multi-ractors and there is no state to mutate. So we can mark it as frozen and shareable. [Bug #17188]
* sync enc_table and rb_encoding_listKoichi Sasada2020-10-141-174/+371
| | | | | | | | | | | | | | | | | enc_table which manages Encoding information. rb_encoding_list also manages Encoding objects. Both are accessed/modified by ractors simultaneously so that they should be synchronized. For enc_table, this patch introduced GLOBAL_ENC_TABLE_ENTER/LEAVE/EVAL to access this table with VM lock. To make shortcut, three new global variables global_enc_ascii, global_enc_utf_8, global_enc_us_ascii are also introduced. For rb_encoding_list, we split it to rb_default_encoding_list (256 entries) and rb_additional_encoding_list. rb_default_encoding_list is fixed sized Array so we don't need to synchronized (and most of apps only needs it). To manage 257 or more encoding objects, they are stored into rb_additional_encoding_list. To access rb_additional_encoding_list., VM lock is needed.
* Fallback to built-in UTF-8 for minirubyNobuyoshi Nakada2020-05-161-1/+1
| | | | Source code encoding is defaulted to UTF-8 now too.
* sed -i 's|ruby/impl|ruby/internal|'卜部昌平2020-05-111-1/+1
| | | | To fix build failures.
* sed -i s|ruby/3|ruby/impl|g卜部昌平2020-05-111-1/+1
| | | | This shall fix compile errors.
* Added more NORETURN declarationsNobuyoshi Nakada2020-05-111-1/+2
|
* Merge pull request #2991 from shyouhei/ruby.h卜部昌平2020-04-081-1/+1
| | | Split ruby.h
* Get rid of warnings/exceptions at cleanupNobuyoshi Nakada2020-02-131-0/+10
| | | | | | | | After the encoding index instance variable is removed when all instance variables are removed in `obj_free`, then `rb_str_free` causes uninitialized instance variable warning and nil-to-integer conversion exception. Both cases result in object allocation during GC, and crashes.
* rb_enc_str_asciionly_p expects T_STRING卜部昌平2020-02-101-1/+1
| | | | | | This `str2` variable can be non-string (regexp etc.) but the previous code passed it directly to rb_enc_str_asciionly_p(), which expects its argument be a string. Let's enforce that constraint.
* more on NULL versus functions.卜部昌平2020-02-071-1/+1
| | | | | | Function pointers are not void*. See also ce4ea956d24eab5089a143bba38126f2b11b55b6 8427fca49bd85205f5a8766292dd893f003c0e48
* Fix description of Encoding.default_(in|ex)ternalLars Kanis2020-02-031-3/+2
| | | | | | | | Data written to files is not transcoded per default, but only when default_internal is set. The default for default_internal is nil and doesn't depend on the source file encoding.
* decouple internal.h headers卜部昌平2019-12-261-4/+14
| | | | | | | | | | | | | | | | | | Saves comitters' daily life by avoid #include-ing everything from internal.h to make each file do so instead. This would significantly speed up incremental builds. We take the following inclusion order in this changeset: 1. "ruby/config.h", where _GNU_SOURCE is defined (must be the very first thing among everything). 2. RUBY_EXTCONF_H if any. 3. Standard C headers, sorted alphabetically. 4. Other system headers, maybe guarded by #ifdef 5. Everything else, sorted alphabetically. Exceptions are those win32-related headers, which tend not be self- containing (headers have inclusion order dependencies).
* [Doc] Fix sample in Encoding#namesQuestionDriven2019-12-221-1/+1
|
* [Doc] Fix wrong example in Encoding.aliasesQuestionDriven2019-12-221-2/+2
|
* Deprecate taint/trust and related methods, and make the methods no-opsJeremy Evans2019-11-181-1/+0
| | | | | | This removes the related tests, and puts the related specs behind version guards. This affects all code in lib, including some libraries that may want to support older versions of Ruby.
* Warn on access/modify of $SAFE, and remove effects of modifying $SAFEJeremy Evans2019-11-181-1/+1
| | | | | | | | | | | | | | | | | This removes the security features added by $SAFE = 1, and warns for access or modification of $SAFE from Ruby-level, as well as warning when calling all public C functions related to $SAFE. This modifies some internal functions that took a safe level argument to no longer take the argument. rb_require_safe now warns, rb_require_string has been added as a version that takes a VALUE and does not warn. One public C function that still takes a safe level argument and that this doesn't warn for is rb_eval_cmd. We may want to consider adding an alternative method that does not take a safe level argument, and warn for rb_eval_cmd.
* Moved Init_encoding from wrong place [Bug #16292]Nobuyoshi Nakada2019-11-051-6/+6
|
* avoid overflow in integer multiplication卜部昌平2019-10-091-1/+1
| | | | | | | This changeset basically replaces `ruby_xmalloc(x * y)` into `ruby_xmalloc2(x, y)`. Some convenient functions are also provided for instance `rb_xmalloc_mul_add(x, y, z)` which allocates x * y + z byes.
* Better wording for __ENCODING__Lars Kanis2019-08-041-1/+1
| | | | | | | "locale encoding" is misleading since it doesn't mean Encoding.find("locale") but the encoding used to interpret the script file. It's therefore better to call it "script encoding" as in the paragraphs above. Closes: https://github.com/ruby/ruby/pull/1611
* Let the index boundary check in rb_enc_from_index be flagged as unlikelyLourens Naudé2019-07-231-1/+1
| | | | | | [Misc #15806] Closes: https://github.com/ruby/ruby/pull/2128
* Explicitly initialise encodings on init to remove branches on encoding lookupLourens Naudé2019-07-231-17/+6
| | | | | | [Misc #15806] Closes: https://github.com/ruby/ruby/pull/2128
* respect RUBY_DEBUG tooKoichi Sasada2019-07-151-1/+1
|
* encoding.c (enc_table_expand): prefer xrealloc to reallocYusuke Endoh2019-07-151-2/+4
| | | | And raise an exception when failed to register an encoding
* [DOC] fix markups [ci skip]nobu2019-03-221-10/+11
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* encoding.c: check external encodingnobu2018-09-151-1/+1
| | | | | | | * encoding.c (rb_enc_get_index): external encoding may not be Data object. [ruby-core:89016] [Bug #15122] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64753 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* encoding.c (rb_enc_get_index): return -1 for non-encoding capable objectseregon2018-08-031-8/+10
| | | | | | | * Clarify logic and add spec. * Now passes test-all with the JSON fix. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64178 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "encoding.c (rb_enc_get_index): return -1 for non-encoding capable ↵eregon2018-08-031-10/+8
| | | | | | | | | objects" * This reverts commit fb253d2032e51f333e6577aa4fcf0c03f9c6fc02. * The CI is failing, this seems a bug in the JSON C extension. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* encoding.c (rb_enc_get_index): return -1 for non-encoding capable objectseregon2018-08-031-8/+10
| | | | | | * Clarify logic and add spec. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64173 b2dd03c8-39d4-4d8f-98ff-823fe69b080e