Age | Commit message (Collapse) | Author |
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3753
|
|
If set to true all parsed objects will be
immediately frozen, and strings will be
deduplicated if the Ruby implementation
allows it.
|
|
https://github.com/flori/json/commit/cb61a00ba8
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
https://github.com/flori/json/commit/6dfa885134
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
* Enhanced RDoc for JSON.dump
https://github.com/flori/json/commit/03f1699ec4
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
https://github.com/flori/json/commit/f8c0fe2408
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
https://github.com/flori/json/commit/a55c91934e
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
https://github.com/flori/json/commit/e4eead665c
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
https://github.com/flori/json/commit/33e64ef255
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
https://github.com/flori/json/commit/20d7be605a
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
issue #386.
https://github.com/flori/json/commit/0be363c99b
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
Squashed commit of the following:
commit 26d181059989279a79c433cedcd893b4f52e42ee
Author: Francois Chagnon <francois.chagnon@jadedpixel.com>
Date: Tue Sep 15 21:17:34 2015 +0000
add config options for escape_slash
commit fa282334051b16df91ca097dd7304b46f3bc7719
Author: Francois Chagnon <francois.chagnon@jadedpixel.com>
Date: Mon Feb 9 21:09:33 2015 +0000
add forward slash to escape character
Notes:
Merged: https://github.com/ruby/ruby/pull/3581
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3347
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3346
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3338
|
|
|
|
https://github.com/flori/json/commit/26c1769969
|
|
https://github.com/flori/json/commit/ee5b6a74e9
|
|
When use non-frozen string for hash key with `rb_hash_aset()`, it will duplicate and freeze it internally.
To avoid duplicate and freeze, this patch will give a frozen string in `rb_hash_aset()`.
```
Warming up --------------------------------------
json 14.000 i/100ms
Calculating -------------------------------------
json 148.844 (± 1.3%) i/s - 756.000 in 5.079969s
```
```
Warming up --------------------------------------
json 16.000 i/100ms
Calculating -------------------------------------
json 165.608 (± 1.8%) i/s - 832.000 in 5.025367s
```
```
require 'json'
require 'securerandom'
require 'benchmark/ips'
obj = []
1000.times do |i|
obj << {
"id": i,
"uuid": SecureRandom.uuid,
"created_at": Time.now
}
end
json = obj.to_json
Benchmark.ips do |x|
x.report "json" do |iter|
count = 0
while count < iter
JSON.parse(json)
count += 1
end
end
end
```
https://github.com/flori/json/commit/18292c0c1d
|
|
https://github.com/flori/json/commit/ada48f0236
|
|
https://github.com/flori/json/commit/470d909c0d
|
|
https://github.com/flori/json/commit/7bee2c7c13
|
|
https://github.com/flori/json/commit/e7e3732130
|
|
As it is ignored and set at building packages automatically, it is
just nonsense to set in gemspec file for input.
|
|
https://github.com/flori/json/commit/9f430a7bba
|
|
https://github.com/flori/json/commit/1920653013
|
|
https://github.com/flori/json/commit/78ec5e2bd3
|
|
Ragel generates a code `0 <= (*p)` where `*p` is char.
As char is unsigned by default on arm and RISC-V, it is warned by gcc:
```
compiling parser.c
parser.c: In function ‘JSON_parse_string’:
parser.c:1566:2: warning: comparison is always true due to limited range of data type [-Wtype-limits]
if ( 0 <= (*p) && (*p) <= 31 )
^
parser.c:1596:2: warning: comparison is always true due to limited range of data type [-Wtype-limits]
if ( 0 <= (*p) && (*p) <= 31 )
^
```
This change removes the warning by substituting the condition with
`0 <= (signed char)(*p)`.
|
|
To fix build failures.
Notes:
Merged: https://github.com/ruby/ruby/pull/3079
|
|
This shall fix compile errors.
Notes:
Merged: https://github.com/ruby/ruby/pull/3079
|
|
Split ruby.h
Notes:
Merged-By: shyouhei <shyouhei@ruby-lang.org>
|
|
https://github.com/flori/json/commit/2f3f44c180
|
|
https://github.com/flori/json/commit/3845491d92
|
|
https://github.com/flori/json/commit/4ede0a7d19
|
|
This text used to be true in older versions of json, but has not
been true for a number of years (since json version 2 I think).
https://github.com/flori/json/commit/373b633f38
|
|
|
|
"./tests/test_helper.rb" and "tests/test_helper.rb" in `s.files`
are same.
|
|
This constant isn't used, so lets remove it.
|
|
The global can go bad if the compactor runs, so we need to look up the
constant instead of caching it in a global.
|
|
https://github.com/flori/json/commit/0e99a9aac5
|
|
In where to convert Hash key to String for json, this patch will add shortcut for String/Symbol in Hash key.
```
$ ruby bench_json_generate.rb
Warming up --------------------------------------
json 65.000 i/100ms
Calculating -------------------------------------
json 659.576 (± 1.5%) i/s - 3.315k in 5.027127s
```
```
$ ruby bench_json_generate.rb
Warming up --------------------------------------
json 78.000 i/100ms
Calculating -------------------------------------
json 789.781 (± 2.7%) i/s - 3.978k in 5.041043s
```
```
require 'json'
require 'benchmark/ips'
obj = []
1000.times do |i|
obj << {
"id" => i,
:age => 42,
}
end
Benchmark.ips do |x|
x.report "json" do |iter|
count = 0
while count < iter
JSON.generate(obj)
count += 1
end
end
end
```
https://github.com/flori/json/commit/38c0f6dbe4
|
|
To convert Hash convert, this part was using following pseudo code
```
obj.keys.each do |key|
value = obj[key]
...
end
```
and `rb_funcall()` was called for `obj.keys`.
It might be slightly heavy to call the Ruby method.
This patch will iterate to convert Hash object about key/value using `rb_hash_foreach()` Ruby API instead of `rb_funcall()`.
```
$ ruby bench_json_generate.rb
Warming up --------------------------------------
json 55.000 i/100ms
Calculating -------------------------------------
json 558.501 (± 1.1%) i/s - 2.805k in 5.022986s
```
```
$ ruby bench_json_generate.rb
Warming up --------------------------------------
json 65.000 i/100ms
Calculating -------------------------------------
json 659.576 (± 1.5%) i/s - 3.315k in 5.027127s
```
```
require 'json'
require 'benchmark/ips'
obj = []
1000.times do |i|
obj << {
"id" => i,
:age => 42,
}
end
Benchmark.ips do |x|
x.report "json" do |iter|
count = 0
while count < iter
JSON.generate(obj)
count += 1
end
end
end
```
https://github.com/flori/json/commit/a73323dc5e
|
|
flori/json@c34d01ff6a18dac04a90b2e0f820cdb1d5c7e1b2 does not
consider US-ASCII compatible but non-UTF-8 encodings, and causes
an error in RDoc tests.
https://github.com/flori/json/commit/4f471bf590
|
|
## Before
```
$ ruby bench_json_generate.rb
Warming up --------------------------------------
json 129.000 i/100ms
Calculating -------------------------------------
json 1.300k (± 2.3%) i/s - 6.579k in 5.064656s
```
## After
```
$ ruby bench_json_generate.rb
Warming up --------------------------------------
json 189.000 i/100ms
Calculating -------------------------------------
json 1.964k (± 3.3%) i/s - 9.828k in 5.011237s
```
## Code
```
require 'json'
require 'benchmark/ips'
obj = []
1000.times do |i|
obj << {
"id" => i,
:age => 42,
}
end
Benchmark.ips do |x|
x.report "json" do |iter|
count = 0
while count < iter
JSON.generate(obj)
count += 1
end
end
end
```
https://github.com/flori/json/commit/c34d01ff6a
|
|
`rb_funcall` might be slightly heavy to call the Ruby method.
This patch will convert String encoding using `rb_str_encode()` instead of `rb_funcall()`.
## Before
```
$ ruby bench_json_generate.rb
Warming up --------------------------------------
json 78.000 i/100ms
Calculating -------------------------------------
json 789.781 (± 2.7%) i/s - 3.978k in 5.041043s
```
## After
```
$ ruby bench_json_generate.rb
Warming up --------------------------------------
json 129.000 i/100ms
Calculating -------------------------------------
json 1.300k (± 2.3%) i/s - 6.579k in 5.064656s
```
## Code
```
require 'json'
require 'benchmark/ips'
obj = []
1000.times do |i|
obj << {
"id" => i,
:age => 42,
}
end
Benchmark.ips do |x|
x.report "json" do |iter|
count = 0
while count < iter
JSON.generate(obj)
count += 1
end
end
end
```
https://github.com/flori/json/commit/9ae6d2969c
|
|
## Before
```
$ ruby bench_json_generate.rb
Warming up --------------------------------------
json 25.000 i/100ms
Calculating -------------------------------------
json 250.478 (± 4.8%) i/s - 1.250k in 5.002238s
```
## After
```
$ ruby bench_json_generate.rb
Warming up --------------------------------------
json 32.000 i/100ms
Calculating -------------------------------------
json 360.652 (± 3.6%) i/s - 1.824k in 5.064511s
```
## Test code
```
require 'json'
require 'benchmark/ips'
obj = []
1000.times do |i|
obj << {
:string => "x" * 100,
:utf8 => "あ" * 100
}
end
Benchmark.ips do |x|
x.report "json" do |iter|
count = 0
while count < iter
JSON.generate(obj)
count += 1
end
end
end
```
https://github.com/flori/json/commit/91a24ecac3
|
|
https://github.com/flori/json/commit/36a7ef6790
|
|
https://github.com/flori/json/commit/167ada8da7
|