iodine 0.7.36 → 0.7.37
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +2 -2
- data/ext/iodine/http1_parser.c +3 -1
- data/ext/iodine/iodine.c +12 -0
- data/iodine.gemspec +1 -1
- data/lib/iodine/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d09283cad97b84847493794f2245f7b477b6f0170a8332112c3836106d660373
|
4
|
+
data.tar.gz: 3727db00462421260d06689ac5c578cda9203d2dc2c3d4daed53b4f9dc6b84f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db93d224de064141cf4a422e05bba2e67c74ef0344dfce19579be48489cc16b070e24527e30aa4c081f9c38ca4aeb2c737f90d1edd8d157cf0d334b5f083965e
|
7
|
+
data.tar.gz: 8b6e496da5af91bf59225798c41d00776caafb3aec55a57c5ee43a1ca943a0312e676e119a9a41387c4beba5350d0f71c1ec70868d29933be6b140ac1d814b64
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,12 @@ Please notice that this change log contains changes for upcoming releases as wel
|
|
6
6
|
|
7
7
|
## Changes:
|
8
8
|
|
9
|
+
#### Change log v.0.7.37
|
10
|
+
|
11
|
+
**Fix**: requests will fail when the path contains a dangling `?` (empty query). Credit to @adam12 for exposing this and opening issue #86.
|
12
|
+
|
13
|
+
**Fix**: documentation improvements and corrections, credit to Caleb Albritton ( @WA9ACE ) and Don Morrison ( @elskwid ) for PRs #82 and #83. Credit to Nir ( @Roko131 ) and Aurel Branzeanu ( @texpert ) for opening and commenting on issue #84.
|
14
|
+
|
9
15
|
#### Change log v.0.7.36
|
10
16
|
|
11
17
|
**Fix**: avoids clobbering the namespace when attempting to set Rack's default handler. Credit to Caleb Albritton ( @WA9ACE ) for issue #80 and PR #81.
|
data/README.md
CHANGED
@@ -348,7 +348,7 @@ Since the master / root process doesn't handle any requests (it only handles pub
|
|
348
348
|
|
349
349
|
### Optimized HTTP logging
|
350
350
|
|
351
|
-
By default, iodine is pretty
|
351
|
+
By default, iodine is pretty quiet. Some messages are logged to `stderr`, but not many.
|
352
352
|
|
353
353
|
However, HTTP requests can be logged using iodine's optimized logger to `stderr`. Iodine will optimize the log output by caching the output time string which updates every second rather than every request.
|
354
354
|
|
@@ -585,7 +585,7 @@ More possible compile time options can be found in the [facil.io documentation](
|
|
585
585
|
|
586
586
|
## Evented oriented design with extra safety
|
587
587
|
|
588
|
-
Iodine is an
|
588
|
+
Iodine is an evented server, similar in its architecture to `nginx` and `puma`. It's different than the simple "thread-per-client" design that is often taught when we begin to learn about network programming.
|
589
589
|
|
590
590
|
By leveraging `epoll` (on Linux) and `kqueue` (on BSD), iodine can listen to multiple network events on multiple sockets using a single thread.
|
591
591
|
|
data/ext/iodine/http1_parser.c
CHANGED
@@ -47,6 +47,8 @@ static int seek2ch(uint8_t **buffer, register uint8_t *const limit,
|
|
47
47
|
{
|
48
48
|
const uint8_t *alignment =
|
49
49
|
(uint8_t *)(((uintptr_t)(*buffer) & (~(uintptr_t)7)) + 8);
|
50
|
+
if (*buffer < alignment)
|
51
|
+
*buffer += 1; /* already tested this char */
|
50
52
|
if (limit >= alignment) {
|
51
53
|
while (*buffer < alignment) {
|
52
54
|
if (**buffer == c) {
|
@@ -93,7 +95,7 @@ finish:
|
|
93
95
|
inline static uint8_t seek2ch(uint8_t **pos, uint8_t *const limit, uint8_t ch) {
|
94
96
|
/* This is library based alternative that is sometimes slower */
|
95
97
|
if (*pos >= limit || **pos == ch) {
|
96
|
-
return
|
98
|
+
return 1;
|
97
99
|
}
|
98
100
|
uint8_t *tmp = memchr(*pos, ch, limit - (*pos));
|
99
101
|
if (tmp) {
|
data/ext/iodine/iodine.c
CHANGED
@@ -117,6 +117,8 @@ Core API
|
|
117
117
|
* i.e., -2 == half the number of detected CPU cores.
|
118
118
|
*
|
119
119
|
* Zero values promise nothing (iodine will decide what to do with them).
|
120
|
+
*
|
121
|
+
* @return [FixNum] Thread Count
|
120
122
|
*/
|
121
123
|
static VALUE iodine_threads_get(VALUE self) {
|
122
124
|
VALUE i = rb_ivar_get(self, rb_intern2("@threads", 8));
|
@@ -133,6 +135,8 @@ static VALUE iodine_threads_get(VALUE self) {
|
|
133
135
|
* i.e., -2 == half the number of detected CPU cores.
|
134
136
|
*
|
135
137
|
* Zero values promise nothing (iodine will decide what to do with them).
|
138
|
+
*
|
139
|
+
* @param thread_count [FixNum] The number of worker threads to use
|
136
140
|
*/
|
137
141
|
static VALUE iodine_threads_set(VALUE self, VALUE val) {
|
138
142
|
Check_Type(val, T_FIXNUM);
|
@@ -157,6 +161,8 @@ static VALUE iodine_threads_set(VALUE self, VALUE val) {
|
|
157
161
|
*
|
158
162
|
* Logging is always performed to the process's STDERR and can be piped away.
|
159
163
|
*
|
164
|
+
* @return [FixNum] Logging Level
|
165
|
+
*
|
160
166
|
* NOTE: this does NOT effect HTTP logging.
|
161
167
|
*/
|
162
168
|
static VALUE iodine_logging_get(VALUE self) {
|
@@ -178,6 +184,8 @@ static VALUE iodine_logging_get(VALUE self) {
|
|
178
184
|
*
|
179
185
|
* Logging is always performed to the process's STDERR and can be piped away.
|
180
186
|
*
|
187
|
+
* @param log_level [FixNum] Sets the logging level
|
188
|
+
*
|
181
189
|
* NOTE: this does NOT effect HTTP logging.
|
182
190
|
*/
|
183
191
|
static VALUE iodine_logging_set(VALUE self, VALUE val) {
|
@@ -196,6 +204,8 @@ static VALUE iodine_logging_set(VALUE self, VALUE val) {
|
|
196
204
|
* Zero values promise nothing (iodine will decide what to do with them).
|
197
205
|
*
|
198
206
|
* 1 == single process mode, the msater process acts as a worker process.
|
207
|
+
*
|
208
|
+
* @return [FixNum] Worker Count
|
199
209
|
*/
|
200
210
|
static VALUE iodine_workers_get(VALUE self) {
|
201
211
|
VALUE i = rb_ivar_get(self, rb_intern2("@workers", 8));
|
@@ -214,6 +224,8 @@ static VALUE iodine_workers_get(VALUE self) {
|
|
214
224
|
* Zero values promise nothing (iodine will decide what to do with them).
|
215
225
|
*
|
216
226
|
* 1 == single process mode, the msater process acts as a worker process.
|
227
|
+
*
|
228
|
+
* @param worker_count [FixNum] Number of worker processes
|
217
229
|
*/
|
218
230
|
static VALUE iodine_workers_set(VALUE self, VALUE val) {
|
219
231
|
Check_Type(val, T_FIXNUM);
|
data/iodine.gemspec
CHANGED
@@ -45,5 +45,5 @@ Gem::Specification.new do |spec|
|
|
45
45
|
spec.add_development_dependency 'rake-compiler', '>= 1', '< 2.0'
|
46
46
|
|
47
47
|
spec.post_install_message = "Thank you for installing Iodine #{Iodine::VERSION}.\n" +
|
48
|
-
"Remember: if iodine supports your business, it's
|
48
|
+
"Remember: if iodine supports your business, it's only fair to give value back (code contributions / donations)."
|
49
49
|
end
|
data/lib/iodine/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iodine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.37
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Boaz Segev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -243,8 +243,8 @@ licenses:
|
|
243
243
|
metadata:
|
244
244
|
allowed_push_host: https://rubygems.org
|
245
245
|
post_install_message: |-
|
246
|
-
Thank you for installing Iodine 0.7.
|
247
|
-
Remember: if iodine supports your business, it's
|
246
|
+
Thank you for installing Iodine 0.7.37.
|
247
|
+
Remember: if iodine supports your business, it's only fair to give value back (code contributions / donations).
|
248
248
|
rdoc_options: []
|
249
249
|
require_paths:
|
250
250
|
- lib
|