@@ -219,13 +219,57 @@ Working version
219
219
OCaml 4.12.0
220
220
------------
221
221
222
- ### Supported platforms:
222
+ ### Supported platforms (highlights) :
223
223
224
224
- #9699: add support for iOS and macOS on ARM 64 bits
225
225
(Eduardo Rafael, review by Xavier Leroy, Nicolás Ojeda Bär
226
226
and Anil Madhavapeddy, additional testing by Michael Schmidt)
227
227
228
- ### Language features:
228
+ ### Standard library (highlights):
229
+
230
+ - #9797: Add Sys.mkdir and Sys.rmdir.
231
+ (David Allsopp, review by Nicolás Ojeda Bär, Sébastien Hinderer and
232
+ Xavier Leroy)
233
+
234
+ * #9765: add init functions to Bigarray.
235
+ (Jeremy Yallop, review by Gabriel Scherer, Nicolás Ojeda Bär, and
236
+ Xavier Leroy)
237
+
238
+ * #9668: List.equal, List.compare
239
+ (This could break code using "open List" by shadowing
240
+ Stdlib.{equal,compare}.)
241
+ (Gabriel Scherer, review by Nicolás Ojeda Bär, Daniel Bünzli and Alain Frisch)
242
+
243
+ - #9066: a new Either module with
244
+ type 'a Either.t = Left of 'a | Right of 'b
245
+ (Gabriel Scherer, review by Daniel Bünzli, Thomas Refis, Jeremy Yallop)
246
+
247
+ - #9066: List.partition_map :
248
+ ('a -> ('b, 'c) Either.t) -> 'a list -> 'b list * 'c list
249
+ (Gabriel Scherer, review by Jeremy Yallop)
250
+
251
+ - #9865: add Format.pp_print_seq
252
+ (Raphaël Proust, review by Nicolás Ojeda Bär)
253
+
254
+ ### Compiler user-interface and warnings (highlights):
255
+
256
+ - #9657: Warnings can now be referred to by their mnemonic name. The names are
257
+ displayed using `-warn-help` and can be utilized anywhere where a warning list
258
+ specification is expected.
259
+ ocamlc -w +fragile-match
260
+ ...[@@ocaml.warning "-fragile-match"]
261
+ Note that only a single warning name at a time is supported for now:
262
+ "-w +foo-bar" does not work, you must use "-w +foo -w -bar".
263
+ (Nicolás Ojeda Bär, review by Gabriel Scherer, Florian Angeletti and
264
+ Leo White)
265
+
266
+ - #8939: Command-line option to save Linear IR before emit.
267
+ (Greta Yorsh, review by Mark Shinwell, Sébastien Hinderer and Frédéric Bour)
268
+
269
+ - #9003: Start compilation from Emit when the input file is in Linear IR format.
270
+ (Greta Yorsh, review by Jérémie Dimino, Gabriel Scherer and Frédéric Bour)
271
+
272
+ ### Language features (highlights):
229
273
230
274
* #9500, #9727, #9866, #9870, #9873: Injectivity annotations
231
275
One can now mark type parameters as injective, which is useful for
@@ -238,15 +282,7 @@ OCaml 4.12.0
238
282
Note that this change required making the regularity check stricter.
239
283
(Jacques Garrigue, review by Jeremy Yallop and Leo White)
240
284
241
-
242
- - #1655: pattern aliases do not ignore type constraints
243
- (Thomas Refis, review by Jacques Garrigue and Gabriel Scherer)
244
-
245
- - #9429: Add unary operators containing `#` to the parser for use in ppx
246
- rewriters
247
- (Leo White, review by Damien Doligez)
248
-
249
- ### Runtime system:
285
+ ### Runtime system (highlights):
250
286
251
287
- #9534, #9947: Introduce a naked pointers checker mode to the runtime
252
288
(configure option --enable-naked-pointers-checker). Alarms are printed
@@ -265,18 +301,21 @@ OCaml 4.12.0
265
301
Doligez, Anil Madhavapeddy, Guillaume Munch-Maccagnoni and Jacques-
266
302
Henri Jourdan)
267
303
268
- - #9756: garbage collector colors change
269
- removes the gray color from the major gc
270
- (Sadiq Jaffer and Stephen Dolan reviewed by Xavier Leroy,
271
- KC Sivaramakrishnan, Damien Doligez and Jacques-Henri Jourdan)
272
-
273
304
* #5154, #9569, #9734: Add `Val_none`, `Some_val`, `Is_none`, `Is_some`,
274
305
`caml_alloc_some`, and `Tag_some`. As these macros are sometimes defined by
275
306
authors of C bindings, this change may cause warnings/errors in case of
276
307
redefinition.
277
308
(Nicolás Ojeda Bär, review by Stephen Dolan, Gabriel Scherer, Mark Shinwell,
278
309
and Xavier Leroy)
279
310
311
+ * #9674: Memprof: guarantee that an allocation callback is always run
312
+ in the same thread the allocation takes place
313
+ (Jacques-Henri Jourdan, review by Stephen Dolan)
314
+
315
+ - #10025: Track custom blocks (e.g. Bigarray) with Memprof
316
+ (Stephen Dolan, review by Leo White, Gabriel Scherer and Jacques-Henri
317
+ Jourdan)
318
+
280
319
- #9619: Change representation of function closures so that code pointers
281
320
can be easily distinguished from environment variables
282
321
(Xavier Leroy, review by Mark Shinwell and Damien Doligez)
@@ -285,19 +324,83 @@ OCaml 4.12.0
285
324
(Xavier Leroy, review by Jacques-Henri Jourdan, Damien Doligez, and
286
325
Stephen Dolan)
287
326
288
- * #9674: Memprof: guarantee that an allocation callback is always run
289
- in the same thread the allocation takes place
290
- (Jacques-Henri Jourdan, review by Stephen Dolan)
327
+ ### Other libraries (highlights):
291
328
292
- - #10025: Track custom blocks (e.g. Bigarray) with Memprof
293
- (Stephen Dolan, review by Leo White, Gabriel Scherer and Jacques-Henri
294
- Jourdan)
329
+ - #9573: reimplement Unix.create_process and related functions without
330
+ Unix.fork, for better efficiency and compatibility with threads.
331
+ (Xavier Leroy, review by Gabriel Scherer and Anil Madhavapeddy)
332
+
333
+ - #9575: Add Unix.is_inet6_addr
334
+ (Nicolás Ojeda Bär, review by Xavier Leroy)
335
+
336
+ - #9930: new module Semaphore in the thread library, implementing
337
+ counting semaphores and binary semaphores
338
+ (Xavier Leroy, review by Daniel Bünzli and Damien Doligez,
339
+ additional suggestions by Stephen Dolan and Craig Ferguson)
340
+
341
+ * #9206, #9419: update documentation of the threads library;
342
+ deprecate Thread.kill, Thread.wait_read, Thread.wait_write,
343
+ and the whole ThreadUnix module.
344
+ (Xavier Leroy, review by Florian Angeletti, Guillaume Munch-Maccagnoni,
345
+ and Gabriel Scherer)
295
346
347
+ ### Manual and documentation (highlights):
348
+
349
+ - #9755: Manual: post-processing the html generated by ocamldoc and
350
+ hevea. Improvements on design and navigation, including a mobile
351
+ version, and a quick-search functionality for the API.
352
+ (San Vũ Ngọc, review by David Allsopp and Florian Angeletti)
353
+
354
+ - #9468: HACKING.adoc: using dune to get merlin support
355
+ (Thomas Refis, review by Gabriel Scherer)
356
+
357
+ - #9684: document in address_class.h the runtime value model in
358
+ naked-pointers and no-naked-pointers mode
359
+ (Xavier Leroy and Gabriel Scherer)
360
+
361
+ ### Internal/compiler-libs changes (highlights):
362
+
363
+ - #9464, #9493, #9520, #9563, #9599, #9608, #9647: refactor
364
+ the pattern-matching compiler
365
+ (Thomas Refis and Gabriel Scherer, review by Florian Angeletti)
366
+
367
+ - #9696: ocamltest now shows its log when a test fails. In addition, the log
368
+ contains the output of executed programs.
369
+ (Nicolás Ojeda Bär, review by David Allsopp, Sébastien Hinderer and Gabriel
370
+ Scherer)
371
+
372
+ ### Build system (highlights):
373
+
374
+ - #9824, #9837: Honour the CFLAGS and CPPFLAGS variables.
375
+ (Sébastien Hinderer, review by David Allsopp)
376
+
377
+ - #10063: (Re-)enable building on illumos (SmartOS, OmniOS, ...) and
378
+ Oracle Solaris; x86_64/GCC and 64-bit SPARC/Sun PRO C compilers.
379
+ (partially revert #2024).
380
+ (Tõivo Leedjärv and Konstantin Romanov,
381
+ review by Gabriel Scherer, Sébastien Hinderer and Xavier Leroy)
382
+
383
+
384
+ ### Language features:
385
+
386
+ - #1655: pattern aliases do not ignore type constraints
387
+ (Thomas Refis, review by Jacques Garrigue and Gabriel Scherer)
388
+
389
+ - #9429: Add unary operators containing `#` to the parser for use in ppx
390
+ rewriters
391
+ (Leo White, review by Damien Doligez)
392
+
393
+ ### Runtime system:
296
394
297
395
* #9697: Remove the Is_in_code_area macro and the registration of DLL code
298
396
areas in the page table, subsumed by the new code fragment management API
299
397
(Xavier Leroy, review by Jacques-Henri Jourdan)
300
398
399
+ - #9756: garbage collector colors change
400
+ removes the gray color from the major gc
401
+ (Sadiq Jaffer and Stephen Dolan reviewed by Xavier Leroy,
402
+ KC Sivaramakrishnan, Damien Doligez and Jacques-Henri Jourdan)
403
+
301
404
* #9513: Selectively initialise blocks in `Obj.new_block`. Reject `Custom_tag`
302
405
objects and zero-length `String_tag` objects.
303
406
(KC Sivaramakrishnan, review by David Allsopp, Xavier Leroy, Mark Shinwell
@@ -341,10 +444,10 @@ OCaml 4.12.0
341
444
(David Allsopp, review by Gabriel Scherer and Xavier Leroy)
342
445
343
446
- #9466: Memprof: optimize random samples generation.
344
- (Jacques-Henri Jourdan review by Xavier Leroy and Stephen Dolan)
447
+ (Jacques-Henri Jourdan, review by Xavier Leroy and Stephen Dolan)
345
448
346
449
- #9628: Memprof: disable sampling when memprof is suspended.
347
- (Jacques-Henri Jourdan review by Gabriel Scherer and Stephen Dolan)
450
+ (Jacques-Henri Jourdan, review by Gabriel Scherer and Stephen Dolan)
348
451
349
452
- #10056: Memprof: ensure young_trigger is within the bounds of the minor
350
453
heap in caml_memprof_renew_minor_sample (regression from #8684)
@@ -399,7 +502,6 @@ OCaml 4.12.0
399
502
(Nicolás Ojeda Bär, review by Daniel Bünzli, Gabriel Scherer,
400
503
Anil Madhavapeddy, and Xavier Leroy)
401
504
402
-
403
505
- #9620: Limit the number of parameters for an uncurried or untupled
404
506
function. Functions with more parameters than that are left
405
507
partially curried or tupled.
@@ -425,31 +527,6 @@ OCaml 4.12.0
425
527
426
528
### Standard library:
427
529
428
- - #9865: add Format.pp_print_seq
429
- (Raphaël Proust, review by Nicolás Ojeda Bär)
430
-
431
- - #9797: Add Sys.mkdir and Sys.rmdir.
432
- (David Allsopp, review by Nicolás Ojeda Bär, Sébastien Hinderer and
433
- Xavier Leroy)
434
-
435
- * #9668: List.equal, List.compare
436
- (This could break code using "open List" by shadowing
437
- Stdlib.{equal,compare}.)
438
- (Gabriel Scherer, review by Nicolás Ojeda Bär, Daniel Bünzli and Alain Frisch)
439
-
440
- - #9066: a new Either module with
441
- type 'a Either.t = Left of 'a | Right of 'b
442
- (Gabriel Scherer, review by Daniel Bünzli, Thomas Refis, Jeremy Yallop)
443
-
444
- - #9066: List.partition_map :
445
- ('a -> ('b, 'c) Either.t) -> 'a list -> 'b list * 'c list
446
- (Gabriel Scherer, review by Jeremy Yallop)
447
-
448
- * #9765: add init functions to Bigarray.
449
- (Jeremy Yallop, review by Gabriel Scherer, Nicolás Ojeda Bär, and
450
- Xavier Leroy)
451
-
452
-
453
530
- #9781: add injectivity annotations to parameterized abstract types
454
531
(Jeremy Yallop, review by Nicolás Ojeda Bär)
455
532
@@ -498,25 +575,6 @@ OCaml 4.12.0
498
575
499
576
### Other libraries:
500
577
501
- - #9573: reimplement Unix.create_process and related functions without
502
- Unix.fork, for better efficiency and compatibility with threads.
503
- (Xavier Leroy, review by Gabriel Scherer and Anil Madhavapeddy)
504
-
505
- - #9575: Add Unix.is_inet6_addr
506
- (Nicolás Ojeda Bär, review by Xavier Leroy)
507
-
508
- - #9930: new module Semaphore in the thread library, implementing
509
- counting semaphores and binary semaphores
510
- (Xavier Leroy, review by Daniel Bünzli and Damien Doligez,
511
- additional suggestions by Stephen Dolan and Craig Ferguson)
512
-
513
- * #9206, #9419: update documentation of the threads library;
514
- deprecate Thread.kill, Thread.wait_read, Thread.wait_write,
515
- and the whole ThreadUnix module.
516
- (Xavier Leroy, review by Florian Angeletti, Guillaume Munch-Maccagnoni,
517
- and Gabriel Scherer)
518
-
519
-
520
578
- #8796: On Windows, make Unix.utimes use FILE_FLAG_BACKUP_SEMANTICS flag
521
579
to allow it to work with directories.
522
580
(Daniil Baturin, review by Damien Doligez)
@@ -580,25 +638,11 @@ OCaml 4.12.0
580
638
(Xavier Leroy, report by Jacques Garrigue and Virgile Prevosto,
581
639
review by David Allsopp and Jacques-Henri Jourdan)
582
640
583
-
584
641
- #9948: Remove Spacetime.
585
642
(Nicolás Ojeda Bär, review by Stephen Dolan and Xavier Leroy)
586
643
587
644
### Manual and documentation:
588
645
589
- - #9755: Manual: post-processing the html generated by ocamldoc and
590
- hevea. Improvements on design and navigation, including a mobile
591
- version, and a quick-search functionality for the API.
592
- (San Vũ Ngọc, review by David Allsopp and Florian Angeletti)
593
-
594
- - #9468: HACKING.adoc: using dune to get merlin support
595
- (Thomas Refis, review by Gabriel Scherer)
596
-
597
- - #9684: document in address_class.h the runtime value model in
598
- naked-pointers and no-naked-pointers mode
599
- (Xavier Leroy and Gabriel Scherer)
600
-
601
-
602
646
- #10142, #10154: improved rendering and latex code for toplevel code examples.
603
647
(Florian Angeletti, report by John Whitington, review by Gabriel Scherer)
604
648
@@ -613,23 +657,6 @@ OCaml 4.12.0
613
657
614
658
### Compiler user-interface and warnings:
615
659
616
- - #9657: Warnings can now be referred to by their mnemonic name. The names are
617
- displayed using `-warn-help` and can be utilized anywhere where a warning list
618
- specification is expected.
619
- ocamlc -w +fragile-match
620
- ...[@@ocaml.warning "-fragile-match"]
621
- Note that only a single warning name at a time is supported for now:
622
- "-w +foo-bar" does not work, you must use "-w +foo -w -bar".
623
- (Nicolás Ojeda Bär, review by Gabriel Scherer, Florian Angeletti and
624
- Leo White)
625
-
626
- - #8939: Command-line option to save Linear IR before emit.
627
- (Greta Yorsh, review by Mark Shinwell, Sébastien Hinderer and Frédéric Bour)
628
-
629
- - #9003: Start compilation from Emit when the input file is in Linear IR format.
630
- (Greta Yorsh, review by Jérémie Dimino, Gabriel Scherer and Frédéric Bour)
631
-
632
-
633
660
- #1931: rely on levels to enforce principality in patterns
634
661
(Thomas Refis and Leo White, review by Jacques Garrigue)
635
662
@@ -683,16 +710,6 @@ OCaml 4.12.0
683
710
684
711
### Internal/compiler-libs changes:
685
712
686
- - #9464, #9493, #9520, #9563, #9599, #9608, #9647: refactor
687
- the pattern-matching compiler
688
- (Thomas Refis and Gabriel Scherer, review by Florian Angeletti)
689
-
690
- - #9696: ocamltest now shows its log when a test fails. In addition, the log
691
- contains the output of executed programs.
692
- (Nicolás Ojeda Bär, review by David Allsopp, Sébastien Hinderer and Gabriel
693
- Scherer)
694
-
695
-
696
713
- #8987: Make some locations more accurate
697
714
(Thomas Refis, review by Gabriel Scherer)
698
715
@@ -759,21 +776,11 @@ OCaml 4.12.0
759
776
760
777
### Build system:
761
778
762
- - #9824, #9837: Honour the CFLAGS and CPPFLAGS variables.
763
- (Sébastien Hinderer, review by David Allsopp)
764
-
765
779
- #9332, #9518, #9529: Cease storing C dependencies in the codebase. C
766
780
dependencies are generated on-the-fly in development mode. For incremental
767
781
compilation, the MSVC ports require GCC to be present.
768
782
(David Allsopp, review by Sébastien Hinderer, YAML-fu by Stephen Dolan)
769
783
770
- - #10063: (Re-)enable building on illumos (SmartOS, OmniOS, ...) and
771
- Oracle Solaris; x86_64/GCC and 64-bit SPARC/Sun PRO C compilers.
772
- (partially revert #2024).
773
- (Tõivo Leedjärv and Konstantin Romanov,
774
- review by Gabriel Scherer, Sébastien Hinderer and Xavier Leroy)
775
-
776
-
777
784
- #7121, #9558: Always have the autoconf-discovered ld in PACKLD, with
778
785
extra flags in new variable PACKLD_FLAGS. For
779
786
cross-compilation, this means the triplet-prefixed version will always be
0 commit comments