aboutsummaryrefslogblamecommitdiffstats
path: root/release-notes/OTP-27.2.README.txt
blob: 3e8544e5860ae8561fbbfcf36061aefb2350cedd (plain) (tree)
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





























































































































































































































































































































































































































































































































































































































































































































































































                                                                                                                    
Patch Package:           OTP 27.2
Git Tag:                 OTP-27.2
Date:                    2024-12-11
Trouble Report Id:       OTP-19158, OTP-19221, OTP-19223, OTP-19225,
                         OTP-19232, OTP-19234, OTP-19243, OTP-19248,
                         OTP-19253, OTP-19260, OTP-19261, OTP-19264,
                         OTP-19270, OTP-19273, OTP-19280, OTP-19281,
                         OTP-19282, OTP-19283, OTP-19284, OTP-19289,
                         OTP-19292, OTP-19299, OTP-19300, OTP-19301,
                         OTP-19302, OTP-19304, OTP-19305, OTP-19307,
                         OTP-19309, OTP-19310, OTP-19320, OTP-19321,
                         OTP-19322, OTP-19329, OTP-19330, OTP-19331,
                         OTP-19333, OTP-19335, OTP-19338, OTP-19341,
                         OTP-19342, OTP-19344, OTP-19351, OTP-19353,
                         OTP-19360, OTP-19361, OTP-19362, OTP-19368,
                         OTP-19370, OTP-19372, OTP-19373, OTP-19375,
                         OTP-19377, OTP-19379, OTP-19380, OTP-19387
Seq num:                 ERIERL-1091, ERIERL-1093, ERIERL-1149,
                         ERIERL-1152, ERIERL-1154, GH-7466, GH-8487,
                         GH-8510, GH-8544, GH-8706, GH-8755, GH-8759,
                         GH-8769, GH-8783, GH-8810, GH-8815, GH-8818,
                         GH-8821, GH-8829, GH-8867, GH-8899, GH-8903,
                         GH-8942, GH-8948, GH-8963, GH-8983, GH-8997,
                         GH-9027, GH-9087, PR-8532, PR-8671, PR-8744,
                         PR-8776, PR-8788, PR-8789, PR-8794, PR-8800,
                         PR-8801, PR-8816, PR-8833, PR-8838, PR-8844,
                         PR-8856, PR-8878, PR-8879, PR-8884, PR-8889,
                         PR-8898, PR-8902, PR-8906, PR-8907, PR-8909,
                         PR-8912, PR-8919, PR-8920, PR-8921, PR-8947,
                         PR-8949, PR-8954, PR-8955, PR-8956, PR-8959,
                         PR-8970, PR-8972, PR-8978, PR-8986, PR-8987,
                         PR-9002, PR-9003, PR-9008, PR-9016, PR-9021,
                         PR-9023, PR-9034, PR-9043, PR-9062, PR-9067,
                         PR-9078, PR-9093, PR-9097, PR-9108, PR-9127
System:                  OTP
Release:                 27
Application:             common_test-1.27.5, compiler-8.5.4,
                         crypto-5.5.2, debugger-5.5, dialyzer-5.3,
                         eldap-1.2.14, erts-15.2, inets-9.3.1,
                         kernel-10.2, megaco-4.7, mnesia-4.23.3,
                         observer-2.17, os_mon-2.10.1,
                         public_key-1.17, snmp-5.18, ssh-5.2.5,
                         ssl-11.2.6, stdlib-6.2, tools-4.1.1
Predecessor:             OTP 27.1.3

Check out the git tag OTP-27.2, and build a full OTP system including
documentation. Apply one or more applications from this build as patches to your
installation using the 'otp_patch_apply' tool. For information on install
requirements, see descriptions for each application version below.

# POTENTIAL INCOMPATIBILITIES

- The HTTP client now correctly takes into account the `full_result` option when
  returning an asynchronous request.

  Own Id: OTP-19158
  Application(s): inets

# OTP-27.2

## Improvements and New Features

- The `SECURITY.md` file with guidelines for reporting vulnerabilities and
  security issues has been added to the git repository.

  Own Id: OTP-19338
  Related Id(s): PR-9023

# common_test-1.27.5

The common_test-1.27.5 application can be applied independently of other
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fixed a bug where the sum of testcases' execution time in HTML logs was
  sometimes miscalculated, and the table was not fully printed.

  Own Id: OTP-19284
  Related Id(s): ERIERL-1093, PR-8909

> #### Full runtime dependencies of common_test-1.27.5
>
> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0,
> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0,
> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8

