-
Notifications
You must be signed in to change notification settings - Fork 154
/
CHANGES
2079 lines (1238 loc) · 62.4 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Changes with njs 0.8.7 22 Oct 2024
nginx modules:
*) Bugfix: eliminated unnecessary VM creation.
Previously, njs consumed memory proportionally to the number of
nginx locations. The issue was introduced in 9b674412 (0.8.6).
*) Improvement: added strict syntax validation for js_body_filter.
*) Improvement: improved error messages for module loading
failures.
Core:
*) Feature: implemented fs.readlink() and friends.
*) Improvement: implemented lazy stack symbolization.
*) Bugfix: fixed heap-buffer-overflow in Buffer.prototype.indexOf().
The issue was introduced in 5d15a8d6 (0.8.6).
*) Bugfix: fixed Buffer.prototype.lastIndexOf() when `from` is
provided.
Changes with njs 0.8.6 02 Oct 2024
nginx modules:
*) Feature: introduced QuickJS engine.
*) Feature: added optional nocache flag for js_set directive.
Thanks to Thomas P.
*) Feature: exposed capture group variables in HTTP module.
Thanks to Thomas P.
Core:
*) Feature: added Buffer module for QuickJS engine.
*) Bugfix: fixed handling of empty labelled statement in a function.
*) Bugfix: fixed Function constructor handling when called without
arguments.
*) Bugfix: fixed Buffer.prototype.writeInt8() and friends.
*) Bugfix: fixed Buffer.prototype.writeFloat() and friends.
*) Bugfix: fixed Buffer.prototype.lastIndexOf().
*) Bugfix: fixed Buffer.prototype.write().
*) Bugfix: fixed maybe-uninitialized warnings in error creation.
*) Bugfix: fixed 'ctx.codepoint' initialization in UTF-8 decoding.
*) Bugfix: fixed 'length' initialization in Array.prototype.pop().
*) Bugfix: fixed handling of encode arg in fs.readdir() and
fs.realpath().
Changes with njs 0.8.5 25 Jun 2024
nginx modules:
*) Change: r.variables.var, r.requestText, r.responseText,
s.variables.var, and the "data" argument of the s.on() callback
with "upload" or "download" event types will now convert bytes
invalid in UTF-8 encoding into the replacement character. When
working with binary data, use r.rawVariables.var, r.requestBuffer,
r.responseBuffer, s.rawVariables.var, and the "upstream" or
"downstream" event type for s.on() instead.
*) Feature: added timeout argument for shared dictionary methods
add(), set() and incr().
*) Bugfix: fixed checking for duplicate js_set variables.
*) Bugfix: fixed request Host header when the port is non-standard.
*) Bugfix: fixed handling of a zero-length request body in ngx.fetch()
and r.subrequest().
*) Bugfix: fixed heap-buffer-overflow in Headers.get().
*) Bugfix: fixed r.subrequest() error handling.
Core:
*) Feature: added zlib module for QuickJS engine.
*) Bugfix: fixed zlib.inflate().
*) Bugfix: fixed String.prototype.replaceAll() with zero-length
argument.
*) Bugfix: fixed retval handling after an exception in
Array.prototype.toSpliced(), Array.prototype.toReversed(),
Array.prototype.toSorted().
*) Bugfix: fixed RegExp.prototype[@@replace]() with replacements
containing "$'", "$\`" and strings with Unicode characters.
*) Bugfix: fixed a one-byte overread in decodeURI() and
decodeURIComponent().
*) Bugfix: fixed tracking of argument scope.
*) Bugfix: fixed integer overflow in Date.parse().
Changes with njs 0.8.4 16 Apr 2024
nginx modules:
*) Feature: allowing to set Server header for outgoing headers.
*) Improvement: validating URI and args arguments in r.subrequest().
*) Improvement: checking for duplicate js_set variables.
*) Bugfix: fixed clear() method of a shared dictionary without
timeout introduced in 0.8.3.
*) Bugfix: fixed r.send() with Buffer argument.
Core:
*) Feature: added QuickJS engine support in CLI.
*) Bugfix: fixed atob() with non-padded base64 strings.
Changes with njs 0.8.3 07 Feb 2024
nginx modules:
*) Bugfix: fixed Headers.set().
*) Bugfix: fixed js_set with Buffer values.
*) Bugfix: fixed clear() method of a shared dictionary when
a timeout is not specified.
*) Bugfix: fixed stub_status statistics when js_periodic is
enabled.
Core:
*) Bugfix: fixed building with libxml2 2.12 and later.
*) Bugfix: fixed Date constructor for overflows and with
NaN values.
*) Bugfix: fixed underflow in querystring.parse().
*) Bugfix: fixed potential buffer overread in
String.prototype.match().
*) Bugfix: fixed parsing of for-in loops.
*) Bugfix: fixed parsing of hexadecimal, octal, and binary
literals with no digits.
Changes with njs 0.8.2 24 Oct 2023
nginx modules:
*) Feature: introduced console object. The following methods
were introduced: error(), info(), log(), time(), timeEnd(),
warn().
*) Bugfix: fixed HEAD response handling with large Content-Length
in fetch API.
*) Bugfix: fixed items() method for a shared dictionary.
*) Bugfix: fixed delete() method for a shared dictionary.
Core:
*) Feature: extended "fs" module. Added existsSync().
*) Bugfix: fixed "xml" module. Fixed broken XML exception handling
in parse() method.
*) Bugfix: fixed RegExp.prototype.exec() with global regexp and
unicode input.
*) Bugfix: fixed return statement parsing with invalid expression.
Changes with njs 0.8.1 12 Sep 2023
nginx modules:
*) Feature: introduced js_periodic directive.
The directive specifies a JS handler to run at regular intervals.
*) Feature: implemented items() method for a shared dictionary.
The method returns all the non-expired key-value pairs.
*) Bugfix: fixed size() and keys() methods of a shared dictionary.
*) Bugfix: fixed erroneous exception in r.internalRedirect()
introduced in 0.8.0.
Core:
*) Bugfix: fixed incorrect order of keys in
Object.getOwnPropertyNames().
Changes with njs 0.8.0 6 Jul 2023
nginx modules:
*) Change: removed special treatment of forbidden headers in Fetch API
introduced in 0.7.10.
*) Change: removed deprecated since 0.5.0 r.requestBody and
r.responseBody in HTTP module.
*) Change: throwing an exception in r.internalRedirect() while
filtering in HTTP module.
*) Feature: introduced global nginx properties.
ngx.build - an optional nginx build name, corresponds to
--build=name argument of configure script, by default is "".
ngx.conf_file_path - the file path to current nginx configuration
file.
ngx.error_log_path - the file path to current error log file.
ngx.prefix - the directory that keeps server files.
ngx.version - the nginx version as a string, for example: "1.25.0".
ngx.version_number - the nginx version as a number, for example:
1025000.
ngx.worker_id - corresponds to an nginx internal worker id.
The value is between 0 and worker_processes - 1.
*) Feature: introduced js_shared_dict_zone directive.
The directive allows to declare a dictionary that is shared among the
working processes.
*) Improvement: added compile-time options to disable njs modules.
For example to disable libxslt related code:
NJS_LIBXSLT=NO ./configure .. --add-module=/path/to/njs/module
*) Bugfix: fixed r.status setter when filtering in HTTP module.
*) Bugfix: fixed setting of Location header in HTTP module.
Core:
*) Change: native methods are provided with retval argument.
This change breaks compatibility with C extension for njs
requiring to modify the code.
*) Change: non-compliant deprecated String methods were removed.
The following methods were removed: String.bytesFrom(),
String.prototype.fromBytes(), String.prototype.fromUTF8(),
String.prototype.toBytes(), String.prototype.toUTF8(),
String.prototype.toString(encoding).
*) Change: removed support for building with GNU readline.
*) Feature: added Array.from(), Array.prototype.toSorted(),
Array.prototype.toSpliced(), Array.prototype.toReversed().
*) Feature: added %TypedArray%.prototype.toSorted(),
%TypedArray%.prototype.toSpliced(),
%TypedArray%.prototype.toReversed().
*) Feature: added CryptoKey properties in WebCrypto.
The following properties for CryptoKey were added:
algorithm, extractable, type, usages.
*) Bugfix: fixed retval of crypto.getRandomValues().
*) Bugfix: fixed evaluation of computed property names with function
expressions.
*) Bugfix: fixed implicit name for a function expression declared in
arrays.
*) Bugfix: fixed parsing of for-in loops.
*) Bugfix: fixed Date.parse() with ISO-8601 format and UTC time
offset.
Changes with njs 0.7.12 10 Apr 2023
nginx modules:
*) Bugfix: fixed Headers() constructor in Fetch API.
Core:
*) Feature: added Hash.copy() method in "crypto" module.
*) Feature: added "zlib" module.
*) Improvement: added support for export {name as default}
statement.
*) Bugfix: fixed Number constructor according to the spec.
Changes with njs 0.7.11 9 Mar 2023
nginx modules:
*) Bugfix: added missed linking with libxml2 for the dynamic module.
The bug was introduced in 0.7.10.
Core:
*) Feature: added XMLNode API to modify XML documents.
*) Change: removed XML_PARSE_DTDVALID during parsing of XML document
due to security implications. The issue was introduced
in 0.7.10. When XML_PARSE_DTDVALID is enabled, libxml2 parses and
executes external entities present inside an XML document.
*) Bugfix: fixed the detection of await in arguments.
*) Bugfix: fixed Error() instance dumping when "name" prop is not
primitive.
*) Bugfix: fixed array instance with a getter property dumping.
*) Bugfix: fixed njs_object_property() with NJS_WHITEOUT properties.
*) Bugfix: fixed func instance dumping with "name" as getter.
*) Bugfix: fixed attaching of a stack to an error object.
*) Bugfix: fixed String.prototype.replace() with replacement containing
"$'", "$`".
Changes with njs 0.7.10 7 Feb 2023
nginx modules:
*) Feature: added Request, Response and Headers ctors in Fetch API.
*) Bugfix: fixed nginx logger callback for calls in master process.
Core:
*) Feature: added signal support in CLI.
*) Feature: added "xml" module for working with XML documents.
*) Feature: extended support for symmetric and asymmetric keys
in WebCrypto. Most notably JWK format for importKey() was added.
*) Feature: extended support for symmetric and asymmetric keys
in WebCrypto. Most notably JWK format for importKey() was added.
generateKey() and exportKey() were also implemented.
*) Feature: added String.prototype.replaceAll().
*) Bugfix: fixed for(expr1; conditional syntax error handling.
*) Bugfix: fixed Object.values() and Object.entries() with external
objects.
*) Bugfix: fixed RegExp.prototype[@@replace]().
Changes with njs 0.7.9 17 Nov 2022
nginx modules:
*) Bugfix: fixed Fetch Response prototype reinitialization.
When at least one js_import directive was declared in both HTTP
and Stream, ngx.fetch() returned inapproriate response in Stream.
The bug was introduced in 0.7.7.
Core:
*) Bugfix: fixed String.prototype.replace(re) if re.exec() returns
non-flat array.
*) Bugfix: fixed Array.prototype.fill() when start object changes
"this".
*) Bugfix: fixed description for fs.mkdir() and fs.rmdir() methods.
*) Bugfix: fixed %TypedArray%.prototype.set(s) when s element changes
"this".
*) Bugfix: fixed Array.prototype.splice(s, d) when d resizes "this"
during evaluation.
*) Bugfix: fixed for-in loop with left and right hand side
expressions.
Changes with njs 0.7.8 25 Oct 2022
nginx modules:
*) Feature: added js_preload_object directive.
*) Feature: added ngx.conf_prefix property.
*) Feature: added s.sendUpstream() and s.sendDownstream()
in stream module.
*) Feature: added support for HEAD method in Fetch API.
*) Improvement: improved async callback support for s.send()
in stream module.
Core:
*) Feature: added "name" instance property for a function
object.
*) Feature: added njs.memoryStats object.
*) Bugfix: fixed String.prototype.trimEnd() with unicode
string.
*) Bugfix: fixed Object.freeze() with fast arrays.
*) Bugfix: fixed Object.defineProperty() with fast arrays.
*) Bugfix: fixed async token as a property name of an object.
*) Bugfix: fixed property set instruction when key modifies
base binding.
*) Bugfix: fixed complex assignments.
*) Bugfix: fixed handling of unhandled promise rejection.
*) Bugfix: fixed process.env when duplicate environ variables
are present.
*) Bugfix: fixed double declaration detection in modules.
*) Bugfix: fixed bound function calls according to the spec.
*) Bugfix: fixed break label for if statement.
*) Bugfix: fixed labeled empty statements.
Changes with njs 0.7.7 30 Aug 2022
nginx modules:
*) Feature: the number of nginx configuration contexts where
js directives can be specified is extended.
HTTP: js_import, js_path, js_set and js_var are allowed
in server and location contexts. js_content, js_body_filter
and js_header_filter are allowed in 'if' context.
Stream: js_import, js_path, js_set and js_var are allowed
in server context.
*) Feature: added r.internal property.
*) Bugfix: fixed reading response body in fetch API.
*) Bugfix: fixed "js_fetch_timeout" in stream module.
*) Bugfix: fixed socket leak with 0 fetch timeout.
Core:
*) Feature: extended "fs" module. Added fs.openSync(),
fs.promises.open(), fs.fstatSync(), fs.readSync(),
fs.writeSync().
The following properties of FileHandle are implemented:
fd, read(), stat(), write(), close().
*) Bugfix: fixed parseInt(), parseFloat(), Symbol.for()
with no arguments.
Changes with njs 0.7.6 19 Jul 2022
nginx modules:
*) Feature: improved r.args object. Added support for multiple
arguments with the same key. Added case sensitivity for
keys. Keys and values are percent-decoded now.
*) Bugfix: fixed r.headersOut setter for special headers.
Core:
*) Feature: added Symbol.for() and Symbol.keyfor().
*) Feature: added btoa() and atob() from WHATWG spec.
*) Bugfix: fixed large non-decimal literals.
*) Bugfix: fixed unicode argument trimming in parseInt().
*) Bugfix: fixed break instruction in a try-catch block.
*) Bugfix: fixed async function declaration in CLI.
Changes with njs 0.7.5 21 Jun 2022
nginx modules:
*) Change: adapting to changes in nginx header structures.
*) Bugfix: fixed r.headersOut special getters when value
is absent.
*) Change: returning undefined value instead of an empty string
for Content-Type when the header is absent.
Core:
*) Bugfix: fixed catching of the exception thrown from an
awaited function.
*) Bugfix: fixed function value initialization.
*) Bugfix: fixed interpreter when await fails.
*) Bugfix: fixed typed-array constructor when source array
is changed while iterating.
*) Bugfix: fixed String.prototype.replace() with byte strings.
*) Bugfix: fixed template literal from producing byte-strings.
*) Bugfix: fixed array iterator with sparse arrays.
*) Bugfix: fixed memory free while converting a flat array to
a slow array.
*) Bugfix: properly handling NJS_DECLINE in promise native
functions.
*) Bugfix: fixed working with an array-like object in Promise.all()
and friends.
Changes with njs 0.7.4 24 May 2022
nginx modules:
*) Feature: added extended directive to configure Fetch API.
The following directives were added: "js_fetch_timeout",
"js_fetch_verify", "js_fetch_buffer_size",
"js_fetch_max_response_buffer_size".
*) Change: r.internalRedirect() now accepts escaped URIs.
*) Bugfix: fixed Response parsing with more than 8 headers
in Fetch API.
Core:
*) Feature: added njs.version_number property.
*) Feature: added compatibility with BoringSSL for
WebCrypto API.
*) Bugfix: fixed Array.prototype.sort() when arr size is changed
in a comparator.
*) Bugfix: fixed Array.prototype.slice() with slow "this" argument.
*) Bugfix: fixed aggregation methods of Promise ctor with
array-like object.
*) Bugfix: fixed Array.prototype.lastIndexOf() with unicode
string as "this".
*) Bugfix: fixed JSON.parse() when reviver function is provided.
*) Bugfix: fixed Object.defineProperty() when a recursive descriptor
is provided.
*) Bugfix: fixed Array.prototype.fill() for typed-arrays.
*) Bugfix: making function expression binding immutable according
the specs.
*) Bugfix: fixed redefinition of special props in
Object.defineProperty().
Changes with njs 0.7.3 12 Apr 2022
Core:
*) Feature: added support of module resolution callback.
This feature allows a host environment to control
how imported modules are loaded.
*) Bugfix: fixed backtraces while traversing imported user
modules.
*) Bugfix: fixed Array.prototype.concat() when "this" is a slow
array.
*) Bugfix: fixed frame allocation from an awaited frame.
*) Bugfix: fixed allocation of large array literals.
*) Bugfix: fixed interpreter when "toString" conversion fails.
Changes with njs 0.7.2 25 Jan 2022
Core:
*) Bugfix: fixed Array.prototype.join() when array is changed
while iterating.
*) Bugfix: fixed Array.prototype.slice() when array is changed
while iterating.
*) Bugfix: fixed Array.prototype.concat() when array is changed
while iterating.
*) Bugfix: fixed Array.prototype.reverse() when array is changed
while iterating.
*) Bugfix: fixed Buffer.concat() with subarrays.
Thanks to Sylvain Etienne.
*) Bugfix: fixed type confusion bug while resolving promises.
*) Bugfix: fixed Function.prototype.apply() with large array
arguments.
*) Bugfix: fixed recursive async function calls.
*) Bugfix: fixed function redeclaration. The bug was introduced
in 0.7.0.
Changes with njs 0.7.1 28 Dec 2021
nginx modules:
*) Change: the "js_include" directive deprecated since 0.4.0 was
removed.
*) Change: PCRE/PCRE2-specific code was moved to the modules.
This ensures that njs uses the same RegExp library as nginx.
Core:
*) Feature: extended "fs" module. Added stat(), fstat()
and friends.
*) Change: default RegExp engine for CLI is switched
to PCRE2.
*) Bugfix: fixed decodeURI() and decodeURIComponent() with
invalid byte strings. The bug was introduced in 0.4.3.
*) Bugfix: fixed heap-use-after-free in await frame.
The bug was introduced in 0.7.0.
*) Bugfix: fixed WebCrypto sign() and verify() methods
with OpenSSL 3.0.
*) Bugfix: fixed exception throwing when RegExp match fails.
The bug was introduced in 0.1.15.
*) Bugfix: fixed catching of exception thrown in try block
of async function. The bug was introduced in 0.7.0.
*) Bugfix: fixed execution of async function in synchronous
context. The bug was introduced in 0.7.0.
*) Bugfix: fixed function redeclaration in CLI when interactive
mode is on. The bug was introduced in 0.6.2.
*) Bugfix: fixed typeof operator with DataView object.
*) Bugfix: eliminated information leak in Buffer.from().
Changes with njs 0.7.0 19 Oct 2021
nginx modules:
*) Feature: added HTTPS support for Fetch API.
*) Feature: added setReturnValue() method.
Core:
*) Feature: introduced Async/Await implementation.
*) Feature: added WebCrypto API implementation.
*) Bugfix: fixed copying of closures for declared
functions. The bug was introduced in 0.6.0.
*) Bugfix: fixed unhandled promise rejection in handle
events.
*) Bugfix: fixed Response.headers getter in Fetch API.
Changes with njs 0.6.2 31 Aug 2021
nginx modules:
*) Bugfix: fixed CPU hog when js_filter is registered
in both directions.
Core:
*) Feature: introduced AggregateError implementation.
*) Feature: added remaining Promise constructor methods.
The following methods were added: Promise.all(),
Promise.allSettled(), Promise.any(), Promise.race().
*) Improvement: removed recursion from code generator.
*) Bugfix: fixed rest parameter parsing without binding
identifier.
*) Bugfix: fixed resolve/reject callback for
Promise.prototype.finally().
*) Bugfix: fixed %TypedArray%.prototype.join() with
detached buffer.
*) Bugfix: fixed memory leak in interactive shell.
Changes with njs 0.6.1 29 Jun 2021
*) Bugfix: fixed RegExpBuiltinExec() with UTF-8 only regexps.
The bug was introduced in 0.4.2.
*) Bugfix: fixed parsing of export default declaration with
non-assignment expressions.
Thanks to Artem S. Povalyukhin.
Changes with njs 0.6.0 15 Jun 2021
Core:
*) Feature: added let and const declaration support.
*) Feature: added RegExp.prototype[Symbol.split].
*) Feature: added sticky flag support for RegExp.
*) Bugfix: fixed heap-buffer-overflow in
String.prototype.lastIndexOf().
*) Bugfix: fixed RegExp.prototype.test() according to the
specification.
*) Bugfix: fixed String.prototype.split() according to the
specification.
*) Bugfix: fixed use-of-uninitialized-value while tracking
rejected promises.
*) Bugfix: fixed njs.dump() for objects with circular
references.
Changes with njs 0.5.3 30 Mar 2021
nginx modules:
*) Feature: added the "js_var" directive.
Changes with njs 0.5.2 09 Mar 2021
nginx modules:
*) Feature: added the "js_body_filter" directive.
*) Feature: introduced the "status" property for stream session
object.
Core:
*) Feature: added njs.on('exit') callback support.
*) Bugfix: fixed property descriptor reuse for not extensible
objects.
Thanks to Artem S. Povalyukhin.
*) Bugfix: fixed Object.freeze() and friends according to
the specification.
Thanks to Artem S. Povalyukhin.
*) Bugfix: fixed Function() in CLI mode.
*) Bugfix: fixed for-in iteration of typed array values.
Thanks to Artem S. Povalyukhin.
Changes with njs 0.5.1 16 Feb 2021
nginx modules:
*) Feature: introduced ngx.fetch() method implementing Fetch API.
The following init options are supported:
body, headers, buffer_size (nginx specific),
max_response_body_size (nginx specific), method.
The following properties and methods of Response object are
implemented: arrayBuffer(), bodyUsed, json(), headers, ok,
redirect, status, statusText, text(), type, url.
The following properties and methods of Header object are
implemented: get(), getAll(), has().
Notable limitations: only the http:// scheme is supported,
redirects are not handled.
In collaboration with 洪志道 (Hong Zhi Dao).
*) Feature: added the "js_header_filter" directive.
*) Bugfix: fixed processing buffered data in body filter
in stream module.
Core:
*) Bugfix: fixed safe mode bypass in Function constructor.
*) Bugfix: fixed Date.prototype.toISOString() with invalid date
values.
Changes with njs 0.5.0 01 Dec 2020
nginx modules:
*) Feature: introduced global "ngx" object.
The following methods were added:
ngx.log(level, msg)
The following properties were added:
ngx.INFO,
ngx.WARN,
ngx.ERR.
*) Feature: added support for Buffer object where string
is expected.
*) Feature: added Buffer version of existing properties.
The following properties were added:
r.requestBuffer (r.requestBody),
r.responseBuffer (r.responseBody),
r.rawVariables (r.variables),
s.rawVariables (s.variables).
The following events were added in stream module:
upstream (upload),
downstream (download).
*) Improvement: added aliases to existing properties.
The following properties were added:
r.requestText (r.requestBody),
r.responseText (r.responseBody).
*) Improvement: throwing an exception in r.internalRedirect()
for a subrequest.
*) Bugfix: fixed promise r.subrequest() with error_page redirect.
*) Bugfix: fixed promise events handling.
Core:
*) Feature: added TypeScript definitions for built-in
modules.
Thanks to Jakub Jirutka.
*) Feature: tracking unhandled promise rejection.
*) Feature: added initial iterator support.
Thanks to Artem S. Povalyukhin.
*) Improvement: TypeScript definitions are refactored.
Thanks to Jakub Jirutka.
*) Improvement: added forgotten support for
Object.prototype.valueOf() in Buffer.from().
*) Bugfix: fixed heap-use-after-free in JSON.parse().
*) Bugfix: fixed heap-use-after-free in JSON.stringify().
*) Bugfix: fixed JSON.stringify() for arrays resizable via
getters.
*) Bugfix: fixed heap-buffer-overflow for
RegExp.prototype[Symbol.replace].
*) Bugfix: fixed returned value for Buffer.prototype.write*
functions.
*) Bugfix: fixed querystring.stringify().
Thanks to Artem S. Povalyukhin.
*) Bugfix: fixed the catch handler for
Promise.prototype.finally().
*) Bugfix: fixed querystring.parse().
Changes with njs 0.4.4 29 Sep 2020
nginx modules:
*) Bugfix: fixed location merge.
*) Bugfix: fixed r.httpVersion for HTTP/2.
Core:
*) Feature: added support for numeric separators (ES12).
*) Feature: added remaining methods for %TypedArray%.prototype.
The following methods were added: every(), filter(), find(),
findIndex(), forEach(), includes(), indexOf(), lastIndexOf(),
map(), reduce(), reduceRight(), reverse(), some().
*) Feature: added %TypedArray% remaining methods.
The following methods were added: from(), of().
*) Feature: added DataView object.
*) Feature: added Buffer object implementation.
*) Feature: added support for ArrayBuffer in
TextDecoder.prototype.decode().
*) Feature: added support for Buffer object in "crypto" methods.
*) Feature: added support for Buffer object in "fs" methods.
*) Change: Hash.prototype.digest() and Hmac.prototype.digest()
now return a Buffer instance instead of a byte string when
encoding is not provided.
*) Change: fs.readFile() and friends now return a Buffer instance
instead of a byte string when encoding is not provided.
*) Bugfix: fixed function "prototype" property handler while
setting.
*) Bugfix: fixed function "constructor" property handler while
setting.
*) Bugfix: fixed String.prototype.indexOf() for byte strings.
*) Bugfix: fixed RegExpBuiltinExec() with a global flag and
byte strings.
*) Bugfix: fixed RegExp.prototype[Symbol.replace] when the
replacement value is a function.
*) Bugfix: fixed TextDecoder.prototype.decode() with non-zero
TypedArray offset.
Changes with njs 0.4.3 11 Aug 2020
Core:
*) Feature: added Query String module.
*) Feature: improved fs.mkdir() to support recursive directory creation.
Thanks to Artem S. Povalyukhin.
*) Feature: improved fs.rmdir() to support recursive directory removal.
Thanks to Artem S. Povalyukhin.
*) Feature: introduced UTF-8 decoder according to WHATWG encoding spec.
*) Feature: added TextEncoder/TextDecoder implementation.
*) Bugfix: fixed parsing return statement without semicolon.
*) Bugfix: fixed njs_number_to_int32() for big-endian platforms.
*) Bugfix: fixed unit test on big-endian platforms.
*) Bugfix: fixed regexp-literals parsing with '=' characters.
*) Bugfix: fixed pre/post increment/decrement in assignment operations.
Changes with njs 0.4.2 07 Jul 2020
Core:
*) Feature: added RegExp.prototype[Symbol.replace].
*) Feature: introduced line level backtrace.
*) Feature: added %TypedArray%.prototype.sort().
*) Feature: extended "fs" module. Added mkdir(), readdir(), rmdir()
and friends.
Thanks to Artem S. Povalyukhin.
*) Improvement: parser refactoring.