You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Refactored how the JIT handles POSIX signals and how they affect thread stacks, allowing us to use the native stack register for Erlang stacks on more platforms.
56
+
57
+
Notably, containers built on 64-bit x86 Alpine Linux images will now perform much better in sequential code. As an example, running `dialyzer` over the OTP code base finishes about 15% quicker.
58
+
59
+
Own Id: OTP-18568 Aux Id: [PR-7174]
60
+
61
+
- The `m:instrument` module can now track allocations on a per-process or per-port basis.
62
+
63
+
Own Id: OTP-18577 Aux Id: [PR-7236]
64
+
65
+
- The `pid` field returned from [`erlang:fun_info/1,2`](`erlang:fun_info/2`) is now always the pid for the `init` process of the local node, not the pid for the actual process that created the fun.
66
+
67
+
*** POTENTIAL INCOMPATIBILITY ***
68
+
69
+
Own Id: OTP-18594 Aux Id: [PR-7274]
70
+
71
+
- By default, escripts will now be compiled instead of interpreted. That means that the `compiler` application must be installed.
72
+
73
+
*** POTENTIAL INCOMPATIBILITY ***
74
+
75
+
Own Id: OTP-18639 Aux Id: [PR-7348]
76
+
77
+
- A binary returned from the `m:socket` receive functions is no longer created as a sub binary of an often large receive buffer binary (socket option `{otp,rcvbuf}`). This avoids space waste, trusting the allocators to implement reallocation efficiently.
78
+
79
+
Own Id: OTP-18642 Aux Id: [GH-6152], [PR-7465]
80
+
81
+
- The default process limit has been raised to `1048576` processes.
82
+
83
+
Own Id: OTP-18699 Aux Id: [PR-7388]
84
+
85
+
- The `erlang:system_monitor/2` functionality is now able to monitor long message queues in the system.
86
+
87
+
Own Id: OTP-18709 Aux Id: [PR-7651]
88
+
89
+
- The `erl` command now supports the `-S` flag, which is similar to the `-run` flag, except that it will pass all arguments up to end of the command line to the called function. (The `-run` flag will not pass arguments beginning with a hyphen.) Another difference is that `-S` will always call a function with one argument, passing an empty list if no arguments were given.
90
+
91
+
Own Id: OTP-18744 Aux Id: [PR-7470]
92
+
93
+
- When implementing an alternative carrier for the Erlang distribution, a separate input handler process may now be registered, using `erlang:dist_ctrl_input_handler/2`, also in the case when the distribution controller is a port.
94
+
95
+
Own Id: OTP-18774 Aux Id: [PR-7110]
96
+
97
+
- The call stack trace has now been added to the error reported by `erlang:process_flag/2` when `max_heap_size` limit has been exceeded.
98
+
99
+
Own Id: OTP-18779 Aux Id: [PR-7592]
100
+
101
+
- `-callback` attributes have been added to `m:erl_tracer`.
102
+
103
+
Own Id: OTP-18794 Aux Id: [PR-7703]
104
+
105
+
- For `inet_backend = socket`, setting the `active` socket option alone, to `once`, `true` or `N` has been optimized, as well as the corresponding data delivery.
106
+
107
+
Own Id: OTP-18835
108
+
109
+
- New functions `socket:sendv/*` for sending I/O vectors have been added.
110
+
111
+
Own Id: OTP-18845
112
+
113
+
- Socket options that take string now also accept binaries.
114
+
115
+
Own Id: OTP-18849 Aux Id: [PR-6510]
116
+
117
+
- Native coverage support has been implemented in the JIT. It will automatically be used by the `m:cover` tool to reduce the execution overhead when running cover-compiled code.
118
+
119
+
There are also new APIs to support native coverage without using the `cover` tool.
120
+
121
+
To instrument code for native coverage it must be compiled with the [`line_coverage`](`m:compile#line_coverage`) option.
122
+
123
+
To enable native coverage in the runtime system, start it like so:
124
+
125
+
```text
126
+
$ erl +JPcover true
127
+
```
128
+
129
+
There are also the following new functions for supporting native coverage:
130
+
131
+
* `code:coverage_support/0`
132
+
* `code:get_coverage/2`
133
+
* `code:reset_coverage/1`
134
+
* `code:get_coverage_mode/0`
135
+
* `code:get_coverage_mode/1`
136
+
* `code:set_coverage_mode/1`
137
+
138
+
Own Id: OTP-18856 Aux Id: [PR-7856]
139
+
140
+
- Changed the default value of the command line flag `-code_path_choice` to `strict`.
141
+
142
+
Note that for application systems using archives, it is necessary to add the `code_path_choice relaxed` to the command line that invokes `erl`.
143
+
144
+
Own Id: OTP-18894 Aux Id: [PR-7243]
145
+
146
+
- Added module loading to `erl -init_debug` printouts.
147
+
148
+
Own Id: OTP-18929 Aux Id: [PR-8004]
149
+
150
+
- When the runtime system halts, it performs various flush operations before terminating. By default there is no limit on how much time the flush operations are allowed to take. A new *halt flush timeout* functionality has been introduced which can be used for limiting the amount of time that the flushing operations are allowed to take. For more information see the documentation of the [`flush_timeout`](`m:erlang#halt_flush_timeout`) option of the [`erlang:halt/2`](`erlang:halt/2`) BIF and the documentation of the `erl` [`+zhft <Timeout>`](erl_cmd.md#+zhft) command line flag.
151
+
152
+
Own Id: OTP-18938 Aux Id: [PR-8035], [GH-7438]
153
+
154
+
- Optimized code loading by moving certain operations from the code server to the caller.
155
+
156
+
Own Id: OTP-18941 Aux Id: [PR-7981]
157
+
158
+
- Updated asmjit to version a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d
159
+
160
+
Own Id: OTP-18942
161
+
162
+
- The deprecated functions in `m:zlib` have been removed. That includes `inflateChunk/{1,2}`, `getBufSize/1`, `setBufSize/2`, the CRC32 functions, and the Adler checksum functions.
163
+
164
+
Own Id: OTP-18950
165
+
166
+
- The documentation has been migrated to use Markdown and ExDoc.
167
+
168
+
Own Id: OTP-18955 Aux Id: [PR-8026]
169
+
170
+
- Safe destructive update of tuples has been implemented in the compiler and runtime system. This allows the VM to update tuples in-place when it is safe to do so, thus improving performance by doing less copying but also by producing less garbage.
171
+
172
+
Example:
173
+
174
+
```erlang
175
+
-record(rec, {a,b,c}).
176
+
177
+
update(#rec{a=needs_update,b=N}=R0) ->
178
+
R = R0#rec{a=up_to_date},
179
+
if
180
+
N < 0 ->
181
+
R#rec{c=negative};
182
+
N == 0 ->
183
+
R#rec{c=zero};
184
+
N > 0 ->
185
+
R#rec{c=positive}
186
+
end.
187
+
```
188
+
189
+
The record updates in each of the three clauses of the `if` can safely be done in-place, because variable `R` is not used again.
190
+
191
+
Own Id: OTP-18972 Aux Id: [PR-8090]
192
+
193
+
- The obsolete and undocumented support for opening a port to an external
194
+
resource by passing an atom (or a string) as first argument to
195
+
[`open_port()`](`erlang:open_port/2`), implemented by the vanilla driver,
196
+
has been removed. This feature has been scheduled for removal in OTP 27
197
+
since the release of OTP 26.
198
+
199
+
Own Id: OTP-18976 Aux Id: [PR-7125]
200
+
201
+
- An optional NIF callback `ERL_NIF_OPT_ON_UNLOAD_THREAD` to be called by all scheduler threads when a NIF library is unloaded. Used for releasing thread specific data. Can be set with function `enif_set_option`.
202
+
203
+
Own Id: OTP-18977 Aux Id: [PR-7809]
204
+
205
+
- There is a new module `m:trace` in Kernel providing the same trace functionality as `erlang:trace/3` and `erlang:trace_pattern/3`, but with the addition of **dynamic isolated trace sessions**.
206
+
207
+
Own Id: OTP-18980
208
+
209
+
- Added the `+MMlp on|off` emulator option to let the `mseg` allocator use "large pages" (sometimes known as "huge pages" or "super pages"). This currently only affects super-carrier allocations, but may be extended in the future.
210
+
211
+
Own Id: OTP-18984 Aux Id: [PR-7977]
212
+
213
+
- `inet_backend = socket` has been optimized and reworked to be more compatible with the original `inet_backend = inet`.
214
+
215
+
Own Id: OTP-19004 Aux Id: OTP-18835
216
+
217
+
- The `socket` documentation has been reworked, and due to
218
+
that a few details were fixed:
219
+
* `socket:is_supported/1` now returns `true` for example for `protocols`
220
+
that is a "category", not an item.
221
+
* `socket:cancel_monitor/1` no longer badargs for a monitor that was set by
222
+
another process, instead it returns `false` as for other unknown
- Specs have been added to all `asn1ct` API functions.
37
+
38
+
Own Id: OTP-18804 Aux Id: [PR-7738]
39
+
40
+
- The documentation has been migrated to use Markdown and ExDoc.
41
+
42
+
Own Id: OTP-18955 Aux Id: [PR-8026]
43
+
44
+
- The `jer` (JSON Encoding Rules) for ASN.1 now use the new `m:json` module for encoding and decoding JSON. Thus, there is no longer any need for an external JSON library.
Copy file name to clipboardExpand all lines: lib/common_test/doc/notes.md
+61Lines changed: 61 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,67 @@ limitations under the License.
19
19
-->
20
20
# Common Test Release Notes
21
21
22
+
## Common_Test 1.27
23
+
24
+
### Improvements and New Features
25
+
26
+
- Calls to `ct:capture_start/0` and `ct:capture_stop/0` are now synchronous to ensure that all output is captured.
27
+
28
+
Own Id: OTP-18658 Aux Id: [PR-7380]
29
+
30
+
- The order in which multiple hooks are executed can now be reversed after each config function. See [CTH Execution Order](`e:common_test:ct_hooks_chapter.md#cth_execution_order`).
31
+
32
+
Own Id: OTP-18682 Aux Id: [GH-7397], [PR-7496], ERIERL-43
33
+
34
+
- The default CSS will now include a basic dark mode handling if it is preferred by the browser.
35
+
36
+
Own Id: OTP-18761 Aux Id: [PR-7428]
37
+
38
+
-`-callback` attributes have been added to `m:ct_suite` and `m:ct_hooks`.
39
+
40
+
Own Id: OTP-18781 Aux Id: [PR-7701]
41
+
42
+
- The built-in [cth_log_redirect](`e:common_test:ct_hooks_chapter.md#built-in-cths`) hook can now be configured to replace default logger reports in terminal with HTML logs.
43
+
44
+
Own Id: OTP-18875 Aux Id: [PR-7891]
45
+
46
+
- Error handling for the `m:ct_property_test` framework has been enhanced.
47
+
48
+
Own Id: OTP-18881 Aux Id: [PR-7824]
49
+
50
+
- Enhance test case documentation, making it clear how a test case can be failed.
51
+
52
+
Own Id: OTP-18892 Aux Id: [PR-7869]
53
+
54
+
- The failing line in the test source code is now colored to make it easier to find on the screen.
55
+
56
+
Own Id: OTP-18898 Aux Id: [PR-7917]
57
+
58
+
- Function specifications and types have been added to all public API functions.
59
+
60
+
Own Id: OTP-18913
61
+
62
+
- The documentation has been migrated to use Markdown and ExDoc.
63
+
64
+
Own Id: OTP-18955 Aux Id: [PR-8026]
65
+
66
+
- The suite execution elapsed time is now included in the index page.
0 commit comments