# compiler-8.5.4

The compiler-8.5.4 application can be applied independently of other
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fixed a crash in the common sub-expression elimination pass.

  Own Id: OTP-19243
  Related Id(s): GH-8818, PR-8838

- Fixed a bug where bogus code was generated for consecutive calls to
  erlang:setelement/2, potentially crashing the runtime system.

  Own Id: OTP-19270
  Related Id(s): GH-8783, PR-8898

- When the `line_coverage` option was used, exceptions could show the wrong line
  for where the exception was raised.

  Own Id: OTP-19282
  Related Id(s): PR-8907

- The `line_coverage` option would be ignored if given in a `compile()`
  attribute within a module.

  Own Id: OTP-19309
  Related Id(s): GH-8942, PR-8970

- A segment matching a float in a binary generator will now skip any invalid
  float (such as a NaN) and continue matching the rest of the binary. Before
  this correction, the comprehension would stop as soon as an invalid float was
  encountered.

  Example:

      1> BadFloat = <<-1:64>>.
      <<"ÿÿÿÿÿÿÿÿ">>
      2> [X || <<X:64/float>> <= <<0.0/float,BadFloat/binary,42.0/float>>].
      [0.0,42.0]

  Own Id: OTP-19331
  Related Id(s): PR-8978

> #### Full runtime dependencies of compiler-8.5.4
>
> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0

# crypto-5.5.2

The crypto-5.5.2 application can be applied independently of other applications
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- crypto:strong_rand_bytes/2 fixed to work on Ubuntu pro with installed FIPS
  support.

  Own Id: OTP-19223
  Related Id(s): GH-8769, PR-8800

- Fixed crypto:hash_final/1 for digest types `shake128` and `shake256` when
  using OpenSSL 3.4 or newer.

  Own Id: OTP-19329
  Related Id(s): GH-8997, PR-9002

> #### Full runtime dependencies of crypto-5.5.2
>
> erts-9.0, kernel-5.3, stdlib-3.9

# debugger-5.5

The debugger-5.5 application can be applied independently of other applications
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Defining a fun in the shell using the syntax `fun Name/Arity` would fail. This
  has been corrected so that the following now works:

      1> F = fun is_atom/1.
      #Fun.erl.42.18682967>
      > F(a).
      true
      3> Id = fun id/1.
      #Fun.erl.42.18682967>
      4> Id(42).
      ** exception error: undefined shell command id/1
      5> id(I) -> I.
      ok
      6> Id(42).
      42

  The Debugger has also been corrected to correctly handle this syntax for a
  BIF.

  Own Id: OTP-19322
  Related Id(s): GH-8963, PR-8987

## Improvements and New Features

- Erlang/OTP type specifications has been updated to eliminate overlapping
  domains.

  Own Id: OTP-19310
  Related Id(s): GH-8810, GH-8821, PR-8986

> #### Full runtime dependencies of debugger-5.5
>
> compiler-8.0, erts-15.0, kernel-10.0, stdlib-3.15, wx-2.0

# dialyzer-5.3

The dialyzer-5.3 application can be applied independently of other applications
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fixed type inference for `erlang:system_info(logical_processors)`.

  Own Id: OTP-19307
  Related Id(s): GH-8948, PR-8954

- Dialyzer would crash when attempting to analyze a module compiled with the
  `line_coverage` option.

  Own Id: OTP-19344
  Related Id(s): GH-9027, PR-9034

## Improvements and New Features

- Erlang/OTP type specifications has been updated to eliminate overlapping
  domains.

  Own Id: OTP-19310
  Related Id(s): GH-8810, GH-8821, PR-8986

> #### Full runtime dependencies of dialyzer-5.3
>
> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0

# eldap-1.2.14

The eldap-1.2.14 application can be applied independently of other applications
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Corrected dialyzer spec for usage of TLS options. The incorrect usage for the
  options in `eldap` could cause dialyzer warnings in user code referring to
  `eldap` specs.

  Own Id: OTP-19281
  Related Id(s): PR-8906

> #### Full runtime dependencies of eldap-1.2.14
>
> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4

# erts-15.2

The erts-15.2 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- gen_sctp:peeloff/2 has been fixed to inherit socket options to the peeled
  off socket more like gen_tcp:accept/1, for example the options `tos` or
  `tclass`.

  When setting SCTP options that are unsupported on the platform, some should be
  silently ignored, but a bug caused the option parsing to derail so the options
  after could bail out and cause an error instead. This has been fixed.

  Own Id: OTP-19225
  Related Id(s): PR-8789

- Fixed a bug where Erlang would corrupt the terminal settings if stdin was a
  TTY but stdout was not.

  Own Id: OTP-19232
  Related Id(s): GH-8487, PR-8794

- Fixed a bug in the non-JIT VM when loading a NIF over a function that is
  already traced by more than one session. This caused a VM crash. This bug has
  existed since OTP-27.0, where multiple trace sessions were introduced.

  Own Id: OTP-19248
  Related Id(s): PR-8856

- Fixed a bug where the loading of modules with extremely large binary
  construction instructions crashed the emulator on AArch64.

  Own Id: OTP-19261
  Related Id(s): GH-8815, PR-8816

- `inet:getifaddrs/0,1` is improved when using inet_backend = socket.

  Own Id: OTP-19264

- win32reg:value/2 will no longer crash the emulator when the value is an
  unterminated REG_SZ of size 0.

  Own Id: OTP-19283
  Related Id(s): GH-8903, PR-8912

- `Makefile` dependency generation on Windows in WSL 2 has been corrected.

  Own Id: OTP-19300
  Related Id(s): PR-8955

- Fix lock order violation if a NIF monitor `down` callback calls
  `enif_whereis_pid`. Would cause debug emulator to crash but could potentially
  lead to deadlocks in optimized emulator.

  Own Id: OTP-19330
  Related Id(s): GH-8983, PR-9008

- Fixed compilation faults when compiling using `--enable-vm-probes`.

  Own Id: OTP-19333

- Fixed `erl_nif.h` on Windows to compile when gcc or clang is used.

  Own Id: OTP-19341
  Related Id(s): PR-9016

- Fixed a minor issue in the JIT debug information that confused tools like GDB
  and perf.

  Own Id: OTP-19362
  Related Id(s): PR-9003

## Improvements and New Features

- Improved documentation of timers.

  Own Id: OTP-19360
  Related Id(s): ERIERL-1149, PR-9062

- The label for a process can now be retrieved also using
  `process_info(Pid, label)` in addition to proc_lib:get_label/1.

  This new option is useful when one wants to retrieve more than one process
  info item. For example:

      process_info(Pid, [label,registered_name])

  Own Id: OTP-19373
  Related Id(s): PR-9108

> #### Full runtime dependencies of erts-15.2
>
> kernel-9.0, sasl-3.3, stdlib-4.1

# inets-9.3.1

The inets-9.3.1 application can be applied independently of other applications
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- The HTTP client now correctly takes into account the `full_result` option when
  returning an asynchronous request.

  Own Id: OTP-19158
  *** POTENTIAL INCOMPATIBILITY ***

- A synchronous httpc:request now timeouts after the `Timeout` specified in
  `HttpOption {timeout, Timeout}`.

  Own Id: OTP-19221
  Related Id(s): ERIERL-1091, PR-8788, PR-8801

- Fixed a bug where calling httpc:set_options/2 when one of keys: _ipfamily_ or
  _unix_socket_, was not present, would cause the other value to get overriden
  by the default value. The validation of these options was also improved.

  Own Id: OTP-19379
  Related Id(s): GH-8829, PR-8878

## Improvements and New Features

- The variable `Env` in the `mod_esi` callback will now have an additional
  property `{connect_addr, Addr}` indicating on which address the server
  received a connection.

  Own Id: OTP-19377
  Related Id(s): ERIERL-1152, PR-9127

> #### Full runtime dependencies of inets-9.3.1
>
> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14,
> ssl-9.0, stdlib-5.0, stdlib-6.0

# kernel-10.2

Note! The kernel-10.2 application _cannot_ be applied independently of other
applications on an arbitrary OTP 27 installation.

       On a full OTP 27 installation, also the following runtime
       dependency has to be satisfied:
       -- erts-15.1 (first satisfied in OTP 27.1)

## Fixed Bugs and Malfunctions

- gen_sctp:peeloff/2 has been fixed to inherit socket options to the peeled
  off socket more like gen_tcp:accept/1, for example the options `tos` or
  `tclass`.

  When setting SCTP options that are unsupported on the platform, some should be
  silently ignored, but a bug caused the option parsing to derail so the options
  after could bail out and cause an error instead. This has been fixed.

  Own Id: OTP-19225
  Related Id(s): PR-8789

- Made it possible to expand help text displayed by pressing ^[h by pressing ^[h
  again.

  Own Id: OTP-19260
  Related Id(s): PR-8884

- `inet:getifaddrs/0,1` is improved when using inet_backend = socket.

  Own Id: OTP-19264

- Fixed logger:report/0 to mandate at least one element in the report. This
  fixes an issue with overlapping `spec` domains in all `logger` functions
  that use logger:report/0.

  Own Id: OTP-19302
  Related Id(s): PR-8959

- Fixed deadlock on `code_server`. Multiple calls loading the same module with
  an `on_load` function loading call would create a deadlock.

  Own Id: OTP-19305
  Related Id(s): GH-7466, GH-8510, PR-8744

## Improvements and New Features

- The Kernel application now recognizes the `epmd_module` and
  `erl_epmd_listen_port` parameters, similar to `-kernel:connect_all`.

  Own Id: OTP-19253
  Related Id(s): PR-8671

- The `inetrc` kernel argument will now tolerate atoms again to improve
  compatibility with old configurations that relied on atoms working by
  accident.

  The expected type always was, and still remains, a string.

  Own Id: OTP-19280
  Related Id(s): GH-8899, PR-8902

- The file:io_device/0 type has been updated to clearly show the difference
  between a `raw` and `cooked` IoDevice.

  Own Id: OTP-19301
  Related Id(s): PR-8956

- Erlang/OTP type specifications has been updated to eliminate overlapping
  domains.

  Own Id: OTP-19310
  Related Id(s): GH-8810, GH-8821, PR-8986

- Added the kernel parameter `os_cmd_shell` that controls which shell should
  be used by os:cmd/1.

  Own Id: OTP-19342
  Related Id(s): PR-8972

- Added logging support to io:user/0, io:standard_io/0 and
  io:standard_error/0. See io:setopts/2 for more details.

  Own Id: OTP-19372
  Related Id(s): PR-8947

> #### Full runtime dependencies of kernel-10.2
>
> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0

# megaco-4.7

The megaco-4.7 application can be applied independently of other applications on
a full OTP 27 installation.

## Improvements and New Features

- Erlang/OTP type specifications has been updated to eliminate overlapping
  domains.

  Own Id: OTP-19310
  Related Id(s): GH-8810, GH-8821, PR-8986

> #### Full runtime dependencies of megaco-4.7
>
> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
> stdlib-2.5

# mnesia-4.23.3

The mnesia-4.23.3 application can be applied independently of other applications
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Mnesia table converted from `ext_copies` to `disc_copies` will now be properly
  saved to disk.

  Own Id: OTP-19292
  Related Id(s): GH-8706, PR-8921

- Mnesia could crash if table was deleted during checkpoint initialization.

  Own Id: OTP-19368
  Related Id(s): ERIERL-1154, PR-9093

> #### Full runtime dependencies of mnesia-4.23.3
>
> erts-9.0, kernel-5.3, stdlib-5.0

# observer-2.17

The observer-2.17 application can be applied independently of other applications
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- In the Memory tab of `crashdump_viewer`, the blocks sizes in
  `Allocator Summary` would all be `N/A`.

  Own Id: OTP-19353
  Related Id(s): PR-8532

## Improvements and New Features

- The Kernel application now recognizes the `epmd_module` and
  `erl_epmd_listen_port` parameters, similar to `-kernel:connect_all`.

  Own Id: OTP-19253
  Related Id(s): PR-8671

> #### Full runtime dependencies of observer-2.17
>
> erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3

# os_mon-2.10.1

The os_mon-2.10.1 application can be applied independently of other applications
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fixed the `memsup` memory alarm to use `available_memory` when available,
  instead of always using `free_memory`.

  Own Id: OTP-19304
  Related Id(s): GH-8759, PR-8776

> #### Full runtime dependencies of os_mon-2.10.1
>
> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0

# public_key-1.17

The public_key-1.17 application can be applied independently of other
applications on a full OTP 27 installation.

## Improvements and New Features

- public_key:cacerts_load/1 can now be configured via the application
  environment.

  Own Id: OTP-19321
  Related Id(s): PR-8920

- On MacOS, CA certificates are now also loaded from the system keychain.

  Own Id: OTP-19375
  Related Id(s): PR-8844

> #### Full runtime dependencies of public_key-1.17
>
> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0

# snmp-5.18

The snmp-5.18 application can be applied independently of other applications on
a full OTP 27 installation.

## Improvements and New Features

- Erlang/OTP type specifications has been updated to eliminate overlapping
  domains.

  Own Id: OTP-19310
  Related Id(s): GH-8810, GH-8821, PR-8986

> #### Full runtime dependencies of snmp-5.18
>
> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
> stdlib-5.0

# ssh-5.2.5

The ssh-5.2.5 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Documentation is polished after OTP-27 migration to markdown.

  Own Id: OTP-19335
  Related Id(s): PR-9021

> #### Full runtime dependencies of ssh-5.2.5
>
> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1,
> stdlib-5.0, stdlib-6.0

# ssl-11.2.6

Note! The ssl-11.2.6 application _cannot_ be applied independently of other
applications on an arbitrary OTP 27 installation.

       On a full OTP 27 installation, also the following runtime
       dependency has to be satisfied:
       -- public_key-1.16.4 (first satisfied in OTP 27.1.3)

## Improvements and New Features

- Enhanced return value spec for active messages from the TLS connection socket.

  Own Id: OTP-19387
  Related Id(s): PR-9067

> #### Full runtime dependencies of ssl-11.2.6
>
> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4,
> runtime_tools-1.15.1, stdlib-6.0

# stdlib-6.2

The stdlib-6.2 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Made it possible to expand help text displayed by pressing ^[h by pressing ^[h
  again.

  Own Id: OTP-19260
  Related Id(s): PR-8884

- Defining a fun in the shell using the syntax `fun Name/Arity` would fail. This
  has been corrected so that the following now works:

      1> F = fun is_atom/1.
      #Fun.erl.42.18682967>
      > F(a).
      true
      3> Id = fun id/1.
      #Fun.erl.42.18682967>
      4> Id(42).
      ** exception error: undefined shell command id/1
      5> id(I) -> I.
      ok
      6> Id(42).
      42

  The Debugger has also been corrected to correctly handle this syntax for a
  BIF.

  Own Id: OTP-19322
  Related Id(s): GH-8963, PR-8987

- Fixed a bug where completion of 'fun(' would cause the shell to crash.

  Own Id: OTP-19351
  Related Id(s): PR-9043

- Fixed a bug causing the shell to crash while trying to complete an expression
  starting with a '/' or a variable followed by '(' or '/'. E.g. Foo/ and Foo(.

  Own Id: OTP-19361
  Related Id(s): PR-9078

- zip:extract/2 with `keep_old_files` now respects the `cwd` option.

  Own Id: OTP-19370
  Related Id(s): GH-9087, PR-9097

- Fixed an error in uri_string:percent_decode spec

  Own Id: OTP-19380
  Related Id(s): GH-8755

## Improvements and New Features

- Updated shell docs to display the type spec, that is, `h(erlang, min, 2)` now
  prints the type spec and documentation in the shell.

      > h(erlang,min,2).

        -spec min(Term1, Term2) -> Minimum
                     when Term1 :: term(), Term2 :: term(), Minimum :: term().

        Returns the smallest of Term1 and Term2. If the terms compare equal with the == operator, Term1 is returned.

  Own Id: OTP-19234
  Related Id(s): GH-8544, PR-8833

- The file:io_device/0 type has been updated to clearly show the difference
  between a `raw` and `cooked` IoDevice.

  Own Id: OTP-19301
  Related Id(s): PR-8956

- Added json:format_key_value_list/3 and
  json:format_key_value_list_checked/3.

  Own Id: OTP-19320
  Related Id(s): PR-8889

- Improved documentation of timers.

  Own Id: OTP-19360
  Related Id(s): ERIERL-1149, PR-9062

- Added logging support to io:user/0, io:standard_io/0 and
  io:standard_error/0. See io:setopts/2 for more details.

  Own Id: OTP-19372
  Related Id(s): PR-8947

> #### Full runtime dependencies of stdlib-6.2
>
> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0

# tools-4.1.1

The tools-4.1.1 application can be applied independently of other applications
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fixed some deprecated errors on emacs-29.

  Own Id: OTP-19273
  Related Id(s): PR-8879

- The `cover` tool could sometimes wrongly report lines as uncovered.

  Own Id: OTP-19289
  Related Id(s): GH-8867, PR-8919

- Fixed `tprof:format(IoDevice, ...)` to not demand unicode encoding supported
  by `IoDevice`.

  Own Id: OTP-19299
  Related Id(s): PR-8949

> #### Full runtime dependencies of tools-4.1.1
>
> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0

# Thanks to

Bryan Paxton, Daniel Finke, Dániel Szoboszlay, dependabotbot, Ildar Khizbulin,
Jakub Witczak, Jonatan Kłosko, José Valim, Loïc Hoguin, Maas-Maarten Zeeman,
Maria Scott, Marko Mindek, Péter Gömöri, Radek Szymczyszyn, Svilen Ivanov,
Yaroslav Maslennikov, zmstone