Skip to content
Success

Changes

Summary

  1. Ensure the minor heap is actually empty before reallocating it (details)
  2. set scope in expand_abbrev rather than rely on update_scope (details)
  3. use Int.max rather than generic max (details)
  4. add log and comments; small change in instance_parameterized_type (details)
  5. domain_create: release the domain lock on failure (details)
  6. ocamltest: use C99 booleans (details)
  7. ocamltest: fix path comparison (details)
  8. ocamltest: use O_CLOEXEC on file descriptors (details)
  9. ocamltest: compare wcscmp result with 0 (details)
  10. ocamltest: alarm(3) is always successful (details)
  11. Move filter_arrow error handling in a function (details)
  12. Refactor: extract loc_rest_of_function (details)
  13. Refactor [type_approx]. (details)
  14. Add a test illustrating a regression in type_approx (details)
  15. Fix the regression in type approx (details)
  16. Remove the loop: we are already in a recursive function (details)
  17. Add a comment about an unreachable case (details)
  18. Add a comment for type_approx_fun_one_param's spato parameter. (details)
  19. Add a changelog entry for #13980 (details)
  20. Set FLEXDIR when bootstrapping flexlink (details)
  21. Make ocamlmklib fail on an unknown parameter (details)
  22. Collimate the comments (details)
  23. Fix Makefile dependencies for ocamldoc, ocamltest and ocamldebug (details)
  24. Bump magic numbers and version for 5.5.0 (details)
  25. Refactor [is_functor_arg] table of env into [not_aliasable] (details)
  26. Added tests and updated error message with line breaks (details)
  27. genprintval: explain why certain uses of O.obj are not guarded (details)
  28. genprintval: move user-installed printers out of the Make functor (details)
  29. Generic printers in debugger (details)
  30. Test and doc of polymorphic printers in debugger (details)
  31. Use trunk-compatible dune.3.18.2 (details)
  32. Made the "remove_aliases" attribute visible in built-ins attributes (details)
  33. Add Dynarray.unsafe_to_iarray (details)
  34. Reimplement `let open`, `let module` and `let exception` in terms of a single construct (#13839) (details)
  35. webman: add anchors for API items, headings (#14002) (details)
  36. Refine docs for `In_channel` and `Out_channel` (#13982) (details)
  37. Pprintast: use parentheses around Pexp_struct_item in sequences (details)
  38. Move Changes entry to right place, add bugfix PR (details)
  39. Add test (details)
  40. Fix missing version bump to 5.5 in opam file (details)
  41. Update precondition comment to reflect renaming from #12619 (details)
  42. check-symbol-names: ignore extern char **environ re-decl (details)
  43. gha: Document labels triggering/skipping workflows (details)
  44. Dynamic matrix for the others job (details)
  45. Add optional static and mimimal jobs (details)
  46. Merge macOS Dependency steps (details)
  47. Fix test_create_cursor_failures.ml on Cygwin (details)
  48. Update build-msvc.yml to permit Cygwin builds (details)
  49. Add optional Cygwin check to CI (details)
  50. Add bytecode-only Cygwin check (details)
  51. Add a 'CI: Skip testsuite' label (details)
  52. Fix tools/check-symbol-names for i686 mingw-w64 (details)
  53. Windows matrix: arch instead of x86_64 (details)
  54. stale bot: only identify stale issues, don't close them. (#14004) (details)
  55. Fix memory corruption when an exception is raised during demarshaling. (#14015) (details)
  56. Update Changes (details)
  57. update Changes after cherry-picking (details)
  58. [refactor merge] Create a Merge module + white space changes (details)
  59. [refactor merge] Extracted helper functions (details)
  60. [refactor merge] Changed the return logic (details)
  61. [refactor merge] Extracted the recursive functions for deep constr (details)
  62. [refactor merge] Moved code (details)
  63. [refactor merge] Extracted the type-package case (details)
  64. [refactor merge] Extracted the type case (details)
  65. [refactor merge] Extracted the module case (details)
  66. [refactor merge] Extracted the modtype case (details)
  67. [refactor merge] Added comments, minor stylistic changes (details)
  68. [refactor merge] Corrections from Octachron review (details)
  69. [refactor merge] Moved the catching of exception (details)
  70. [refactor merge] Updated comments (details)
  71. [refactor merge] Added Changelog entry (details)
  72. [minor] printcmm: print atomic loads (details)
  73. [testsuite] test the compilation of atomic functions (details)
  74. [refactor] Define [caml_atomic_cas] in terms of [caml_atomic_cas_field]. (details)
  75. [breaking] Change the prototype of [caml_atomic_cas_field]. (details)
  76. runtime: Add atomic primitives [caml_atomic_load_field], [caml_atomic_exchange_field] and [caml_atomic_fetch_add_field]. (details)
  77. lambda: Add support for new atomic primitives. (details)
  78. Add support for atomic record fields. (details)
  79. atomic fields in ocamldoc (details)
  80. Bootstrap. (details)
  81. Add tests for atomic record fields. (details)
  82. [minor] Make test_untypeast.ml more readable. (details)
  83. Add predefined type ['a atomic_loc]. (details)
  84. [refactor] more general type for Env.mark_*_used (details)
  85. Add extension [%atomic.loc record.field]. (details)
  86. Bootstrap. (details)
  87. Add module [Stdlib.Atomic.Loc]. (details)
  88. Add tests for [Atomic.Loc]. (details)
  89. Reimplement [Atomic.t] using [Atomic.Loc.t]. (details)
  90. Forbid atomic fields in patterns. (details)
  91. Changes (details)
  92. testsuite for pattern-matching on atomic reads (details)
  93. allow wildcard patterns under atomic record fields (details)
  94. stdlib/Atomic: move the Loc module below in the .mli (details)
  95. stdlib/Atomic: minimal documentation (details)
  96. describe atomic record fields in the reference manual (details)
  97. Runtime events: dispatch the right event message type (#13970) (details)
  98. Add Unix.unsetenv (details)
  99. Add test (details)
  100. Document [row_more] and [row_fixed]. (details)
  101. Add Option.product and Option.Syntax (#13916) (details)
  102. [minor] More readable output from `gen_sizeclasses` (#13923) (details)
  103. Fix unterminated-string-initialization warning (details)
  104. fix atomic-locs/cmm.compilers.reference (details)
  105. tests: native-debugger: sanitize GDB+musl output (details)
  106. Fix #13427 (details)
  107. Add caml_sys_proc_self_exe primitive (details)
  108. Add Sys.runtime_executable (details)
  109. Cleanups following introduction of `Pexp_struct_item`/`Texp_struct_item` (#14028) (details)
  110. Add row_more invariant (details)
  111. Update flexdll submodule to 0.44 (details)
  112. Reenable lib-dynlink-domains test on Windows, temporarily disabled in #11607 (details)
  113. Comments from review (details)
  114. Changelog (details)
  115. tests: native-debugger: sanitize LLDB+GLIBC output (details)
  116. fix #13941 (details)
  117. update Changes for #13961 (details)
  118. simplifications suggested by reviewer (details)
  119. [minor] use a record in Compenv.process_deferred_actions (details)
  120. Amend docstring (details)
  121. Better error messages on invalid recursive module definitions (details)
  122. Ensure that all Bigarray memory managed by the GC is tracked by Memprof (details)
  123. Format: place hint white spaces after the break hint (details)
  124. Changes (details)
  125. Update changes (details)
  126. Attach infix extension points/attributes on local module/exception/open to structure item instead of enclosing let expression (#14009) (details)
  127. manual: fall back immediately to user-agent-defined fonts (details)
  128. Uniformize parsing rules for structure and signature items (#14039) (details)
  129. Trully share #*_printers machinery between toplevel and debugger (details)
  130. Review changes (details)
  131. update the memprof bigarray test (details)
  132. Move #13675 to 5.4 Changes (details)
  133. Reimplement generational stack scanning a la OCaml 4 (details)
  134. ARM64: explicitly ignore top bits in return addresses (details)
  135. Better API for generational stack scanning (details)
  136. Adapt TSAN to generational stack scanning (details)
  137. Changes for 13594 (details)
  138. document the invariants around pc marking in tsan.c (details)
  139. manual: move the TeX header of each language extension into the extension-specific .etex file (#14041) (details)
  140. Changes (details)
  141. Use BUILD_PATH_PREFIX_MAP to sanitize debug event paths, do not rewrite shebang (details)
  142. Accept native freestanding targets at configure time (details)
  143. Allow `*-ocaml` as target triplets to build freestanding cross compilers (details)
  144. Update changelog (details)
  145. domain_terminate: orphan the shared heap before STW exit (details)
  146. Changes (details)
  147. runtime: caml_finalise_heap should first adopt all orphan pools (details)
  148. review: clarify the invariants in [domain_create], including for the last domain (details)
  149. review: clarify the invariants required to free the shared heap (details)
  150. minor Changes fixes (details)
  151. Changelog: fix ordering for 5.3 (details)
  152. Changes: reuse the improved 5.4 entry order from the 5.4 branch (details)
  153. Unix.kill: On Windows, make process exit code ERROR_PROCESS_ABORTED (#14046) (details)
  154. Revert "Merge pull request #14045 from pirbo/bpp-map-1-2" (details)
  155. re-apply the part of #14045 that disables path rewrites on the shebang (details)
  156. Special constructor for %sys_argv primitive (#10570) (details)
  157. Debugger: Fallback to looking for module_name.ml in the loadpath when seeking source files (#14063) (details)
  158. Improve handling of packages in typing/gprinttyp.ml to put the name of the constraint on the arrow (details)
  159. Add Option.blend (#13995) (details)
  160. error message: point all label mismatches (details)
  161. Add a test showing spurious unused warnign in fonctor argument signatures. (details)
  162. Mark both in [modtypes_with_shape] (details)
  163. Reduce test noise by disabling warning 60 (details)
  164. Add changelog entry for #13956 (details)
  165. dynlink: fix exception name in printer (details)
  166. Changes update (details)
  167. Add changelog entry (details)
  168. fix one more definition of fib in the manual (details)
  169. Add a new type kind `Type_external` (#13712) (details)
  170. For stores on Apple Silicon, emit `stlr` instead of `dmb ishld; str`. (details)
  171. error messages: point mismatched univars (details)
  172. Introduce Sixtyfour memory chunk to handle unaligned accesses (details)
  173. Fix note: the alignment of `_Atomic long long unsigned int` fields changed in GCC 11.1 on i686 (#14035) (details)
  174. Add missing `item-attribute` rule for `let-binding` in documentation of attributes (#14077) (details)
  175. Switch back to ubuntu-latest (details)
  176. update Changes (details)
  177. Address reviewer comments. (details)
  178. Catch invalid aliases at merging rather than subtyping (#14066) (details)
  179. Generalise Compmisc.init_path (details)
  180. Add Dll.search_path (details)
  181. Add Misc.Stdlib.String.to_utf_8_seq (details)
  182. Expose Bytelink.read_runtime_launch_info (details)
  183. Changes bookkeeping: missing reviewer (details)
  184. Add Domain.running_domain_count (details)
  185. Changes (details)
  186. Changes (details)
  187. Add Config.{c_compiler_vendor,shebangscripts} (details)
  188. Add a test for the compiler "in-prefix" (details)
  189. Plumb the in-prefix tests into CI (details)
  190. Changes: 14074 was backported to 5.4 (details)
  191. Avoid an error when a channel is flushed during close (details)
  192. review (details)
  193. Fix flakiness of TSan tests using flushes and synchronization (details)
  194. Skip native-debugger tests. (details)
  195. Use caml_unix_error instead of errno+caml_uerror (details)
  196. Symmetrize caml_sys_rename and caml_unix_rename (details)
  197. Symmetrize caml_sys_chdir and caml_unix_chdir (details)
  198. Symmetrize caml_sys_close and caml_unix_close (details)
  199. Symmetrize caml_sys_system_command and caml_unix_system (details)
  200. Update Changes (details)
  201. stdlib: Option.{for_all, exists} (#13920) (details)
  202. [refactor] dynarray variable naming, consistently use [f] for function arguments (details)
  203. Dynarray.rev_iter, rev_iteri (details)
  204. Changes (details)
  205. Rename Domain.running_domain_count => Domain.count (#14096) (details)
  206. ocamldoc: no paragraph in module table (#14098) (details)
  207. CI: attempt to silence a MSVC warning (details)
  208. Changes bookkeeping: fix 13896 entry (details)
  209. toplevel: test with nongeneric printer (details)
  210. toplevel: printers must have a generic type (details)
  211. refactor Ctype: remove nongen_inst argument (details)
  212. add Changes entry (details)
  213. Explicitly fail-fast (details)
  214. Temporarily disable -Wcast-function-type-mismatch (details)
  215. Temporarily disable warning C5387 on MSVC (details)
  216. Update memprof after leaving the barrier at the end of minor GC, nor before. (details)
  217. Use C99 (u)int64_t instead of MSVC __int64 extension (details)
  218. Use time_t instead of MSVC __time64_t (details)
  219. Use C99 fixed-width integers in bigarray (details)
  220. Fully use C99 stdint.h fixed-width integers (details)
  221. Define intnat/uintnat with C99 intptr_t/uintptr_t (details)
  222. Use C99 inttypes.h fixed-width format macros (details)
  223. Define and use CAML_PRI.NAT and CAML_PRI.SZT (details)
  224. s/alloced/allocated/g (details)
  225. Update Changes (details)
  226. Fix a possible hang in Pprintast (#14105) (details)
  227. toplevel: fix a typo in directive error messages (details)
  228. changes: sync with 5.4 (details)
  229. use No_scan_tag and NOT_MARKABLE to indicate free block (details)
  230. change shared pools heap representation to indicate contiguous free ranges (details)
  231. add prefetching (details)
  232. add Changes (details)
  233. actually prefetch a page ahead (details)
  234. restore split asserts (details)
  235. clarify comment in verify_pool (details)
  236. fix bug in compaction (details)
  237. write Debug_free_major in to newly initialised pools (details)
  238. fix bug in pool_finalise (details)
  239. simplify macro (details)
  240. Update runtime/shared_heap.c (details)
  241. Update runtime/shared_heap.c (details)
  242. restore atomic header read (details)
  243. make note about GC pacing logic (details)
  244. Update runtime/shared_heap.c (details)
  245. wh -> Whsize_hd (details)
  246. always update the pointer in the last free block (details)
  247. revert all_used annotation (details)
  248. Replaced normalize_package_path by Env.normalize_modtype_path (details)
  249. Add -Wno-cast-function-type-mismatch more clangily (details)
  250. Typo in stdlib/Makefile (details)
  251. Reduce tmpheader.exe to 4-5KiB on Windows (details)
  252. Stop using Caml_inline and CAMLnoret in headernt.c (details)
  253. Remove unnecessary guards around unistd.h (details)
  254. Use PATH_MAX instead of MAXPATHLEN (details)
  255. Assume S_ISREG and SEEK_END (details)
  256. Move O_BINARY definition to "header" section (details)
  257. Make caml/exec.h independent (details)
  258. Re-order some header functions (no-op) (details)
  259. Share error path in headernt.c (details)
  260. Unify implementation of read_size (details)
  261. headernt.c: inline run_runtime into main (details)
  262. Check for errors from lseek in header.c (details)
  263. Refactor error display code (details)
  264. header.c: close bytecode image before exec (details)
  265. Use execvp in header.c (as in headernt.c) (details)
  266. headernt: make read_runtime_path more CRTish (details)
  267. Missing error case in headernt.c (details)
  268. Unify the common parts of header.c and headernt.c (details)
  269. Merge stdlib/header{,nt}.c (details)
  270. error messages: typo, missing inline code (details)
  271. #14093 was backported (details)
  272. Fix use of time_t on i686 mingw-w64 (#14114) (details)
  273. Increase the amount of data written to a pipe in a test (#14116) (details)
  274. Add regression test (details)
  275. Fix non-destructive `with type` with type constraints (details)
  276. Add with type constraint testing (details)
  277. Update changelog (details)
  278. Add {Set,Map}.S.is_singleton (#14118) (details)
  279. Make List.{take,drop} total (#14124) (details)
  280. document that char compare uses ASCII order (#14090) (details)
  281. Add the approx flag to merging of module constraints (details)
  282. Add a [merge_type_approx] for approximation of type constraints (details)
  283. Add tests for module and type constraints during approximation (details)
  284. Update Changelog (details)
  285. Add another test for destructive type constraints approximation (details)
  286. Address review comments on #14100 (details)
  287. Update Changelog (details)
  288. Refactor post_process of signature merging (details)
  289. Update comment and Changelog (details)
  290. Address review comments (details)
  291. Missing case in {Stdlib,Float}.frexp documentation (#14128) (details)
  292. Fix `__tsan_func_exit()` signature mismatch (#14065) (#14082) (details)
  293. Update comment (details)
  294. matching: fix some non-deterministic code generation (#14091) (details)
  295. Speedup some Set/Map access by using is_empty instead of cardinal = 0 (#14119) (details)
  296. typechecker: fix an internal error due to wrong exception (details)
  297. cpp support: move basic type definitions to misc (details)
  298. [minor] indentation fix in errortrace_report (details)
  299. error messages: external with non-syntactic arity (details)
  300. release calendar update (details)
  301. Upstream "mark-delay" change from flambda-backend. (details)
  302. Hack to work around accounting problem: artificially catch-up work_counter at the start of any slice when it falls very far behind alloc_counter. (details)
  303. fix finaliser handling bug (details)
  304. Guard call to caml_darken (details)
  305. Fix ephe_custom.ml test for the mark-delay scheme (details)
  306. Don't make finaliser updates dependent on work being available. (details)
  307. Removed unused field in package_type (details)
  308. Changes (details)
  309. Rename cstrs to constraints to distinguish from cstrs = constructors (#14141) (details)
  310. Move the orphaned ephemerons GC colour check inside the barrier. (details)
  311. minor gc: more consistent memprof logging (details)
  312. Fix missing expectations in typing-poly/poly.ml (details)
  313. Additional corrections (details)
  314. Audit unexecuted phrases (details)
  315. Audit (details)
  316. Fix audit (details)
  317. Changes (details)
  318. Update changes (details)
  319. runtime: free the minor heap when leaving STW participants (details)
  320. Update parser and adapt to the new Tpoly invariant. Requires bootstrap. (details)
  321. bootstrap (details)
  322. Add tests for polymorphic parameters (details)
  323. Promote polymorphic parameters tests failures (details)
  324. Refactor: more descriptive return type for [split_function], renaming and comment work (details)
  325. Introduce new error "opt params cannot be polymorphic" (details)
  326. Wrap and generalize filter_arrow_mono if principal (details)
  327. Handle polymorphic parameters in type_apply_arg (details)
  328. Refactor Pexp_function case and handle poly (details)
  329. Add one generalization level in type_class_arg_pattern (details)
  330. Handle polymorphic parameters in [type_approx and] [type_pat_aux] (details)
  331. Add changes entry for #15733 (details)
  332. Add test with class argument (details)
  333. Additional tests with labels (details)
  334. review: reorder functions in btype (details)
  335. review: comment format (details)
  336. review: add a Btype.newgenmono utility symetrical to Ctype.newmono (details)
  337. review: use label names in error messages (details)
  338. review: additional tests (details)
  339. Add test for polymorphic variants in polymorphic parameters (details)
  340. Take fixed instances of polys where appropriate (details)
  341. Show issue with subtyping trace (details)
  342. Fix subtyping error trace (details)
  343. tests: Promote error messages improvements after rebasing. (details)
  344. review: more reuse in parser and reloc in [param_type] (details)
  345. review: move [is_really_poly] utility to Ctype. (details)
  346. Add more test cases (details)
  347. Move definition closer to usage (details)
  348. Additional test cases (details)
  349. Document function in comment (details)
  350. Add test cases (details)
  351. Fix typo in error message (details)
  352. Rename function and move it to Btype (details)
  353. Inline function and exception used only once (details)
  354. Document function (details)
  355. Enforce Tpoly invariant (details)
  356. Clarify conditions (details)
  357. Clearer argument label and field names (details)
  358. Turn ordinary comment into a documentation comment (details)
  359. Clearer variable name (details)
  360. Fix wrong set of univars (details)
  361. review: De-duplicate parser rule for let (details)
  362. review: Add test with syntactic arity mismatch (details)
  363. review: Fix test (details)
  364. Fix dependency generation when tools are disabled (details)
  365. Fix generation of config.status for dynlink (details)
  366. Don't generate ocamltest_config.ml when not needed (details)
  367. Correct ocamltest-manual (details)
  368. symbol names: revert to using `$` only on macOS and Windows (#14143) (details)
  369. bookkeeping: update release info (details)
  370. Minor heap reservation: change the terminology (details)
  371. review: use 'arena' for the (committed) minor heap space (details)
  372. self-review: solidify two separate comments on minor heap layout (details)
  373. runtime/domain.c: add a category of 'parked' stw_domains (details)
  374. [minor] domain.c: reorder domain_self and heap-reservation variables (details)
  375. [minor] domain.c: reorder domain_create (details)
  376. use POOL_FIRST_BLOCK (details)
  377. domain.c: fix `stw_resize_minor_heaps_reservation`. (details)
  378. Extend parsetree to distinguish between `(module M : S)` and `(module M) : (module S)` (details)
  379. Changes (details)
  380. add hashtbl remove and replace which return the previous value (#14060) (details)
  381. Memprof.start replaces any existing profile in the domain, Memprof.is_sampling (details)
  382. Adjust test and add test (details)
  383. [minor] Code clean-up (details)
  384. [documentation] Clarify a difference between threads and domains (details)
  385. Changes (details)
  386. Clarify test (details)
  387. Run callbacks before starting a different profile (details)
  388. Bump multicoretests to the trunk-compatible 0.9 (details)
  389. Also bump qcheck to 0.26 while we are at it (details)
  390. runtime: host aligned fibers inside the fiber cache whenever possible (#14169) (details)
  391. Add expectation to wellfounded11150.ml (#14170) (details)
  392. Print row types when they are GADT constructors (details)
  393. Better Btype.is_row_name (details)
  394. Gc.stat: restore stack_size and add live_stacks_words (#14168) (details)
  395. error message: explain quantification mismatches (details)
  396. deprecation alert: file location (details)
  397. update Changes (details)
  398. Fix #13658 (details)
  399. Remove misleading comment, and change call back to the more intuitive function (now that that function can't allocate after the minor GC). (details)
  400. toplevel: fix printing of qualified labels (details)
  401. Add runtime counters EV_C_MINOR_PROMOTED_WORDS and EV_C_MINOR_ALLOCATED_WORDS. (details)
  402. ocamlprof: do not instrument unreachable clauses (details)
  403. Changes (details)
  404. update Changes (details)
  405. Changes: 14169 was included in 5.4 (details)
  406. Add Changes (details)
  407. Highlight known units for runtime_counter. (details)
  408. Misc.invert_build_path_prefix_map (details)
  409. Apply BUILD_PATH_PREFIX_MAP to pathes found in files by the debugger (details)
  410. Change reverted for now (details)
  411. Changes (details)
  412. Constraints on module unpacking are not ghost (#14198) (details)
  413. Fix pthread_setname_np under NetBSD (details)
  414. Fix #14200 (without breaking pr7321_ok.ml) (#14202) (details)
  415. fix memory model for Weak.set (details)
  416. refactor weak.c/do_set to look more like memory.c/modify (details)
  417. ocamltest: show test name before running the test (details)
  418. Add List.split_map (#14185) (details)
  419. Changes (details)
  420. Fix typos in comment (#14194) (details)
  421. Elide duplicate ephemeron status check (#14175) (details)
  422. Recognize %identity as nonexpansive (#14029) (details)
  423. fix tsan tests to account for #14143 (#14203) (details)
  424. Better error message when a functor is its own unsafe functor (details)
  425. Changes bookkeeping (details)
  426. Actually make example unsafe (see #14217) (details)
  427. After #14209, TSan now correctly reports a data race in (details)
  428. functor error messages: don't forget equality (details)
  429. Fix st_stubs.c compilation with mingw-w64 13.0.0 (details)
Commit 0c50c0f6fdb21b7dae9bdd0c233568b505dd80b0 by mshinwell
Ensure the minor heap is actually empty before reallocating it

(cherry picked from flambda-backend commit 85a505610bb3b1900d05347651435b323620f48b)
(cherry picked from flambda-backend commit 3583cc128279820f5861b27fb58b095861fc8725)
The file was modifiedruntime/minor_gc.c (diff)
Commit 50f133ab2576ca2c788bbc2351e948bec2bd6352 by garrigue
set scope in expand_abbrev rather than rely on update_scope
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtyping/ctype.mli (diff)
Commit 34fe58a01791fee65ea1ffb68516205f5a5e2d2a by garrigue
use Int.max rather than generic max
The file was modifiedtyping/ctype.ml (diff)
Commit 475fec725540c0f6d087287c96f11ecbaa77550a by garrigue
add log and comments; small change in instance_parameterized_type
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedChanges (diff)
Commit 1d24e2f2d0639f0c84a3b1b540d2bee0f4f4ba97 by gabriel.scherer
domain_create: release the domain lock on failure
The file was modifiedruntime/domain.c (diff)
Commit eac5234d70dc60d96dba8f6c93d2142dd50b16ad by antonin
ocamltest: use C99 booleans
The file was modifiedocamltest/run_unix.c (diff)
The file was modifiedocamltest/run_win32.c (diff)
Commit 286786e3b9d9164f86e7fdde644216f7f82e8167 by antonin
ocamltest: fix path comparison

NULL could be passed to strcmp in the error path. All libc now support
`realpath(..., NULL);`.
The file was modifiedocamltest/run_unix.c (diff)
Commit ca7008f70a7b2828df2cf506e67309787979b5b3 by antonin
ocamltest: use O_CLOEXEC on file descriptors

The execvp'ed image will still inherit the standard fd files as they
have been dup2'ed. Prevent leaks of file descriptors in tests.
The file was modifiedocamltest/run_unix.c (diff)
Commit 4b8ad7058f1312aecc8d1e77b3f90931d6ddccc5 by antonin
ocamltest: compare wcscmp result with 0
The file was modifiedocamltest/run_win32.c (diff)
Commit 79c00fac1fda1f568f83124e15fa37eca0063f9c by antonin
ocamltest: alarm(3) is always successful

> The alarm() function is always successful, and no return value is
> reserved to indicate an error.

Sometimes an invalid perror message could appear in the logs.

https://pubs.opengroup.org/onlinepubs/9799919799/functions/alarm.html
The file was modifiedocamltest/run_unix.c (diff)
Commit 9c3111d37bd250612f99ff6c71b8b8887e9567a7 by thevoodoos
Move filter_arrow error handling in a function
The file was modifiedtyping/typecore.ml (diff)
Commit d0c66e68483a91d92f46274578e360abc3b5d5f0 by thevoodoos
Refactor: extract loc_rest_of_function
The file was modifiedtyping/typecore.ml (diff)
Commit 4a08f1d4e348d620005e880b0a5f119f82bfdd6b by thevoodoos
Refactor [type_approx].

Take an additional parameter for the expected type to unify with.

Co-authored-by: Thomas Refis <thomas.refis@gmail.com>
The file was modifiedtyping/typeclass.ml (diff)
The file was modifiedtyping/typecore.mli (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtestsuite/tests/typing-misc/typecore_errors.ml (diff)
Commit 63bd7a6561cd77f5b5dfdea29739d890a327c87b by thevoodoos
Add a test illustrating a regression in type_approx
The file was modifiedtestsuite/tests/typing-misc/let_rec_approx.ml (diff)
Commit 363f64774b4c331b4956587c1dcd6dfd0afe3502 by thevoodoos
Fix the regression in type approx
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtestsuite/tests/typing-misc/let_rec_approx.ml (diff)
Commit 1527dda8d2f326edc7318055a4a44e4dd44d6cec by thevoodoos
Remove the loop: we are already in a recursive function
The file was modifiedtyping/typecore.ml (diff)
Commit dd14dd03e3cc7b75d980d34e61b416c40d9ed4c8 by thevoodoos
Add a comment about an unreachable case
The file was modifiedtyping/typecore.ml (diff)
Commit a75638202fa40681debf83f1d03a9736a68fd9e5 by thevoodoos
Add a comment for type_approx_fun_one_param's spato parameter.
The file was modifiedtyping/typecore.ml (diff)
Commit dc1e77060e32febd254db9266a9d14ad93250d8a by thevoodoos
Add a changelog entry for #13980
The file was modifiedChanges (diff)
Commit 84474967c692e5fb37e697ed9257fdc6495691d9 by david.allsopp
Set FLEXDIR when bootstrapping flexlink

Previously, the flexdll support objects were placed in both byte/bin and
opt/bin with the copy of flexlink.exe when flexlink was being
bootstrapped with OCaml. The objects are small, so the copying was not
particulary onerous.

However, if opt/bin/flexlink.exe is a native Windows symlink (pointing
to ../../flexlink.opt.exe) then Sys.executable_name when flexlink runs
will point to the wrong place. While flexlink ought to be checking
Sys.argv.(0) rather than Sys.executable_name, a better hardening is to
be explicit and set the FLEXDIR environment variable to point to the
directory containing the support objects. This also allows
byte/bin/flexlink.exe and opt/bin/flexlink.exe to share the same copy of
the objects.
The file was modifiedMakefile.common (diff)
The file was modifiedMakefile.cross (diff)
The file was modifiedMakefile.build_config.in (diff)
The file was modifiedMakefile (diff)
Commit 99bf62e438feb51d7b5b954ff4e8d0230b0e0172 by david.allsopp
Make ocamlmklib fail on an unknown parameter

This reverts commit 31cbd26c16f81c8a273ad3ba988c49db6b0dbe38.
The file was modifiedtools/ocamlmklib.ml (diff)
The file was modifiedChanges (diff)
Commit c681cd75440c3403ef442c6f9cf0c4c52d85af8a by thevoodoos
Collimate the comments
The file was modifiedtyping/typecore.ml (diff)
Commit e26ce76ecbbc66627e3234ba3c49dd89b7801e2e by vincent.laviron
Fix Makefile dependencies for ocamldoc, ocamltest and ocamldebug
The file was modifiedMakefile (diff)
Commit 60494e239ab043d72c1b1869ca790f7320f849fa by Florian Angeletti
Bump magic numbers and version for 5.5.0
The file was modifiedbuild-aux/ocaml_version.m4 (diff)
The file was modifiedocaml-variants.opam (diff)
The file was modifiedconfigure (diff)
The file was modifiedboot/ocamllex (diff)
The file was modifiedVERSION (diff)
The file was modifiedboot/ocamlc (diff)
Commit 4ee429d49dc03663eb6a91a8dd3f7da7ffaf7149 by clement.blaudeau
Refactor [is_functor_arg] table of env into [not_aliasable]

- In [env.ml], renamed the internal table used to track non aliasable modules
from [Env_functor_arg] to [Env_not_aliasable], renamed the associated test
function from [is_functor_arg] to [is_aliasable], renamed the [~arg] flags of
some functions into [~noalias]

- In [includemod.ml], removed the redundant [can_alias] function

- In [typemod.ml], changed the error message for [Cannot_alias]
The file was modifiedtestsuite/tests/typing-modules/pr13185.ml (diff)
The file was modifiedtyping/out_type.ml (diff)
The file was modifiedtyping/includemod.ml (diff)
The file was modifiedtyping/typemod.ml (diff)
The file was modifiedtyping/env.ml (diff)
The file was modifiedtyping/envaux.ml (diff)
The file was modifiedtestsuite/tests/typing-sigsubst/sigsubst.ml (diff)
The file was modifiedtyping/env.mli (diff)
The file was modifiedtyping/mtype.ml (diff)
Commit 9b9a8d1d5842edeacc234e2344c42f5f642e01e3 by clement.blaudeau
Added tests and updated error message with line breaks
The file was modifiedtestsuite/tests/typing-modules/aliases.ml (diff)
The file was modifiedtyping/typemod.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/pr13185.ml (diff)
The file was modifiedtestsuite/tests/typing-sigsubst/sigsubst.ml (diff)
Commit 60f8298cc6875f822be2e5aacad6521f7cacaa32 by gabriel.scherer
genprintval: explain why certain uses of O.obj are not guarded

Co-authored-by: Pierre Boutillier <pierre.boutillier@laposte.net>
The file was modifieddebugger/debugcom.ml (diff)
The file was modifiedtoplevel/topcommon.ml (diff)
The file was modifiedtoplevel/genprintval.ml (diff)
The file was modifiedtoplevel/genprintval.mli (diff)
The file was modifieddebugger/eval.ml (diff)
The file was modifieddebugger/debugcom.mli (diff)
Commit ff699be4ada40b4d40c38db7460d290b5851eb92 by gabriel.scherer
genprintval: move user-installed printers out of the Make functor

User-provided printers see a whole Obj.t value, rather than getting
the remote value on-demand during printing.

Co-authored-by: Pierre Boutillier <pierre.boutillier@laposte.net>
The file was modifieddebugger/debugcom.mli (diff)
The file was modifieddebugger/loadprinter.ml (diff)
The file was modified.depend (diff)
The file was modifiedtoplevel/genprintval.ml (diff)
The file was modifieddebugger/printval.ml (diff)
The file was modifiedtoplevel/genprintval.mli (diff)
The file was modifieddebugger/debugcom.ml (diff)
The file was modifieddebugger/printval.mli (diff)
The file was modifiedtoplevel/topcommon.ml (diff)
Commit 7e4485d8770b5b088f022e43e0a353e5c59eeeed by gabriel.scherer
Generic printers in debugger
The file was modifieddebugger/printval.mli (diff)
The file was modifieddebugger/printval.ml (diff)
The file was modified.depend (diff)
The file was modifieddebugger/loadprinter.ml (diff)
Commit 9a8bc46842ceb79494c31e0d42e31170fb28b739 by gabriel.scherer
Test and doc of polymorphic printers in debugger
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/tool-debugger/printer/debuggee.ml (diff)
The file was modifiedtestsuite/tests/tool-debugger/printer/printer.ml (diff)
The file was modifiedtestsuite/tests/tool-debugger/printer/debuggee.reference (diff)
The file was modifiedtestsuite/tests/tool-debugger/printer/input_script (diff)
Commit 1533cbcf9880a34bf9432c6690407c23f7578f40 by mail
Use trunk-compatible dune.3.18.2
The file was modified.github/workflows/multicoretests.yml (diff)
Commit f854e28ac8840d50cf35e3430bbc02d049b4c542 by clement.blaudeau
Made the "remove_aliases" attribute visible in built-ins attributes

- Updated the manual to document [remove_aliases]
- Created a proper [has_remove_aliases] function in Builtin_attributes
The file was modifiedmanual/src/refman/extensions/attributes.etex (diff)
The file was modified.depend (diff)
The file was modifiedChanges (diff)
The file was modifiedtyping/typemod.ml (diff)
The file was modifiedparsing/builtin_attributes.ml (diff)
The file was modifiedparsing/builtin_attributes.mli (diff)
Commit eb383047f6bd6f3b247ffbe3e3c1e3738a5743a1 by olivier
Add Dynarray.unsafe_to_iarray

Fixes #13793.
The file was modifiedtestsuite/tests/lib-dynarray/test.ml (diff)
The file was modifiedstdlib/dynarray.ml (diff)
The file was modifiedstdlib/dynarray.mli (diff)
The file was modifiedChanges (diff)
Commit aaab90d38322567df59927a46959cbdabc3fee95 by noreply
Reimplement `let open`, `let module` and `let exception` in terms of a single construct (#13839)

* Expose Translcore.transl_struct_item

* Expose Typemod.type_str_item

* Define helper function Typecore.is_nonexpansive_stritem

* Add Pexp_struct_item, Texp_struct_item

* Reimplement 'let module'

* Reimplement 'let exception'

* Reimplement 'let open'

* Promote parser

* Accept tests

* Remove reimplemented AST nodes

* Ast_invariants: disallow other structure items

* Wrap in generalization region (suggested by @samsa1)

* Changes

* .depend
The file was modifiedlambda/translcore.ml (diff)
The file was modifiedtyping/tast_iterator.ml (diff)
The file was modifiedtyping/typedtree.mli (diff)
The file was modified.depend (diff)
The file was modifiedtestsuite/tests/shape-index/index_modules.reference (diff)
The file was modifiedlambda/translmod.ml (diff)
The file was modifiedparsing/parsetree.mli (diff)
The file was modifiedparsing/pprintast.ml (diff)
The file was modifiedlambda/translcore.mli (diff)
The file was modifiedparsing/depend.ml (diff)
The file was modifiedtyping/typecore.mli (diff)
The file was modifiedtyping/untypeast.ml (diff)
The file was modifiedtyping/value_rec_check.ml (diff)
The file was modifiedparsing/ast_helper.mli (diff)
The file was modifiedboot/menhir/parser.ml (diff)
The file was modifiedtyping/cmt2annot.ml (diff)
The file was modifiedparsing/ast_helper.ml (diff)
The file was modifiedtyping/printtyped.ml (diff)
The file was modifiedtyping/typedtree.ml (diff)
The file was modifiedparsing/ast_mapper.ml (diff)
The file was modifiedtyping/tast_mapper.ml (diff)
The file was modifiedfile_formats/cmt_format.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtools/ocamlprof.ml (diff)
The file was modifiedparsing/parser.mly (diff)
The file was modifiedtestsuite/tests/parsetree/locations_test.compilers.reference (diff)
The file was modifiedChanges (diff)
The file was modifiedparsing/printast.ml (diff)
The file was modifiedtyping/typemod.ml (diff)
The file was modifiedparsing/ast_invariants.ml (diff)
The file was modifiedparsing/ast_iterator.ml (diff)
The file was modifiedtestsuite/tests/parsing/shortcut_ext_attr.compilers.reference (diff)
Commit f1025ceaeace6a6ca4496194847bc2749021bf1d by noreply
webman: add anchors for API items, headings (#14002)

* webman: add anchors for API items, headings

* Changes
The file was modifiedmanual/src/html_processing/src/process_api.ml (diff)
The file was modifiedmanual/src/html_processing/scss/style.scss (diff)
The file was modifiedChanges (diff)
Commit 58db57d565aece80208b0e987b6e712a796c2fcf by noreply
Refine docs for `In_channel` and `Out_channel` (#13982)

The file was modifiedstdlib/in_channel.mli (diff)
The file was modifiedstdlib/out_channel.mli (diff)
Commit afa4dfad49d8b194365978776878be78e616e1f0 by n.oje.bar
Pprintast: use parentheses around Pexp_struct_item in sequences
The file was modifiedparsing/pprintast.ml (diff)
Commit 1d85917436da1a94c64bc7bffcd00edec1f3a847 by n.oje.bar
Move Changes entry to right place, add bugfix PR
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/parsetree/source.ml (diff)
Commit 3fdb4baf81fb17d22974fabd2469427183c66005 by mail
Fix missing version bump to 5.5 in opam file
The file was modifiedocaml-variants.opam (diff)
Commit a8a80630c621dd92cd0a5ca8c7f28e9ee341e7fc by mail
Update precondition comment to reflect renaming from #12619
The file was modifiedruntime/shared_heap.c (diff)
Commit e291d788b8db28f0b336e8eeaa94a42ae7da42e2 by david.allsopp
check-symbol-names: ignore extern char **environ re-decl

It is needed on Cygwin.
The file was modifiedtools/check-symbol-names (diff)
Commit 0faee008245c47abf945a6bd35c092329eff9e69 by david.allsopp
gha: Document labels triggering/skipping workflows
The file was modifiedHACKING.adoc (diff)
Commit 14806d040a9d85a7a3c0b0d675dde9033d51017e by david.allsopp
Dynamic matrix for the others job

Define the matrix for the others job using an actions/github-script
step, which allows the possibility of the matrix being dynamic.
The file was modified.github/workflows/build.yml (diff)
Commit bd08fe5ff3125b0f0ef3549649420b3b4352d347 by david.allsopp
Add optional static and mimimal jobs

Tests a full `--disable-shared` build on Linux and also a Linux build
with as many options disabled as possible (as the minimal build in the
other-configs job on Jenkins also does).

The matrix is expanded by adding the 'CI: Full matrix' label to a pull
request.
The file was modifiedHACKING.adoc (diff)
The file was modified.github/workflows/build.yml (diff)
Commit 7bd48c16828a03216f2725b1772e037c4b6840db by david.allsopp
Merge macOS Dependency steps
The file was modified.github/workflows/build.yml (diff)
Commit 1183b2e68ac431be0717daa8d2858ce0834a936c by david.allsopp
Fix test_create_cursor_failures.ml on Cygwin

If Cygwin is running "elevated" - which it is in CI - then it acts as
though it's running as root. It intentionally activates
SeBackupPrivilege, which thwarts the test_create_cursor_failures.ml
test.

The OCaml testsuite will never require root privileges for anything
meaningful, so ocamltest on Cygwin simply drops the SeBackupPrivilege
when running on Cygwin, which means the test correctly fails.
The file was modifiedocamltest/run_command.ml (diff)
The file was modifiedocamltest/run_stubs.c (diff)
Commit ed51193947bb53d8fa376742aad12d23e106c26d by david.allsopp
Update build-msvc.yml to permit Cygwin builds

Yes, yes, the filename -msvc.yml has become a bit out of date...
The file was modified.github/workflows/build-msvc.yml (diff)
Commit 722ac3597f693d2adeeeff9a03b22b1eee96df7a by david.allsopp
Add optional Cygwin check to CI
The file was modified.github/workflows/build-msvc.yml (diff)
Commit 419fe5878cc14e8ca158e65ef37dc4e131d6266b by david.allsopp
Add bytecode-only Cygwin check
The file was modified.github/workflows/build-msvc.yml (diff)
Commit ab284d36c7066883b86baf77db4716197adef52d by david.allsopp
Add a 'CI: Skip testsuite' label

Applying this label _before_ the testsuite has started in either GitHub
Actions or AppVeyor will cause the execution of the testsuite to be
skipped.
The file was modified.github/workflows/build.yml (diff)
The file was modifiedHACKING.adoc (diff)
The file was modified.github/workflows/build-msvc.yml (diff)
The file was modifiedtools/ci/appveyor/appveyor_build.sh (diff)
Commit 749465de5d23f9ac16cf8c56599e2e3cb96077a2 by david.allsopp
Fix tools/check-symbol-names for i686 mingw-w64
The file was modifiedtools/check-symbol-names (diff)
Commit a9449fa8369548f9ace43a56655fe4a3c15bfc7c by david.allsopp
Windows matrix: arch instead of x86_64
The file was modified.github/workflows/build-msvc.yml (diff)
Commit 82aab74e3863fd6abce1d600ed83a11d0b54b8eb by noreply
stale bot: only identify stale issues, don't close them. (#14004)

* stale bot: only identify stale issues.
The file was modified.github/workflows/stale.yml (diff)
Commit e6321cf1e3f3bfb0795108ab4d6c66c559ea9b63 by noreply
Fix memory corruption when an exception is raised during demarshaling. (#14015)

The file was modifiedruntime/intern.c (diff)
The file was modifiedChanges (diff)
The file was modifiedChanges (diff)
Commit 7f6999848c19890ecf9c9722cd9318ffcb0138da by Florian Angeletti
update Changes after cherry-picking
The file was modifiedChanges (diff)
Commit 1863943fd1cc5f278b8787124be3a7be0263bb4c by clement.blaudeau
[refactor merge] Create a Merge module + white space changes
The file was modifiedtyping/typemod.ml (diff)
Commit a0bc3880546569f5763a64992222192e872a1c0a by clement.blaudeau
[refactor merge] Extracted helper functions

- [split_row_ids] and [unsafe_signature_subst]
The file was modifiedtyping/typemod.ml (diff)
Commit c86afcccb3914ab718d88f8a89c169d508dd2da7 by clement.blaudeau
[refactor merge] Changed the return logic

- Typedtrees are no longer built inside [merge_constraint] but inside
[transl_with], which removes the need for a special approximation case: merging
always returns a module type, not a Typedtree. Changed [transl_with] to build
the Typedtree there.

- Removed the [real_ids] mechanism that was used to store (imperatively) the
list of affected paths. Now the patches (defined by [return], [return_payload]
and [return_paths]) store both the resulting path and the list of affected
paths.

- Added a [payload] mechanism used only for the type constraint case, where the
replacement declaration is returned as an additional payload. Other cases return
[None].

- Create separate functions ([merge_type], [merge_module], [merge_modtype])

- Extracted the post processing (wellformedness checks and substitutions) into
an helper function [post_process]
The file was modifiedtyping/typemod.ml (diff)
Commit 69fa2d8ce47c79aa903be4ecac1dc1784eb535dc by clement.blaudeau
[refactor merge] Extracted the recursive functions for deep constr

- Broke down the main merging function into three parts: [merge_signature],
[patch_deep_item] and [patch_all]. The first two are mutually recursive and use
an extra argument [~patch]. For now, the only patch provided (in [merge_type],
[merge_module], etc) is [patch_all].
The file was modifiedtyping/typemod.ml (diff)
Commit 2dfe7eb470d79b460fae273c7956b97889be164e by clement.blaudeau
[refactor merge] Moved code
The file was modifiedtyping/typemod.ml (diff)
Commit 35afca5a2955c566f906c5706d16f032c5110e17 by clement.blaudeau
[refactor merge] Extracted the type-package case

- Move the patching logic from [patch_all] to a specialized patch function in
[merge_package_constraint]

- Removed the (now) useless lid argument for [patch_all]
The file was modifiedtyping/typemod.ml (diff)
Commit 0fb1f1997f8f01b2fbb28bea69f3fbd67f29942f by clement.blaudeau
[refactor merge] Extracted the type case

- Moved the patching logic from [patch_all] to specialized patch function in
[merge_type]

- Removed the (now) useless [initial_env] argument for [patch_all]
The file was modifiedtyping/typemod.ml (diff)
Commit aeef23033f20749f3f422b7727c7d2214872e169 by clement.blaudeau
[refactor merge] Extracted the module case

- Moved the patching logic from [patch_all] to a specialized patch function in
[merge_module]. Merged the common parts of the destructive and non-destructive
cases
The file was modifiedtyping/typemod.ml (diff)
Commit 5e2e65e997843651cb54dd736a570551426eb82f by clement.blaudeau
[refactor merge] Extracted the modtype case

- Moved the patching logic from [patch_all] to a specialized patch function in
[merge_modtype]

- Removed the (now) useless [patch_all]
The file was modifiedtyping/typemod.ml (diff)
Commit cac4e069f00e81db589e652a808e4bb7f3898b35 by clement.blaudeau
[refactor merge] Added comments, minor stylistic changes

- Added general comments about merging

- Renamed the `merge_package_constraint` into `merge_package`

- Moved the [try ... with] of [merge_signature] to the outer function [merge].
The file was modifiedtyping/typemod.ml (diff)
Commit 4354a58ca3d6ded0863cc51c2369ec5a67259c51 by clement.blaudeau
[refactor merge] Corrections from Octachron review
The file was modifiedtyping/typemod.ml (diff)
Commit 27929219b1472958d654b71d9525921efb29d9da by clement.blaudeau
[refactor merge] Moved the catching of exception
The file was modifiedtyping/typemod.ml (diff)
Commit d38e5e615b9a22eff7cb0762101a1f8abbb8588a by clement.blaudeau
[refactor merge] Updated comments
The file was modifiedtyping/typemod.ml (diff)
Commit 330c1ad58f54ae5dd6d22ba37365287d87d93fb1 by clement.blaudeau
[refactor merge] Added Changelog entry
The file was modifiedChanges (diff)
Commit 9c47876b8b3714a2bfa687994999e02006e37efd by gabriel.scherer
[minor] printcmm: print atomic loads
The file was modifiedasmcomp/printcmm.ml (diff)
Commit 49063310c747aebcabb8f6b23362c869c008ca2e by gabriel.scherer
[testsuite] test the compilation of atomic functions
The file was addedtestsuite/tests/atomic-locs/cmm.compilers.reference
The file was addedtestsuite/tests/atomic-locs/cmm.ml
Commit 101ed6f1b03c257e58e7291967b756696ed66865 by gabriel.scherer
[refactor] Define [caml_atomic_cas] in terms of [caml_atomic_cas_field].
The file was modifiedruntime/memory.c (diff)
Commit 1c6248081df5f7b6954115f22ce17bc456a5d6f5 by gabriel.scherer
[breaking] Change the prototype of [caml_atomic_cas_field].

This is a breaking change because this function was (unfortunately)
exposed outside CAML_INTERNALS, and is used by exactly one external
user, you guessed it:
  https://github.com/ocaml-multicore/multicore-magic/blob/360c2e829c9addeca9ccaee1c71f4ad36bb14a79/src/Multicore_magic.mli#L181-L185
  https://github.com/ocaml-multicore/multicore-magic/blob/360c2e829c9addeca9ccaee1c71f4ad36bb14a79/src/unboxed5/multicore_magic_atomic_array.ml#L36-L43

We chose to change the prototype to remain consistent with the naming
convention for the new caml_atomic_*_field primitives, which will be
added to support atomic record fields.

User code can easily adapt to this new prototype we are using, but not
in a way that is compatible with both old and new versions of
OCaml (not without some preprocessing at least).

Another option would be to expose

    int caml_atomic_cas_field(value obj, intnat fld, value, value)
    value caml_atomic_cas_field_boxed(value obj, value vfld, value, value)

but no other group of primitives in the runtime uses this _boxed
terminology, they instead use

    int caml_atomic_cas_field_unboxed(value obj, intnat fld, value, value)
    value caml_atomic_cas_field(value obj, value vfld, value, value)

and this would again break compatiblity -- it is not easier to convert
code to that two-version proposal, and not noticeably more efficient.

So in this case we decided to break compatibility (of an obscure,
experimental, undocumented but exposed feature) in favor of
consistency and simplificity of the result.
The file was modifiedruntime/caml/memory.h (diff)
The file was modifiedruntime/memory.c (diff)
The file was modifiedruntime/obj.c (diff)
Commit 234cb15281ecf859291badaee64390ac12314931 by gabriel.scherer
runtime: Add atomic primitives [caml_atomic_load_field], [caml_atomic_exchange_field] and [caml_atomic_fetch_add_field].
The file was modifiedruntime/memory.c (diff)
Commit 2122b66dba9cb7525ab68db7cbf30b09a4f97681 by gabriel.scherer
lambda: Add support for new atomic primitives.

Uses of existing atomic primitives %atomic_foo, which act on
single-field references, are now translated into %atomic_foo_field,
which act on a pointer and an offset -- passed as separate arguments.

In particular, note that the arity of the internal Lambda primitive
    Patomic_load
increases by one with this patchset. (Initially we renamed it into
    Patomic_load_field
but this creates a lot of churn for no clear benefits.)

We also support primitives of the form %atomic_foo_loc, which
expects a pair of a pointer and an offset (as a single argument),
as we proposed in the RFC on atomic fields
  https://github.com/ocaml/RFCs/pull/39
(but there is no language-level support for atomic record fields yet)

Co-authored-by: Clément Allain <clef-men@orange.fr>
The file was modifiedlambda/translprim.ml (diff)
The file was modifiedbytecomp/bytegen.ml (diff)
The file was modifiedruntime/memory.c (diff)
The file was modifiedasmcomp/cmm_helpers.mli (diff)
The file was modifiedasmcomp/cmmgen.ml (diff)
The file was modifiedtestsuite/tests/atomic-locs/cmm.compilers.reference (diff)
The file was modifiedasmcomp/cmm_helpers.ml (diff)
Commit d5b3ddbe2ca1daa23303f8c4426bb5311b009037 by gabriel.scherer
Add support for atomic record fields.

Requires a bootstrap.

Co-authored-by: Gabriel Scherer <gabriel.scherer@gmail.com>
The file was modifiedparsing/builtin_attributes.ml (diff)
The file was modifiedparsing/builtin_attributes.mli (diff)
The file was modifiedtyping/includecore.mli (diff)
The file was modifiedtyping/data_types.mli (diff)
The file was modifiedtyping/datarepr.ml (diff)
The file was modifiedtyping/typedtree.ml (diff)
The file was modifiedtyping/printtyped.ml (diff)
The file was modifiedocamldoc/odoc_sig.ml (diff)
The file was modifiedtyping/typedecl.mli (diff)
The file was modifiedlambda/translcore.ml (diff)
The file was modifiedtyping/data_types.ml (diff)
The file was modifiedtyping/typedtree.mli (diff)
The file was modifiedtyping/includecore.ml (diff)
The file was modifiedparsing/asttypes.mli (diff)
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtyping/types.ml (diff)
The file was modifiedtyping/outcometree.mli (diff)
The file was modifiedparsing/asttypes.ml (diff)
The file was modifiedtyping/oprint.ml (diff)
The file was modifiedtyping/subst.ml (diff)
The file was modifiedtyping/types.mli (diff)
The file was modifiedtyping/typedecl.ml (diff)
The file was modifiedtyping/out_type.ml (diff)
Commit e409b552b7d61121a340b91f9195687fc589e8a2 by gabriel.scherer
atomic fields in ocamldoc
The file was modifiedocamldoc/odoc_man.ml (diff)
The file was modifiedocamldoc/odoc_info.mli (diff)
The file was modifiedocamldoc/odoc_type.mli (diff)
The file was modifiedocamldoc/odoc_type.ml (diff)
The file was modifiedocamldoc/odoc_html.ml (diff)
The file was modifiedocamldoc/odoc_latex.ml (diff)
The file was modifiedocamldoc/odoc_sig.ml (diff)
The file was modifiedocamldoc/odoc_str.ml (diff)
Commit b1dea05488aa0a6a57d1a28834355e61492eaf39 by gabriel.scherer
Bootstrap.

To reproduce (see BOOTSTRAP.adoc for details):
- go to the earlier commit "lambda: Add support for new atomic
  primitives" as a known-good state, build that one
- keep the build artifacts around, come here and do `make bootstrap`
The file was modifiedboot/ocamlc (diff)
The file was modifiedboot/ocamllex (diff)
Commit 9fb1b31abcd751a7c6d34215903f89784de5353d by gabriel.scherer
Add tests for atomic record fields.
The file was modifiedtestsuite/tests/atomic-locs/cmm.compilers.reference (diff)
The file was modifiedtestsuite/tests/atomic-locs/cmm.ml (diff)
The file was addedtestsuite/tests/atomic-locs/record_fields.ml
Commit 2e8ca54741e0ff7550a9cc1a6a8b36c8b9b8359f by gabriel.scherer
[minor] Make test_untypeast.ml more readable.
The file was modifiedtestsuite/tests/compiler-libs/test_untypeast.ml (diff)
Commit ab0634e53819145464a231262c1f417a6b917aa2 by gabriel.scherer
Add predefined type ['a atomic_loc].

This type will be used for ['a Atomic.Loc.t], as proposed
in the RFC
  https://github.com/ocaml/RFCs/pull/39

We implement this here to be able to use it in the stdlib later,
after a bootstrap.
The file was modifiedtyping/typeopt.ml (diff)
The file was modifiedtyping/predef.ml (diff)
The file was modifiedtyping/predef.mli (diff)
Commit 8866157eca491911d82e920d475823e281dfc3b6 by gabriel.scherer
[refactor] more general type for Env.mark_*_used

We want to use [mark_label_used] in a context where we cannot easily
find the label declaration, only the label description (from the
environment).
The file was modifiedtyping/env.ml (diff)
The file was modifiedtyping/includecore.ml (diff)
The file was modifiedtyping/env.mli (diff)
Commit 2acb346a8bcb92f1f82c2cee32aa001a0e641dcb by gabriel.scherer
Add extension [%atomic.loc record.field].
The file was modifiedtyping/value_rec_check.ml (diff)
The file was modifiedtyping/printtyped.ml (diff)
The file was modifiedtyping/tast_mapper.ml (diff)
The file was modifiedtyping/typecore.mli (diff)
The file was modifiedtyping/typedtree.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/typedtree.mli (diff)
The file was modifiedlambda/translcore.ml (diff)
The file was modifiedtyping/untypeast.ml (diff)
The file was modifiedtyping/tast_iterator.ml (diff)
The file was modifiedfile_formats/cmt_format.ml (diff)
The file was modifiedtestsuite/tests/compiler-libs/test_untypeast.ml (diff)
Commit c139dade56f094a4e82bc1b22fa4982c0ce03acc by gabriel.scherer
Bootstrap.

This bootstrap is not required by a compiler change, but it enables
the use of the predefined type `'a atomic_loc` and the
expression-former [%atomic.loc ...] in the standard library.
The file was modifiedboot/ocamlc (diff)
Commit 5441c97e24b74e9dfb503d09a80fb6e0f6241f43 by gabriel.scherer
Add module [Stdlib.Atomic.Loc].
The file was modifiedstdlib/atomic.ml (diff)
The file was modifiedstdlib/atomic.mli (diff)
Commit 2cf2fed2a348344afe0941a0e8c6ac60de7be577 by gabriel.scherer
Add tests for [Atomic.Loc].
The file was modifiedtestsuite/tests/atomic-locs/cmm.compilers.reference (diff)
The file was modifiedtestsuite/tests/atomic-locs/cmm.ml (diff)
The file was modifiedtestsuite/tests/atomic-locs/record_fields.ml (diff)
Commit 8138d72f7bcb634453ee59a15e50454fad6dacab by gabriel.scherer
Reimplement [Atomic.t] using [Atomic.Loc.t].
The file was modifiedstdlib/atomic.ml (diff)
Commit 929479284895eadf07942a4869a4413930c1a3f7 by gabriel.scherer
Forbid atomic fields in patterns.
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/typecore.mli (diff)
The file was modifiedChanges (diff)
Commit 26a5bdee619338cee22cf243bb3b14a528c1b47f by gabriel.scherer
testsuite for pattern-matching on atomic reads
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtestsuite/tests/atomic-locs/record_fields.ml (diff)
Commit 9ce811fa30d942c86abacef44b02d23a60c1f7d1 by gabriel.scherer
allow wildcard patterns under atomic record fields

Suggested-by: Olivier Nicole <olivier@chnik.fr>
The file was modifiedtestsuite/tests/atomic-locs/record_fields.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
Commit 27b62e17b7f3799cdf71c032d8f3e4ec73c9e2b2 by gabriel.scherer
stdlib/Atomic: move the Loc module below in the .mli
The file was modifiedstdlib/atomic.mli (diff)
Commit 2816e615b81d823c54b16478a83df1008c800556 by gabriel.scherer
stdlib/Atomic: minimal documentation
The file was modifiedstdlib/atomic.mli (diff)
Commit 465e615a111eb6b0bfabec938032aa94a5030762 by gabriel.scherer
describe atomic record fields in the reference manual
The file was modifiedmanual/src/refman/typedecl.etex (diff)
The file was modifiedmanual/src/tutorials/parallelism.etex (diff)
The file was modifiedmanual/src/refman/extensions/attributes.etex (diff)
The file was modifiedmanual/src/refman/extensions/extensionnodes.etex (diff)
Commit 3e00aa54590360c0a97e471a259c5ad38ea12713 by noreply
Runtime events: dispatch the right event message type (#13970)

* Dispatch the right event message type

`type.runtime | type.user` does not really make sense as `.runtime`
and `.user` are two projections of the same union type.

Prevents a MSVC 19.44.35109.1 warning:

    runtime/runtime_events.c(595): warning C5287: operands are different enum types
    'ev_runtime_message_type' and 'ev_user_message_type'; use an explicit cast to silence this warning

Co-authored-by: Gabriel Scherer <gabriel.scherer@gmail.com>

* Fit in 80 cols

---------

Co-authored-by: Gabriel Scherer <gabriel.scherer@gmail.com>
The file was modifiedruntime/runtime_events.c (diff)
The file was modifiedotherlibs/unix/unix.mli (diff)
The file was modifiedotherlibs/unix/unix_unix.ml (diff)
The file was modifiedotherlibs/unix/unixLabels.mli (diff)
The file was modifiedotherlibs/unix/unix_win32.ml (diff)
The file was modifiedotherlibs/unix/putenv.c (diff)
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/lib-unix/win-env/test_env.reference (diff)
The file was modifiedtestsuite/tests/lib-unix/win-env/test_env.ml (diff)
Commit 8cadc919cc864f85d2f09596ef7a76c867de315f by reisenberg
Document [row_more] and [row_fixed].
The file was modifiedtyping/types.mli (diff)
Commit 90d454692dabf1b95c4583d2b0cfa02bd98d43bb by noreply
Add Option.product and Option.Syntax (#13916)

The file was modifiedChanges (diff)
The file was modifiedstdlib/option.mli (diff)
The file was modifiedstdlib/result.mli (diff)
The file was modifiedtestsuite/tests/lib-option/test.ml (diff)
The file was modifiedstdlib/option.ml (diff)
Commit e23e32b7a3a4fad515784452bfce29c3e75ba8de by noreply
[minor] More readable output from `gen_sizeclasses` (#13923)

* more readable output for tools/gen_sizeclasses

* gen_sizeclasses: document the less obvious definitions
The file was modifiedtools/gen_sizeclasses.ml (diff)
The file was modifiedruntime/caml/sizeclasses.h (diff)
Commit 000a5c57ee9da59bd81d3132c55fcf4931bd9f99 by antonin
Fix unterminated-string-initialization warning

    yacc/reader.c:62:1: error: initializer-string for character array is too long, array size is 32 but initializer has size 33 (including the null terminating character); did you mean to use the 'nonstring' attribute? [-Werror,-Wunterminated-string-initialization]
       62 | "\000\000\000\000\000\000\000\000\376\377\377\207\376\377\377\007\000\000\000\000\000\000\000\000\377\377\177\377\377\377\177\377";
          | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    yacc/reader.c:64:1: error: initializer-string for character array is too long, array size is 32 but initializer has size 33 (including the null terminating character); did you mean to use the 'nonstring' attribute? [-Werror,-Wunterminated-string-initialization]
       64 | "\000\000\000\000\200\000\377\003\376\377\377\207\376\377\377\007\000\000\000\000\000\000\000\000\377\377\177\377\377\377\177\377";
          | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The file was modifiedyacc/reader.c (diff)
The file was modifiedChanges (diff)
Commit f252da5314f3eda4967da5caf6eafedcdcabef2c by gabriel.scherer
fix atomic-locs/cmm.compilers.reference
The file was modifiedtestsuite/tests/atomic-locs/cmm.compilers.reference (diff)
Commit 6c2e7cf22f25b4ec9685b28b5b991346ae842591 by antonin
tests: native-debugger: sanitize GDB+musl output
The file was modifiedtestsuite/tests/native-debugger/linux-gdb-arm64.reference (diff)
The file was modifiedtestsuite/tests/native-debugger/linux-gdb-riscv.reference (diff)
The file was modifiedtestsuite/tests/native-debugger/linux-gdb-amd64.reference (diff)
The file was modifiedtestsuite/tests/native-debugger/sanitize.awk (diff)
The file was modifiedruntime/major_gc.c (diff)
The file was modifiedChanges (diff)
Commit 5f663c525a88c76e93a7da27f2dad1aaacb2108c by david.allsopp
Add caml_sys_proc_self_exe primitive

caml_executable_name is always called in native startup and for all the
non-default bytecode linking mechanisms. Bytecode startup now always
calls caml_executable_name, and this value is stored along with
exe_name.

caml_sys_proc_self_exe returns this stored value as a string option. It
returns None if caml_executable_name is not implemented on a given
platform.
The file was modifiedruntime/sys.c (diff)
The file was modifiedruntime/startup_nat.c (diff)
The file was modifiedruntime/startup_aux.c (diff)
The file was modifiedruntime/caml/sys.h (diff)
The file was modifiedruntime/caml/startup_aux.h (diff)
The file was modifiedruntime/startup_byt.c (diff)
Commit 842ae77deebcc506adebc529e325bdaecbdd149d by david.allsopp
Add Sys.runtime_executable

In native mode, same as Sys.executable_name, in bytecode, the path to
the interpreter executing Sys.executable_name, which may not be the same
from the same file.
The file was modifiedChanges (diff)
The file was modifiedstdlib/sys.ml.in (diff)
The file was modifiedstdlib/sys.mli (diff)
Commit a086c20a381fa6fb847aea0f8b6c1748e38203e0 by noreply
Cleanups following introduction of `Pexp_struct_item`/`Texp_struct_item` (#14028)

* Remove stale comments

* Remove dead constructor: Scoping_let_module

* Remove eqparsetree.ml
The file was modified.depend (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/typemod.ml (diff)
The file was removedtools/eqparsetree.ml
The file was modifiedtyping/typecore.mli (diff)
Commit f33fae757e037b681baa635a75067286e44168a4 by noreply
Add row_more invariant
The file was modifiedtyping/types.mli (diff)
Commit d5e48252c891b8f00a2a5a9507000cbdacda03e2 by mail
Update flexdll submodule to 0.44
The file was modifiedflexdll (diff)
Commit ddb6343042095231d5836e168f72b4d736413e89 by mail
Reenable lib-dynlink-domains test on Windows, temporarily disabled in #11607
The file was modifiedtestsuite/tests/lib-dynlink-domains/main.ml (diff)
The file was modifiedtyping/types.mli (diff)
The file was modifiedChanges (diff)
Commit bf40de4309e80162303ca006204f0a7797f2dc71 by antonin
tests: native-debugger: sanitize LLDB+GLIBC output
The file was modifiedtestsuite/tests/native-debugger/sanitize.awk (diff)
The file was modifiedtestsuite/tests/native-debugger/linux-lldb-arm64.reference (diff)
The file was modifiedtestsuite/tests/native-debugger/linux-lldb-amd64.reference (diff)
The file was modifiedocamltest/tsl_semantics.ml (diff)
The file was modifiedocamltest/variables.ml (diff)
The file was modifiedocamltest/variables.mli (diff)
Commit 4df3c8be060c01f9c671663201f37d14ba7c191a by damien.doligez
update Changes for #13961
The file was modifiedChanges (diff)
Commit 1d3252f7737e38bcf1a7995a61ceb3c8b2321ca6 by damien.doligez
simplifications suggested by reviewer
The file was modifiedChanges (diff)
The file was modifiedocamltest/variables.mli (diff)
The file was modifiedocamltest/tsl_semantics.ml (diff)
The file was modifiedocamltest/variables.ml (diff)
Commit e83af502d10c75e842ebf60bb16c3c19bae917b1 by gabriel.scherer
[minor] use a record in Compenv.process_deferred_actions

Reviewed-by: Nicolás Ojeda Bär <n.oje.bar@gmail.com>
The file was modifieddriver/optmaindriver.ml (diff)
The file was modifieddriver/compenv.ml (diff)
The file was modifieddriver/compenv.mli (diff)
The file was modifieddriver/maindriver.ml (diff)
The file was modifieddriver/compile_common.mli (diff)
Commit 7da23dc454005c035ba9c4ec61ebbd3d4be03fed by gabriel.scherer
Better error messages on invalid recursive module definitions

Partially addresses issue of ambiguous error messages when no safe
module is defined in a recursive module chain. The error messages
should list out the full path of the values that cause the module to
be unsafe.
The file was modifiedtestsuite/tests/basic-modules/recursive_module_evaluation_errors.ml (diff)
The file was modified.depend (diff)
The file was modifiedChanges (diff)
The file was modifiedlambda/translmod.ml (diff)
The file was modifiedlambda/translmod.mli (diff)
Commit cc335579c51ffbc3493c90128f0866c5ebcdda80 by gabriel.scherer
Ensure that all Bigarray memory managed by the GC is tracked by Memprof

Specifically, this adds Gc.Memprof calls to Unix.map_file, and adds some
tests (but does not otherwise change behaviour)
The file was modifiedChanges (diff)
The file was addedtestsuite/tests/statmemprof/bigarray.reference
The file was addedtestsuite/tests/statmemprof/bigarray_stubs.c
The file was addedtestsuite/tests/statmemprof/bigarray.ml
The file was modifiedotherlibs/unix/mmap_ba.c (diff)
Commit 5cc9a523d906307f59d1f00c3b5b1fb87c5d5d92 by gabriel.scherer
Format: place hint white spaces after the break hint

When formatting with margin > 9,

   "@[aaaa@ bbbb@;<∞ 0>cccc@]"

the `a` and `b` blocks fits inside the margin, and thus this text ought
to be formatted as

    aaaa bbbb
    cccc

However, before this commit `Format` rendered this text as

    aaaa
    bbbb
    cccc

because it attributed the size of the horizontal contents of the `@;<∞ 0>`
break hint to the pending break hint `@ `.
This commit fixes this issue by attributing the size of the horizontal
contents of a break hint to the break hints itself rather than any
pending break hint.
The file was modifiedstdlib/format.ml (diff)
The file was addedtestsuite/tests/lib-format/breaks.ml
The file was modifiedChanges (diff)
The file was modifiedChanges (diff)
Commit 76b1eddd94d7d2fb2ecd9d1225f8315733f39e61 by noreply
Attach infix extension points/attributes on local module/exception/open to structure item instead of enclosing let expression (#14009)

Before this change, infix extension points and/or attributes were attached
to the AST node of the enclosing let expression, ie:

  let module%foo[@bar] M = N in ...

was parsed as

  [%foo (let module M = N in ...)[@bar]]

After this change, this is parsed as:

  let [%%foo module M = N [@@bar]] in ...

Moreover, ext/attrs are now allowed following the "let" itself to attach them
to the enclosing let:

  let%foo[@bar] module M = N in ...

is parsed as

  [%foo (let module M = N in ...)[@bar]]

This is a breaking change.
The file was modifiedparsing/parser.mly (diff)
The file was modifiedparsing/ast_invariants.ml (diff)
The file was modifiedtestsuite/tests/warnings/w60.compilers.reference (diff)
The file was modifiedChanges (diff)
The file was modifiedboot/menhir/parser.ml (diff)
The file was modifiedtestsuite/tests/parsing/shortcut_ext_attr.compilers.reference (diff)
Commit 3bc21edc8e45a4e3919ff5d7f2f484b014af6669 by toastal
manual: fall back immediately to user-agent-defined fonts

These font stacks aren’t well-curated & these defaults subjectively
don’t look good. If the web font fails, to load, this is a better
alternative.
The file was modifiedmanual/src/html_processing/scss/_common.scss (diff)
The file was modifiedChanges (diff)
Commit d3bc22fec04227546633300951b5c8f6b498024f by noreply
Uniformize parsing rules for structure and signature items (#14039)

The file was modifiedboot/menhir/parser.ml (diff)
The file was modifiedparsing/parser.mly (diff)
Commit 5dffcba0bb3b75dea5e505f8caff54b1c3242e3a by pierre.boutillier
Trully share #*_printers machinery between toplevel and debugger
The file was modifiedtoplevel/topcommon.mli (diff)
The file was modifiedtoplevel/topdirs.ml (diff)
The file was modifiedtoplevel/topprinters.mli (diff)
The file was modifieddebugger/printval.ml (diff)
The file was modifieddebugger/loadprinter.ml (diff)
The file was modified.depend (diff)
The file was modifiedtoplevel/toploop.mli (diff)
The file was modifiedtoplevel/topcommon.ml (diff)
The file was modifiedtoplevel/topprinters.ml (diff)
The file was modifieddebugger/printval.mli (diff)
The file was modifiedotherlibs/unix/mmap_ba.c (diff)
The file was modifiedruntime/caml/memprof.h (diff)
The file was modifiedstdlib/gc.ml (diff)
The file was modifiedruntime/memprof.c (diff)
The file was modifiedstdlib/gc.mli (diff)
Commit ef052805f1871d7c54716b493812bef30a9423d5 by david.allsopp
update the memprof bigarray test
The file was modifiedtestsuite/tests/statmemprof/bigarray.ml (diff)
The file was modifiedtestsuite/tests/statmemprof/bigarray.reference (diff)
Commit 27d26c9fdd885db8e1f34889207df3d1aa7db4bf by david.allsopp
Move #13675 to 5.4 Changes
The file was modifiedChanges (diff)
Commit c36da49338c42193da62803f5eb4dbe31f28bf91 by gabriel.scherer
Reimplement generational stack scanning a la OCaml 4

Uses spare bits in return addresses to mark already-scanned stack frames.
Currently works on
- POWER
- RISC-V
- ARM 64-bits in Top Bits Ignore mode (i.e. under Linux but not under macOS)
The file was modifiedruntime/caml/stack.h (diff)
The file was modifiedruntime/fiber.c (diff)
The file was modifiedruntime/minor_gc.c (diff)
The file was modifiedruntime/backtrace_nat.c (diff)
The file was modifiedruntime/caml/roots.h (diff)
Commit 86e2926895af77e2bac57838cd442eb0e842530a by gabriel.scherer
ARM64: explicitly ignore top bits in return addresses

Unless the hardware is in top-bits-ignore mode already.

As a consequence, generational stack scanning is supported on all
ARM64 platforms, incl. Apple Silicon / macOS.

The overhead of the extra masking instruction before every `ret`
instruction is low: 1% to 1.5% code size increase; run-time increase
is lost in the noise.
The file was modifiedasmcomp/arm64/arch.mli (diff)
The file was modifiedruntime/caml/stack.h (diff)
The file was modifiedasmcomp/arm64/arch.ml (diff)
The file was modifiedruntime/arm64.S (diff)
The file was modifiedasmcomp/arm64/emit.mlp (diff)
Commit 413a3bdee7adaf4cbe7fbdb2dfc191477b6a0943 by gabriel.scherer
Better API for generational stack scanning

Introduce the `Saved_return_address_raw` macro, to be used at the only place
where return address marks matter (minor GC root scanning).

The `Saved_return_address` macro transparently masks the mark bit off,
so that existing uses of this macro for backtraces, etc, are unchanged.
The file was modifiedruntime/fiber.c (diff)
The file was modifiedruntime/caml/stack.h (diff)
The file was modifiedruntime/backtrace_nat.c (diff)
Commit de2a82ef52b0b9f26c0d0cefce51b1ffa6de12c4 by gabriel.scherer
Adapt TSAN to generational stack scanning

Co-authored-by: Miod Vallat <miod@tarides.com>
The file was modifiedruntime/tsan.c (diff)
The file was modifiedChanges (diff)
Commit 4b389bce1db889124fa0fe5d94cfab64cefed1a4 by gabriel.scherer
document the invariants around pc marking in tsan.c

Suggested-by: Olivier Nicole <olivier@chnik.fr>
The file was modifiedruntime/tsan.c (diff)
Commit 0728f6af2aae32a97c2a7a1214c25736a26a479b by noreply
manual: move the TeX header of each language extension into the extension-specific .etex file (#14041)

The file was modifiedmanual/src/refman/extensions/firstclassmodules.etex (diff)
The file was modifiedmanual/src/refman/extensions/alerts.etex (diff)
The file was modifiedmanual/src/refman/extensions/labeledtuples.etex (diff)
The file was modifiedmanual/src/refman/exten.etex (diff)
The file was modifiedmanual/src/refman/extensions/bindingops.etex (diff)
The file was modifiedmanual/src/refman/extensions/emptyvariants.etex (diff)
The file was modifiedmanual/src/refman/extensions/extensionnodes.etex (diff)
The file was modifiedmanual/src/refman/extensions/extensionsyntax.etex (diff)
The file was modifiedmanual/src/refman/extensions/gadts.etex (diff)
The file was modifiedmanual/src/refman/extensions/privatetypes.etex (diff)
The file was modifiedmanual/src/refman/extensions/attributes.etex (diff)
The file was modifiedmanual/src/refman/extensions/letrecvalues.etex (diff)
The file was modifiedmanual/src/refman/extensions/locallyabstract.etex (diff)
The file was modifiedmanual/src/refman/extensions/doccomments.etex (diff)
The file was modifiedmanual/src/refman/extensions/moduletypeof.etex (diff)
The file was modifiedmanual/src/refman/extensions/effects.etex (diff)
The file was modifiedmanual/src/refman/extensions/bigarray.etex (diff)
The file was modifiedmanual/src/refman/extensions/extensiblevariants.etex (diff)
The file was modifiedmanual/src/refman/extensions/modulealias.etex (diff)
The file was modifiedmanual/src/refman/extensions/overridingopen.etex (diff)
The file was modifiedmanual/src/refman/extensions/indexops.etex (diff)
The file was modifiedmanual/src/refman/extensions/signaturesubstitution.etex (diff)
The file was modifiedmanual/src/refman/extensions/inlinerecords.etex (diff)
The file was modifiedmanual/src/refman/extensions/generalizedopens.etex (diff)
The file was modifiedmanual/src/refman/extensions/recursivemodules.etex (diff)
The file was modifiedmanual/src/refman/extensions/arrayliterals.etex (diff)
The file was modifiedmanual/src/refman/extensions/generativefunctors.etex (diff)
The file was modifiedChanges (diff)
Commit 517e7bd99e9b379e4523a29bb2eddbfd042498b8 by pierre.boutillier
Use BUILD_PATH_PREFIX_MAP to sanitize debug event paths, do not rewrite shebang

1. bytecomp/emitcode.ml

Sanitize the paths in debug events using
BUILD_PATH_PREFIX_MAP. However if the mapping has no effect, then do
nothing.

2. bytecomp/bytelink.ml
Do not do BUILD_PATH_PREFIX_MAP mapping of the path
supplied by the user with the `-use-runtime` option.
This is used to fill in the shebang part of the
executable, and an abstract path is unlikely to
work there.
The file was modifiedChanges (diff)
The file was modifiedbytecomp/bytelink.ml (diff)
The file was modifiedbytecomp/emitcode.ml (diff)
Commit a1263d64ddfdf5c5e91003e22abc10e3044258be by samuel
Accept native freestanding targets at configure time

Accept `*-none` and `*-elf*` triplets for all the architectures with a
native backend to describe the corresponding freestanding targets;
`none` and `elf*` are the most commonly-used last components in triplets
for freestanding targets
Set `system` to `none` and `os_type` to `None` in such cases
The file was modifiedconfigure (diff)
The file was modifiedconfigure.ac (diff)
Commit 8bc40f9d8dea61824c2c7f4bf773b59ba118c8d7 by samuel
Allow `*-ocaml` as target triplets to build freestanding cross compilers

Allow `ocaml` to be used as the last component of the target triplet in
case we are using a custom toolchain for a freestanding target. The
target triplet is then temporarily rewritten to "<arch>-none" to compute
the canonical target.
This allows to use a `*-*-ocaml-` prefixes (`x86_64-solo5-ocaml-`, for
instance) to create cross-compiler toolchains dedicated to specific
freestanding targets.
The file was modifiedconfigure.ac (diff)
The file was modifiedconfigure (diff)
The file was modifiedChanges (diff)
Commit f93b4ba4d2be167b27fea802e8d3c6ecf837baec by gabriel.scherer
domain_terminate: orphan the shared heap before STW exit

See https://github.com/ocaml/ocaml/issues/13739#issuecomment-2869607732
The file was modifiedruntime/caml/shared_heap.h (diff)
The file was modifiedruntime/domain.c (diff)
The file was modifiedruntime/shared_heap.c (diff)
The file was modifiedChanges (diff)
Commit c6f552107c1b34c63f8049915c9417cb92b366d8 by gabriel.scherer
runtime: caml_finalise_heap should first adopt all orphan pools
The file was modifiedruntime/shared_heap.c (diff)
Commit fdd28b4529609f9b092e0125e20009d99fd4bcdd by gabriel.scherer
review: clarify the invariants in [domain_create], including for the last domain
The file was modifiedruntime/caml/shared_heap.h (diff)
The file was modifiedruntime/domain.c (diff)
The file was modifiedruntime/shared_heap.c (diff)
Commit afbd801a6342476d8cf10b8a4a575fc66e3fe891 by gabriel.scherer
review: clarify the invariants required to free the shared heap
The file was modifiedruntime/domain.c (diff)
The file was modifiedruntime/shared_heap.c (diff)
The file was modifiedruntime/caml/shared_heap.h (diff)
Commit fec0fcd2d77f0ecdf306a6d3b5ec4769210df0c3 by gabriel.scherer
minor Changes fixes

- move 12139 to trunk
- move 13962 to trunk
- move 13781 to trunk
- move 13980 to trunk
- move 13941 to 5.4
- move 13987 to trunk
The file was modifiedChanges (diff)
Commit 561199ec592fe1c9fefe902105002e864de145fe by gabriel.scherer
Changelog: fix ordering for 5.3
The file was modifiedChanges (diff)
Commit 109d09eedc3f72cac6719c2f827ad774c5cce9e9 by gabriel.scherer
Changes: reuse the improved 5.4 entry order from the 5.4 branch
The file was modifiedChanges (diff)
Commit 776e8c147f3853398a7941d52a910489c21c393e by noreply
Unix.kill: On Windows, make process exit code ERROR_PROCESS_ABORTED (#14046)

* Unix.kill: On Windows, make process exit code non-zero

* Changes

* Changes

* Exit with ERROR_PROCESS_ABORTED instead of 137

* Add since comment
The file was modifiedChanges (diff)
The file was modifiedotherlibs/unix/unix.mli (diff)
The file was modifiedotherlibs/unix/createprocess.c (diff)
The file was modifiedotherlibs/unix/unixLabels.mli (diff)
Commit 5268d4003035f0cfdd91d2c43ec8a6b8f804114e by gabriel.scherer
Revert "Merge pull request #14045 from pirbo/bpp-map-1-2"

This reverts commit afa12c6ef4a9014813b2182e40d19afc237c46ca, reversing
changes made to d6ac4a1930ae47ab2c631f7aa2af7dc4bfc3ec1c.
The file was modifiedbytecomp/bytelink.ml (diff)
The file was modifiedbytecomp/emitcode.ml (diff)
Commit 8ff76fd68b14a12701ca857da43eba56b27a0dd4 by gabriel.scherer
re-apply the part of #14045 that disables path rewrites on the shebang
The file was modifiedbytecomp/bytelink.ml (diff)
Commit 64ef2d0ce1eb7d5f09ac6cde1a78f74b62804cc6 by noreply
Special constructor for %sys_argv primitive (#10570)

The file was modifiedlambda/translprim.ml (diff)
The file was modifiedChanges (diff)
Commit 8b1a07c0081cf02a53aa6ad17782761d9ed2f043 by noreply
Debugger: Fallback to looking for module_name.ml in the loadpath when seeking source files (#14063)

The file was modifiedChanges (diff)
The file was modifieddebugger/source.ml (diff)
Commit aeb980bcaff52ab831a8e1e7e40b75857dd84167 by samuel.aime.vivien
Improve handling of packages in typing/gprinttyp.ml to put the name of the constraint on the arrow
The file was modifiedtyping/gprinttyp.ml (diff)
Commit ec88aacdab329e70418287b425eb1dd710cc4973 by noreply
Add Option.blend (#13995)

The file was modifiedstdlib/option.mli (diff)
The file was modifiedChanges (diff)
The file was modifiedstdlib/option.ml (diff)
Commit 318e988e8ad96dc7475d5638e35c61e450fab687 by Florian Angeletti
error message: point all label mismatches
The file was modifiedtestsuite/tests/typing-labeled-tuples/labeled_tuple_patterns.ml (diff)
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtyping/errortrace.mli (diff)
The file was modifiedtyping/errortrace.ml (diff)
The file was modifiedtestsuite/tests/typing-labeled-tuples/labeled_tuples_and_constructors.ml (diff)
The file was modifiedtestsuite/tests/typing-labeled-tuples/labeled_tuples.ml (diff)
The file was modifiedtyping/errortrace_report.ml (diff)
Commit a2ff76a67ff6e00068d5d9cb0bd5102308be4d88 by thevoodoos
Add a test showing spurious unused warnign in fonctor argument signatures.

The bug was most certainly introduced in https://github.com/ocaml/ocaml/pull/13308

Illustrates issue https://github.com/ocaml/ocaml/issues/13955

Co-authored-by: Florian Angeletti <florian.angeletti@inria.fr>
The file was modifiedtestsuite/tests/warnings/w32.ml (diff)
The file was modifiedtestsuite/tests/warnings/w32.compilers.reference (diff)
Commit e2ad83342dbcbfb1846aba637bf3ca7d32d30d56 by thevoodoos
Mark both in [modtypes_with_shape]

Fixes ocaml/ocaml#13955

Co-authored-by: Florian Angeletti <florian.angeletti@inria.fr>
The file was modifiedtyping/includemod.mli (diff)
The file was modifiedtyping/typemod.ml (diff)
The file was modifiedtyping/includemod.ml (diff)
The file was modifiedtestsuite/tests/warnings/w32.compilers.reference (diff)
The file was modifiedtestsuite/tests/warnings/w32.ml (diff)
Commit 2d8bb555e2cf34a05b4a9ffbd5a1d2ef2e9d2329 by thevoodoos
Reduce test noise by disabling warning 60
The file was modifiedtestsuite/tests/warnings/w32.compilers.reference (diff)
The file was modifiedtestsuite/tests/warnings/w32.ml (diff)
Commit 8f55b4bf03cbc02c4fd59a552677c66bd3aa8450 by thevoodoos
Add changelog entry for #13956
The file was modifiedChanges (diff)
Commit 77b6c42a5a23ba64c26e0e6bc5168eeb94d3046a by me
dynlink: fix exception name in printer

It looks like the name got changed in #1063. The `Cannot_open_dll` name
in the printer can be misleading because it points to a different type.
The file was modifiedotherlibs/dynlink/dynlink_types.ml (diff)
The file was modifiedChanges (diff)
Commit d946a6df253c1772b8858ea2bff533b74f15471c by me
Add changelog entry
The file was modifiedChanges (diff)
Commit 834f73ec5c7d36ddecb5210d169c348d4b705f29 by damien.doligez
fix one more definition of fib in the manual
The file was modifiedmanual/src/cmds/intf-c.etex (diff)
Commit 8761443617f229d5fe683ed2570aa79c8d64348a by noreply
Add a new type kind `Type_external` (#13712)

* parser.mly
* boot/menhir
* let Ctype.mcomp
1. distinguish string and bytes, and
2. judge locally defined abstract types compatible
   (by disabling non_aliasable).
* farewell non_aliasable
* - make alldepend
- Changes
- add and promote tests
- fix variance
* rephrase "provably equal" comment
The file was modifiedparsing/printast.ml (diff)
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedocamldoc/odoc_type.mli (diff)
The file was modifiedtyping/includecore.mli (diff)
The file was modifiedocamldoc/odoc_dep.ml (diff)
The file was modifiedtyping/env.ml (diff)
The file was modifiedparsing/ast_mapper.ml (diff)
The file was modifiedocamldoc/odoc_scan.ml (diff)
The file was modifiedtestsuite/tests/typing-extension-constructor/test.ocaml.reference (diff)
The file was modifiedocamldoc/odoc_latex.ml (diff)
The file was modifiedparsing/depend.ml (diff)
The file was modifiedtyping/tast_iterator.ml (diff)
The file was modifiedtyping/typedecl_variance.ml (diff)
The file was modifiedtyping/typedecl_separability.ml (diff)
The file was modifiedocamldoc/odoc_str.ml (diff)
The file was modifiedtyping/subst.ml (diff)
The file was modifiedparsing/parsetree.mli (diff)
The file was modifiedtyping/tast_mapper.ml (diff)
The file was modifiedocamldoc/odoc_texi.ml (diff)
The file was modifiedparsing/pprintast.ml (diff)
The file was modifiedtestsuite/tests/tool-ocamlc-locations/marshalled.compilers.reference (diff)
The file was modifiedboot/menhir/parser.ml (diff)
The file was modifiedtestsuite/tests/typing-objects/Tests.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly.ml (diff)
The file was addedtestsuite/tests/typing-misc/type_external.ml
The file was modifiedocamldoc/odoc_sig.ml (diff)
The file was modifiedocamldoc/odoc_cross.ml (diff)
The file was modifiedtyping/datarepr.ml (diff)
The file was modifiedtyping/typedtree.mli (diff)
The file was modifiedparsing/parser.mly (diff)
The file was modifiedocamldoc/odoc_html.ml (diff)
The file was modifiedtestsuite/tests/typing-safe-linking/a.ml (diff)
The file was modifiedtestsuite/tests/typing-misc/records.ml (diff)
The file was modifiedtyping/untypeast.ml (diff)
The file was modifiedtyping/out_type.ml (diff)
The file was modifiedtyping/parmatch.ml (diff)
The file was modifiedtyping/btype.ml (diff)
The file was modifiedtyping/outcometree.mli (diff)
The file was modifiedtyping/typedtree.ml (diff)
The file was modifiedocamldoc/odoc_info.mli (diff)
The file was modifiedtyping/predef.ml (diff)
The file was modifiedtyping/typedecl.ml (diff)
The file was modifiedocamldoc/odoc_type.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/test.ml (diff)
The file was modifiedtyping/types.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/typing-misc/exp_denom.ml (diff)
The file was modifiedtyping/oprint.ml (diff)
The file was modifiedtoplevel/genprintval.ml (diff)
The file was modifiedocamldoc/odoc_man.ml (diff)
The file was modifiedparsing/ast_iterator.ml (diff)
The file was modifiedtyping/types.mli (diff)
The file was modifiedtyping/printtyped.ml (diff)
The file was modifiedocamldoc/odoc_search.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/or_patterns.ml (diff)
The file was modifiedtyping/includecore.ml (diff)
The file was modifiedtestsuite/tests/parsing/rawidents.ml (diff)
The file was modified.depend (diff)
The file was modifiedtestsuite/tests/tool-toplevel/multi_phrase_line.compilers.reference (diff)
The file was modifiedtyping/typeopt.ml (diff)
Commit 48b9b736ee719a5645de0a30db86710edb87751a by kc
For stores on Apple Silicon, emit `stlr` instead of `dmb ishld; str`.
The file was modifiedasmcomp/arm64/emit.mlp (diff)
Commit 511e95be095aa0d45f0d8f2c29cab6f59a17a948 by Florian Angeletti
error messages: point mismatched univars
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtyping/errortrace.mli (diff)
The file was modifiedtyping/errortrace.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly.ml (diff)
The file was modifiedtyping/errortrace_report.ml (diff)
Commit 5f2b948a56124aa0864e202e0270475fbf97e21c by kc
Introduce Sixtyfour memory chunk to handle unaligned accesses
The file was modifiedasmcomp/power/emit.mlp (diff)
The file was modifiedasmcomp/riscv/emit.mlp (diff)
The file was modifiedasmcomp/cmm_helpers.ml (diff)
The file was modifiedasmcomp/amd64/emit.mlp (diff)
The file was modifiedasmcomp/arm64/emit.mlp (diff)
The file was modifiedasmcomp/thread_sanitizer.ml (diff)
The file was modifiedasmcomp/arm64/selection.ml (diff)
The file was modifiedasmcomp/cmm.mli (diff)
The file was modifiedasmcomp/printcmm.ml (diff)
The file was modifiedasmcomp/s390x/emit.mlp (diff)
The file was modifiedasmcomp/cmm.ml (diff)
Commit 721712624b6e0f148377fb5c444ff425b08d5e29 by noreply
Fix note: the alignment of `_Atomic long long unsigned int` fields changed in GCC 11.1 on i686 (#14035)

* Prevent a GCC 11.1+ note on _Atomic long long int alignment in i686

    runtime/caml/runtime_events.h:217:1: note: the alignment of '_Atomic long long unsigned int' fields changed in GCC 11.1
    217 | };
        | ^

* Use GCC aligned attribute instead of C alignas

The C standard _Alignas / alignas isn't enough to silence the GCC
note, as of GCC 14.
The file was modifiedChanges (diff)
The file was modifiedruntime/caml/runtime_events.h (diff)
Commit 48efc58d67242349af56ae91944e3052c6cbd26b by noreply
Add missing `item-attribute` rule for `let-binding` in documentation of attributes (#14077)

This reflects the grammar in
https://github.com/ocaml/ocaml/blob/8761443617f229d5fe683ed2570aa79c8d64348a/parsing/parser.mly#L2742-L2759
and without this rule, the documentation doesn't account for forms like

```
let foo = bar
[@@bax]
```
The file was modifiedmanual/src/refman/extensions/attributes.etex (diff)
The file was modifiedChanges (diff)
Commit 342a6431356af904dff5d06b940249a9429fc081 by david.allsopp
Switch back to ubuntu-latest
The file was modified.github/workflows/build.yml (diff)
The file was modifiedChanges (diff)
Commit a2e25d6d9aae00fb6762e0c3a890f4ad23b73be6 by kc
Address reviewer comments.
The file was modifiedasmcomp/arm64/emit.mlp (diff)
The file was modifiedChanges (diff)
Commit 5607fc429d6a45bf4802c175c2950a5c8ba3711a by noreply
Catch invalid aliases at merging rather than subtyping (#14066)

* Add tests for introduction of invalid aliases via module constraints

* Catch invalid aliases at module constraints, not at subtyping

* Remove the unreachable "Invalid alias" subtyping error

* changelog
The file was modifiedtestsuite/tests/typing-modules/aliases.ml (diff)
The file was modifiedtyping/includemod.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedtyping/typemod.mli (diff)
The file was modifiedtestsuite/tests/typing-modules/merge_constraint.ml (diff)
The file was modifiedtyping/includemod_errorprinter.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/pr7818.ml (diff)
The file was modifiedtyping/includemod.mli (diff)
The file was modifiedtyping/typemod.ml (diff)
Commit 6b82c95cf44071e86c3cbba2757520d0c227f339 by david.allsopp
Generalise Compmisc.init_path

Previously, Compmisc.init_path initialised the load path using
Config.standard_library, but this can now be altered via an optional
?standard_library argument. This is used internally when testing
compiler installations in order to allow Ccomp.call_linker to be used.
The file was modifieddriver/compmisc.mli (diff)
The file was modifieddriver/compmisc.ml (diff)
Commit 79071c4ddd659a33b917101a6d451e888063e8ef by david.allsopp
Add Dll.search_path

Provides a copy of the DLL search path for the test harness.
The file was modifiedbytecomp/dll.mli (diff)
The file was modifiedbytecomp/dll.ml (diff)
Commit b48ba73a22dbf499133dcb1dbd8464be41f5e8a8 by david.allsopp
Add Misc.Stdlib.String.to_utf_8_seq
The file was modifiedutils/misc.ml (diff)
The file was modifiedutils/misc.mli (diff)
Commit 88d803f5dedffd883d7addee4a0261a2feaa089e by david.allsopp
Expose Bytelink.read_runtime_launch_info
The file was modifiedbytecomp/bytelink.mli (diff)
Commit 12ea618e22add7047ac3e09d2fa5a07ea42d52d9 by Florian Angeletti
Changes bookkeeping: missing reviewer
The file was modifiedChanges (diff)
Commit f1c31807fd9d56880bef5e64c8b2aec175dcbc10 by n.oje.bar
Add Domain.running_domain_count
The file was modifiedstdlib/domain.ml (diff)
The file was modifiedstdlib/domain.mli (diff)
The file was modifiedruntime/domain.c (diff)
The file was modifiedChanges (diff)
The file was modifiedChanges (diff)
Commit a1d28e1cc3da0e17d3bd64f14baf9d716d94b351 by david.allsopp
Add Config.{c_compiler_vendor,shebangscripts}

Expose the ocaml_cc_vendor and shebangscripts variables computed in
aclocal.m4
The file was modifiedutils/config.generated.ml.in (diff)
The file was modifiedconfigure (diff)
The file was modifiedaclocal.m4 (diff)
The file was modifiedconfigure.ac (diff)
The file was modifiedutils/config.mli (diff)
The file was modifiedutils/config.fixed.ml (diff)
Commit a28e47bd42ad6a1f8ca3c26345aa27e7809bb66a by david.allsopp
Add a test for the compiler "in-prefix"
The file was addedtestsuite/tools/cmdline.mli
The file was modifiedconfigure.ac (diff)
The file was addedtestsuite/tools/testRelocation.ml
The file was addedtestsuite/tools/testDynlink.ml
The file was addedtestsuite/tools/test_ld_conf.ml
The file was modified.depend (diff)
The file was addedtestsuite/tools/testLinkModes.ml
The file was modified.gitignore (diff)
The file was addedtestsuite/tools/harness.mli
The file was addedtestsuite/tools/testBytecodeBinaries.ml
The file was addedtestsuite/tools/testToplevel.mli
The file was addedtestsuite/tools/cmdline.ml
The file was modifiedMakefile.build_config.in (diff)
The file was addedtestsuite/tools/toolchain.mli
The file was modifiedMakefile (diff)
The file was addedtestsuite/tools/test_ld_conf.mli
The file was addedtestsuite/tools/test_in_prefix.ml
The file was addedtestsuite/tools/main_in_c.c
The file was addedtestsuite/in_prefix/Makefile.test
The file was modifiedconfigure (diff)
The file was addedtestsuite/tools/environment.mli
The file was addedtestsuite/tools/test_in_prefix.mli
The file was addedtestsuite/tools/testDynlink.mli
The file was addedtestsuite/tools/environment.ml
The file was addedtestsuite/tools/testBytecodeBinaries.mli
The file was addedtestsuite/tools/testLinkModes.mli
The file was addedtestsuite/tools/testToplevel.ml
The file was addedtestsuite/tools/testRelocation.mli
The file was addedtestsuite/tools/toolchain.ml
The file was addedtestsuite/in_prefix/README.md
The file was addedtestsuite/tools/harness.ml
Commit 9585ef98182f0159a6ceb00e0824ff11cf3237c0 by david.allsopp
Plumb the in-prefix tests into CI
The file was modified.github/workflows/build-msvc.yml (diff)
The file was modified.github/workflows/build.yml (diff)
The file was modifiedtools/ci/actions/runner.sh (diff)
The file was modifiedtools/ci/inria/main (diff)
The file was modifiedtools/ci/appveyor/appveyor_build.sh (diff)
Commit 89e4b157b3487085beaeca29aea78875b18c64fe by gabriel.scherer
Changes: 14074 was backported to 5.4
The file was modifiedChanges (diff)
Commit fe89cb9ace6789a09dde59153185929442db658c by sdolan
Avoid an error when a channel is flushed during close
The file was addedtestsuite/tests/lib-channels/close_during_flush.ml
The file was modifiedruntime/io.c (diff)
The file was modifiedChanges (diff)
The file was addedtestsuite/tests/lib-channels/close_during_flush.reference
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/lib-channels/close_during_flush.ml (diff)
The file was modifiedruntime/io.c (diff)
Commit d9068d1a24b33b4837cdb7ba3d62aeebe26c3bc8 by olivier
Fix flakiness of TSan tests using flushes and synchronization

Co-authored-by: Fabrice Buoro <fabbing@free.fr>

All logging output is moved to stderr, the same output where TSan dumps
its race reports. This is to help understanding what happens if the
output of this test ever changes.

Additionally, a second synchronizing barrier is added to some tests to
remove flakiness.

The existing barrier ensured that

1. there was a data race, by delaying the synchronizing `Domain.join`
   until after both domains had accessed the shared mutable field; and
2. that these accesses always happened in the same order (write first or
   read first).

The role of the new barrier is to enforce always the same order between
the TSan report and logging lines such as `"Leaving f"`. Not enforcing
that order was the source of flakiness in these tests.
The file was modifiedtestsuite/tests/tsan/exn_in_callback.reference (diff)
The file was modifiedtestsuite/tests/tsan/exn_from_c.ml (diff)
The file was modifiedtestsuite/tests/tsan/exn_in_callback.ml (diff)
The file was modifiedtestsuite/tests/tsan/exn_reraise.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/tsan/exn_reraise.reference (diff)
The file was modifiedtestsuite/tests/tsan/exn_from_c.reference (diff)
Commit e745631c138b7847fb7262dbeb579c25618f4f58 by timmcgil
Skip native-debugger tests.
The file was modifiedtools/ci/inria/sanitizers/script (diff)
Commit 6837826754f012cf57e8c74f882061ceadd8c9f3 by n.oje.bar
Use caml_unix_error instead of errno+caml_uerror
The file was modifiedotherlibs/unix/link_win32.c (diff)
The file was modifiedotherlibs/unix/readlink_win32.c (diff)
The file was modifiedotherlibs/unix/lockf_win32.c (diff)
Commit 072a905c85fbfcc1c6141d420ee4b4c3214790a7 by n.oje.bar
Symmetrize caml_sys_rename and caml_unix_rename

Make the libunix implementation common for Windows and POSIX.

The Windows implementation was using a simple call to MoveFileEx, but
rename_os aliases to caml_win32_rename, which is a more portable and
POSIX-like reimplementation, with fixes from #12320 and before.
The file was removedotherlibs/unix/rename_win32.c
The file was removedotherlibs/unix/rename_unix.c
The file was modifiedotherlibs/unix/Makefile (diff)
The file was addedotherlibs/unix/rename.c
The file was modifiedruntime/sys.c (diff)
The file was modifiedruntime/caml/osdeps.h (diff)
Commit 37ca0324a4478fc639772bc6ec4ebbfda1265e7f by n.oje.bar
Symmetrize caml_sys_chdir and caml_unix_chdir
The file was modifiedotherlibs/unix/chdir.c (diff)
The file was modifiedruntime/sys.c (diff)
Commit ae867fc85ec0a77f29f57c9ef31dc5c05466073b by n.oje.bar
Symmetrize caml_sys_close and caml_unix_close

`caml_sys_close` was missing an exception raise in case of an error,
needed in `Filename.temp_file`.
The file was modifiedruntime/sys.c (diff)
The file was modifiedotherlibs/unix/close_unix.c (diff)
Commit 055b3b16dbf74798829a68c8feab4ade081d40bb by n.oje.bar
Symmetrize caml_sys_system_command and caml_unix_system

- caml_unix_system on Windows would raise ENOENT if the command string
  wasn't C safe. Prefer raising EINVAL as caml_sys_system_command.
- caml_sys_system_command did not call _flushall on Windows as
  caml_unix_system did.
The file was modifiedotherlibs/unix/system.c (diff)
The file was modifiedruntime/sys.c (diff)
The file was modifiedChanges (diff)
Commit 7ac77a4b698a4ac978998cef7a25ed5979b5c231 by noreply
stdlib: Option.{for_all, exists} (#13920)

* Option.{for_all, exists}

* Changes
The file was modifiedChanges (diff)
The file was modifiedstdlib/option.ml (diff)
The file was modifiedstdlib/option.mli (diff)
Commit a2e5fef1ee6d9741418749d4b4d3597129d17ae1 by n.oje.bar
[refactor] dynarray variable naming, consistently use [f] for function arguments
The file was modifiedstdlib/dynarray.ml (diff)
Commit d82258d173ed8c2c3e5594cb799f083f96e8f694 by n.oje.bar
Dynarray.rev_iter, rev_iteri
The file was modifiedtestsuite/tests/lib-dynarray/test.ml (diff)
The file was modifiedstdlib/dynarray.ml (diff)
The file was modifiedstdlib/dynarray.mli (diff)
The file was modifiedChanges (diff)
Commit 38897ff547b2f115d61c21a0a22c57d859a049b2 by noreply
Rename Domain.running_domain_count => Domain.count (#14096)

* Rename Domain.{running_domain_count => count}

* Doc

* Changes
The file was modifiedChanges (diff)
The file was modifiedstdlib/domain.mli (diff)
The file was modifiedruntime/domain.c (diff)
The file was modifiedstdlib/domain.ml (diff)
Commit 19040f8f6f64f82bcb2036acd15de4271e591747 by noreply
ocamldoc: no paragraph in module table (#14098)

Fix #13896: do not wrap short descriptions of modules in a <p> tag when inside a table.
The file was modifiedtestsuite/tests/tool-ocamldoc/Paragraph.html.reference (diff)
The file was modifiedocamldoc/odoc_html.mli (diff)
The file was modifiedChanges (diff)
The file was modifiedocamldoc/odoc_html.ml (diff)
Commit 53b230526f438b58df16322274cabdda53738e13 by gabriel.scherer
CI: attempt to silence a MSVC warning

Reviewd-by: Antonin Décimo <antonin@tarides.com>
The file was modifiedtestsuite/tests/statmemprof/bigarray_stubs.c (diff)
The file was modifiedtestsuite/tests/lib-bigarray-2/bigarrfstub.c (diff)
The file was modifiedtestsuite/tests/lib-bigarray-2/bigarrcstub.c (diff)
Commit 5307849b3b4d876cd23e32b3585176b782871579 by Florian Angeletti
Changes bookkeeping: fix 13896 entry
The file was modifiedChanges (diff)
Commit 3c357eac444cab2fb06723b5312d77ebd2b300be by Florian Angeletti
toplevel: test with nongeneric printer
The file was modifiedtestsuite/tests/tool-toplevel/install_printer.ml (diff)
The file was modifiedtestsuite/tests/tool-toplevel/install_printer.compilers.reference (diff)
Commit 53ba0c848b9e8baf50654055a5019ea463a2723a by Florian Angeletti
toplevel: printers must have a generic type

This commit adds an explicit test for checking that the type scheme of
a value printers does not contain any non-generic type variables before
being used to print a value.
The file was modifiedtyping/ctype.mli (diff)
The file was modifiedtoplevel/genprintval.ml (diff)
The file was modifiedtyping/ctype.ml (diff)
Commit a9a97df9a5da1a5fe49a56872b675f90c48ac7a3 by Florian Angeletti
refactor Ctype: remove nongen_inst argument
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtyping/ctype.mli (diff)
The file was modifiedtyping/includecore.ml (diff)
The file was modifiedtoplevel/genprintval.ml (diff)
The file was modifiedChanges (diff)
The file was modified.github/workflows/build-msvc.yml (diff)
The file was modified.github/workflows/build.yml (diff)
Commit 3aa9ebca5a3895a0f18840918999572011b732ab by david.allsopp
Temporarily disable -Wcast-function-type-mismatch

clang-cl is triggering this warning when it possibly shouldn't be -
temporarily disable it.
The file was modifiedconfigure.ac (diff)
The file was modifiedconfigure (diff)
Commit c8745658446e06bd79e0a68e181faeb186c8f62b by david.allsopp
Temporarily disable warning C5387 on MSVC
The file was modifiedtestsuite/tests/lib-bigarray-2/bigarrcstub.c (diff)
The file was modifiedtestsuite/tests/statmemprof/bigarray_stubs.c (diff)
The file was modifiedtestsuite/tests/lib-bigarray-2/bigarrfstub.c (diff)
Commit ee44effce6729d3543e20829a09b5d417bd90d43 by Nick.Barnes
Update memprof after leaving the barrier at the end of minor GC, nor before.
The file was modifiedruntime/minor_gc.c (diff)
The file was modifiedChanges (diff)
Commit 501875bc10151a00ca880daee158a4d1c8e7781c by antonin
Use C99 (u)int64_t instead of MSVC __int64 extension
The file was modifiedotherlibs/unix/truncate_win32.c (diff)
The file was modifiedotherlibs/unix/stat_win32.c (diff)
The file was modifiedruntime/caml/io.h (diff)
The file was modifiedruntime/caml/config.h (diff)
The file was modifiedotherlibs/unix/mmap_win32.c (diff)
The file was modifiedtestsuite/tests/lib-unix/win-stat/fakeclock.c (diff)
Commit 9893cdd32e41d8347ccfcbd7dd60436913a8709f by antonin
Use time_t instead of MSVC __time64_t

The documentation reads:

> `time` is a wrapper for `_time64` and `time_t` is, by default,
> equivalent to `__time64_t`. If you need to force the compiler to
> interpret `time_t` as the old 32-bit `time_t`, you can define
> `_USE_32BIT_TIME_T`.

https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/time-time32-time64?view=msvc-170
The file was modifiedotherlibs/unix/stat_win32.c (diff)
Commit 7c93d2483b5fb1a3dab79c5c3fb3d34954aa3c4b by antonin
Use C99 fixed-width integers in bigarray
The file was modifiedruntime/caml/bigarray.h (diff)
The file was modifiedruntime/bigarray.c (diff)
Commit a4a0259ce6b97dd7467d0be4e31f9d5bf679119d by antonin
Fully use C99 stdint.h fixed-width integers
The file was modifiedruntime/caml/config.h (diff)
Commit c2255f1439b4e1751ccc6d300a50aaddae467b5c by antonin
Define intnat/uintnat with C99 intptr_t/uintptr_t
The file was modifiedruntime/caml/config.h (diff)
Commit cb7791b5804e0904165bd14a563b6007a09b2410 by antonin
Use C99 inttypes.h fixed-width format macros
The file was modifiedruntime/caml/config.h (diff)
The file was modifiedruntime/clambda_checks.c (diff)
Commit 295dd45852688c7c8b5df5e974c460588cdd9696 by antonin
Define and use CAML_PRI.NAT and CAML_PRI.SZT

For consistency with C99 inttypes.h format specifiers.
The file was modifiedtestsuite/tests/asmgen/mainimmed.c (diff)
The file was modifiedruntime/shared_heap.c (diff)
The file was modifiedruntime/major_gc.c (diff)
The file was modifiedtestsuite/tests/asmgen/mainarith.c (diff)
The file was modifiedruntime/instrtrace.c (diff)
The file was modifiedruntime/caml/config.h (diff)
The file was modifiedruntime/domain.c (diff)
The file was modifiedruntime/parsing.c (diff)
The file was modifiedruntime/printexc.c (diff)
The file was modifiedruntime/sys.c (diff)
The file was modifiedruntime/fiber.c (diff)
The file was modifiedruntime/gc_ctrl.c (diff)
The file was modifiedruntime/meta.c (diff)
The file was modifiedruntime/interp.c (diff)
The file was modifiedruntime/minor_gc.c (diff)
The file was modifiedtestsuite/tests/lf_skiplist/stubs.c (diff)
The file was modifiedruntime/platform.c (diff)
Commit be56900a97e120647e62bdac1dfb86e4b4e582f8 by antonin
s/alloced/allocated/g
The file was modifiedruntime/shared_heap.c (diff)
The file was modifiedChanges (diff)
Commit 62b7f45d3a7f7a8ff2570e5e40775459503a337e by noreply
Fix a possible hang in Pprintast (#14105)

This impacted Merlin.

See https://github.com/ocaml/merlin/pull/1944
The file was modifiedparsing/pprintast.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/compiler-libs/test_untypeast.ml (diff)
Commit 7928a26a5e0ddcdfcfafab260f2702487d125961 by Florian Angeletti
toplevel: fix a typo in directive error messages
The file was modifiedtoplevel/topcommon.ml (diff)
The file was modifiedChanges (diff)
Commit 4b7b06d940e89c14ba12ba935134c8202bf8c0be by sadiq
use No_scan_tag and NOT_MARKABLE to indicate free block
The file was modifiedruntime/shared_heap.c (diff)
Commit c1a457ffe187cae4debca7a2b2f9db5e66be8461 by sadiq
change shared pools heap representation to indicate contiguous free ranges
update sweep and shared heap allocation to use this
The file was modifiedruntime/major_gc.c (diff)
The file was modifiedruntime/shared_heap.c (diff)
The file was modifiedruntime/shared_heap.c (diff)
The file was modifiedChanges (diff)
Commit 85436a95e692b0c58f7bd9d31ebdffcc1caaad65 by sadiq
actually prefetch a page ahead
The file was modifiedruntime/shared_heap.c (diff)
Commit 066cf23736bd006590c6262bb7ef3467e69691a0 by sadiq
restore split asserts
The file was modifiedruntime/major_gc.c (diff)
The file was modifiedruntime/shared_heap.c (diff)
Commit 395cc3311c1fe6f7f0775264054baa5a5aba3dc4 by sadiq
clarify comment in verify_pool
The file was modifiedruntime/shared_heap.c (diff)
Commit 868adceb0630e6e94a941d4cd85407a1bf378f99 by sadiq
fix bug in compaction
The file was modifiedruntime/shared_heap.c (diff)
Commit 32fec020f8f47ce737a7def9f3dd07daa076488c by sadiq
write Debug_free_major in to newly initialised pools
The file was modifiedruntime/shared_heap.c (diff)
Commit aa2a6e991cc6174cb3512fe45ffc17d78c51d1c4 by sadiq
fix bug in pool_finalise
The file was modifiedruntime/shared_heap.c (diff)
The file was modifiedruntime/shared_heap.c (diff)
Commit 40ac8974421510aba2aeff9550b4e319f5ebf211 by sadiq
Update runtime/shared_heap.c

Co-authored-by: Damien Doligez <damien.doligez@gmail.com>
The file was modifiedruntime/shared_heap.c (diff)
Commit 4f6ad7ab4db475edc62a7456b0db4e84c335fdd3 by sadiq
Update runtime/shared_heap.c

Co-authored-by: Damien Doligez <damien.doligez@gmail.com>
The file was modifiedruntime/shared_heap.c (diff)
Commit 0beada7047b1ba547a5cafdd2f8a82f5a2486fef by sadiq
restore atomic header read
The file was modifiedruntime/shared_heap.c (diff)
Commit a968da8280c5a684663069ebca3763f219b00b5b by sadiq
make note about GC pacing logic
The file was modifiedruntime/shared_heap.c (diff)
Commit 7ee99a65f3ae60b5edb430257fd707e4418ce23d by sadiq
Update runtime/shared_heap.c

Co-authored-by: Damien Doligez <damien.doligez@gmail.com>
The file was modifiedruntime/shared_heap.c (diff)
The file was modifiedruntime/shared_heap.c (diff)
Commit 8954ebc5bc8931dc7d571eefbbb2c4990a15d2f6 by sadiq
always update the pointer in the last free block
The file was modifiedruntime/shared_heap.c (diff)
Commit 9ee312af447a65295414381edc08c6c4dba56815 by sadiq
revert all_used annotation
The file was modifiedruntime/shared_heap.c (diff)
Commit 2accc32526d778906d4c372ae270fb0cabea6de4 by samuel.aime.vivien
Replaced normalize_package_path by Env.normalize_modtype_path
The file was modifiedtyping/ctype.ml (diff)
Commit 7020994917be1c0b1e80abd9bfd94492227b0429 by david.allsopp
Add -Wno-cast-function-type-mismatch more clangily
The file was modifiedconfigure.ac (diff)
The file was modifiedconfigure (diff)
Commit 8fe6f7addd78da00cf979f415f6b13f548e1ff2a by david.allsopp
Typo in stdlib/Makefile

Affects forced recompilation of runtime-launch-info
The file was modifiedstdlib/Makefile (diff)
Commit fc3294370566b4a0f749addd6b9be7cd2b19a7e0 by david.allsopp
Reduce tmpheader.exe to 4-5KiB on Windows

stdlib/headernt.c was adapted in OCaml 3.00 to reduce its size by
avoiding the use of the CRT and using Windows API functions directly
(this is a well-studied trick on Windows, principally as a puzzle for
producing tiny binaries).

This got "regressed" slightly in OCaml 4.06, in the complex introduction
of wide character support for Windows, as the mingw-w64 incantation
required was unclear, so the entry point was changed to wmain, and the
size of the header increased.

By switching from wcslen (a CRT function) to lstrlen (a Win32 API
function), headernt.c again only requires kernel32.dll.

Additional flags are added for both ld (mingw-w64) and link (MSVC) to
squeeze every last byte out of tmpheader.exe. The MSVC version of the
header is once again no longer passed through strip, as this was found
to be corrupting the executable (and had never been reducing its size
anyway).
The file was modifiedstdlib/Makefile (diff)
The file was modifiedstdlib/headernt.c (diff)
Commit 776b993861f3b46bfb3d847e4abcd2fed9041321 by david.allsopp
Stop using Caml_inline and CAMLnoret in headernt.c

Modern C compilers are sufficiently intelligent not to need the inlining
hints!

Inline the definition from caml/misc.h for CAMLnoret.

Co-authored-by: Antonin Décimo <antonin@tarides.com>
The file was modifiedstdlib/headernt.c (diff)
Commit 558c630b234bf6c9da5180cdda6945b91ff6c937 by david.allsopp
Remove unnecessary guards around unistd.h

Already updated to remove the actual test in s.h, since XPG1 (1985)
required it and it is therefore part of the Single Unix
Specification (1992), but the _WIN32 guard and the loading of s.h are
unnecessary.
The file was modifiedstdlib/header.c (diff)
Commit 8769fb2ec80c96fa39b0da4abc504d8cfd91f7f5 by david.allsopp
Use PATH_MAX instead of MAXPATHLEN
The file was modifiedstdlib/header.c (diff)
Commit a9be17f2dfd1c38c2dfa1921e363a501090a04e3 by david.allsopp
Assume S_ISREG and SEEK_END

Defined in sys/stat.h and unistd.h respectively by the Single Unix
Specification.
The file was modifiedstdlib/header.c (diff)
Commit 832ccfbc3fb9233262c7f6c1824c0ac508cd802c by david.allsopp
Move O_BINARY definition to "header" section

O_BINARY is added for maximum Cygwin compatibility, but it's not a Posix
flag.
The file was modifiedstdlib/header.c (diff)
Commit 619036af5a1280a347441f586ac8de617b83c977 by david.allsopp
Make caml/exec.h independent

Have exec.h include <stdint.h> itself. The bytecode executable header
now only depends on exec.h.
The file was modifiedstdlib/headernt.c (diff)
The file was modifiedstdlib/header.c (diff)
The file was modifiedruntime/caml/exec.h.in (diff)
Commit a42453ab2d8797c1148633cedd48b9a78f3cf6fd by david.allsopp
Re-order some header functions (no-op)
The file was modifiedstdlib/header.c (diff)
The file was modifiedstdlib/headernt.c (diff)
Commit b07835920b4af4d8800c3bcbc18ffbb7f797f2fe by david.allsopp
Share error path in headernt.c
The file was modifiedstdlib/headernt.c (diff)
Commit 1aa27b63c7ed125fd2bda1e6e09d73eef838cb08 by david.allsopp
Unify implementation of read_size

Modernisations applied in headernt.c but not applied to header.c - use
uint32_t rather than unsigned long
The file was modifiedstdlib/headernt.c (diff)
The file was modifiedstdlib/header.c (diff)
Commit 9dbf642346df24f14d8cd6eaa192b9e84c1c78f7 by david.allsopp
headernt.c: inline run_runtime into main
The file was modifiedstdlib/headernt.c (diff)
Commit 2f8e23f2443f90b60b7b2d49fdd90a7dad6e7f07 by david.allsopp
Check for errors from lseek in header.c
The file was modifiedstdlib/header.c (diff)
Commit dc12795c9945a2599e86ad9da2da846a0890fbc8 by david.allsopp
Refactor error display code
The file was modifiedstdlib/headernt.c (diff)
The file was modifiedstdlib/header.c (diff)
Commit c25d75cf42a21a8a0a385d6e7b94da4c2c545d2e by david.allsopp
header.c: close bytecode image before exec

Leaking fd
The file was modifiedstdlib/header.c (diff)
Commit 9996acb4b0551f9758b9ac939aa4f74666a4ea3a by david.allsopp
Use execvp in header.c (as in headernt.c)

Brings the behaviour of the two headers into line with each other - if
RNTM is ocamlrun on Unix, ocamlrun will now be sought in PATH.
The file was modifiedstdlib/header.c (diff)
Commit 8fb3bc35de96ddd1f22b7f58c7276046688510d8 by david.allsopp
headernt: make read_runtime_path more CRTish
The file was modifiedstdlib/headernt.c (diff)
Commit 725c900b81d9e8feb787ab481f4958d5337e179e by david.allsopp
Missing error case in headernt.c
The file was modifiedstdlib/headernt.c (diff)
Commit 9b35c8d9069a861f81d2817adbc48cb95a741f9c by david.allsopp
Unify the common parts of header.c and headernt.c
The file was modifiedstdlib/header.c (diff)
The file was modifiedstdlib/headernt.c (diff)
Commit 93b7ff9a158300c306c680a47930726b065467c0 by david.allsopp
Merge stdlib/header{,nt}.c
The file was modifiedtestsuite/in_prefix/README.md (diff)
The file was modifiedtestsuite/tools/testLinkModes.ml (diff)
The file was removedstdlib/headernt.c
The file was modifiedstdlib/header.c (diff)
The file was modifiedstdlib/Makefile (diff)
Commit bb465f5e7065330098e6b2c17cb775350840ac37 by Florian Angeletti
error messages: typo, missing inline code
The file was modifiedtestsuite/tests/typing-misc/apply_non_function.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedChanges (diff)
Commit 1f472554ef302780065885e0b7f221c867c8be11 by noreply
Fix use of time_t on i686 mingw-w64 (#14114)

mingw-w64 32-bit requires an extra define to adopt the "modern" Visual
Studio 2005 switch to 64-bit time.
The file was modifiedChanges (diff)
The file was modifiedconfigure (diff)
The file was modifiedconfigure.ac (diff)
Commit d7af01eec1f8ff8cdd3b0b375f6ba9a0dc55f8e4 by noreply
Increase the amount of data written to a pipe in a test (#14116)

On some OSes, you need to write more than 1MB of data to a pipe
before writes block, and read more than 64k to unblock them.
The file was modifiedtestsuite/tests/lib-channels/close_during_flush.ml (diff)
Commit 9936c99820f4d4aa53a7eb3ee1e99bfdd4f0d340 by rtjoa
Add regression test
The file was modifiedtestsuite/tests/typing-modules/merge_constraint.ml (diff)
Commit fd56f1f4c7f850a25b3606e588b2579b9ec234a0 by rtjoa
Fix non-destructive `with type` with type constraints
The file was modifiedtestsuite/tests/typing-modules/merge_constraint.ml (diff)
The file was modifiedtyping/typemod.ml (diff)
Commit 2204b3dd03ebd6612be9fc1e4bc4b2c0623d32e0 by rtjoa
Add with type constraint testing
The file was modifiedtestsuite/tests/typing-modules/merge_constraint.ml (diff)
The file was modifiedChanges (diff)
Commit 01ebbbd3d1b99cacf368345a8989136f8b38f0b2 by noreply
Add {Set,Map}.S.is_singleton (#14118)

The file was modifiedstdlib/templates/set.template.mli (diff)
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/typing-modules/pr7818.ml (diff)
The file was modifiedtestsuite/tests/typing-short-paths/short-paths.compilers.reference (diff)
The file was modifiedtestsuite/tests/typing-implicit_unpack/implicit_unpack.ml (diff)
The file was modifiedstdlib/templates/map.template.mli (diff)
The file was modifiedstdlib/map.ml (diff)
The file was modifiedtestsuite/tests/generalized-open/accepted_expect.ml (diff)
The file was modifiedstdlib/set.mli (diff)
The file was modifiedtestsuite/tests/shapes/comp_units.ml (diff)
The file was modifiedstdlib/moreLabels.mli (diff)
The file was modifiedstdlib/set.ml (diff)
The file was modifiedstdlib/map.mli (diff)
The file was modifiedtestsuite/tests/typing-modules/aliases.ml (diff)
Commit 6b59d66182bc54d24bef3ec6b901cb512fdea6b6 by noreply
Make List.{take,drop} total (#14124)

The file was modifiedstdlib/list.ml (diff)
The file was modifiedstdlib/list.mli (diff)
The file was modifiedstdlib/listLabels.mli (diff)
The file was modifiedtestsuite/tests/lib-list/test.ml (diff)
The file was modifiedChanges (diff)
Commit c061359af8c249a4a5b3242cdc5524004492749c by noreply
document that char compare uses ASCII order (#14090)

Co-authored-by: Nicolás Ojeda Bär <n.oje.bar@gmail.com>
The file was modifiedstdlib/char.mli (diff)
Commit 4a034852ad619b353f2fade2822f875e583545b6 by clement.blaudeau
Add the approx flag to merging of module constraints

- While module types constraints were using the [approx] flag to disable
equivalence checking when merging, module constraints were only checked for
cyclicity. Now, both use the same logic: the constraints is approximated and
then merged in approx mode, where no equivalence check is done. It computes a
better skeleton for the approximated signature, as the destructive substitutions
are correctly removing the fields.

- Add tests borrowed (and adapted) from
https://github.com/oxcaml/oxcaml/pull/4121

- This commit changes the [lookup_module_path ~load:false] for [lookup_module],
where the load flag is not set to false. I should not have much impact for
well-typed programs, as the loading would happen after the approximation phase
anyway.
The file was addedtestsuite/tests/typing-recmod/regression_destructive_subst.ml
The file was modifiedtyping/typemod.ml (diff)
Commit 971d0b59c732bd6778b79f10b3f62e5e0ebe4d67 by clement.blaudeau
Add a [merge_type_approx] for approximation of type constraints

This commit introduces a new function to specifically deal with merging type
constraints in approximation mode:
- destructive constraints actually remove the constrained field, to prevent
incorrect approximation (specifically, incorrect shadowing)
- non-destructive constraints are treated as an identity patch, where the
constrained field is replaced by itself. This allows us to reuse the normal
merging infrastructure and fail early in case of ill-formed constraints where
the field is not present (other forms of ill-formedness are caught later)

The [post_process] function is made aware of the approximation flag to disable
wellformedness checks
The file was modifiedtyping/typemod.ml (diff)
Commit 9f6407a56d0c5c837b7b502107b937b54554981b by clement.blaudeau
Add tests for module and type constraints during approximation
The file was modifiedtestsuite/tests/typing-modules/merge_constraint.ml (diff)
The file was modifiedChanges (diff)
Commit 74d169331120a74c9e2a76eb80d7c9a42a293201 by clement.blaudeau
Add another test for destructive type constraints approximation
The file was modifiedtestsuite/tests/typing-modules/merge_constraint.ml (diff)
Commit 3114cddc8b4bdd717aa98f0fd0a6a4fc7fdb09b8 by clement.blaudeau
Address review comments on #14100

- Factor out computation of the [destructive] flag for constraints between
merging in normal and approximation modes

- Fix typos in test descriptions

- Add test that ghost items are not affected by constraints

- Update Changelog
The file was modifiedtyping/typemod.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/typing-modules/merge_constraint.ml (diff)
The file was modifiedChanges (diff)
Commit f9025a6d8644b69ccef173847a3d662210a023c4 by clement.blaudeau
Refactor post_process of signature merging

The [post_process] function for signature merging was taking two linked
arguments: a [~destructive] flag and a [replace] function to apply only if the
flag was set to [true]. This commit combines the two into a single optional
function [replace] and clarifies some documentation comments.
The file was modifiedtyping/typemod.ml (diff)
Commit 706823f870d9efa6038e1d182553ae20345d7448 by clement.blaudeau
Update comment and Changelog
The file was modifiedChanges (diff)
The file was modifiedtyping/typemod.ml (diff)
Commit b7a020fb50e677e793ddf50c74bf8e98611dbfae by clement.blaudeau
Address review comments

- Invert destructive and non-destructive cases
- Move the error inside the computation of the replace function
The file was modifiedtyping/typemod.ml (diff)
Commit dc7baf3cd1e821a8a10be7ccb12346f18ee764df by noreply
Missing case in {Stdlib,Float}.frexp documentation (#14128)

The file was modifiedstdlib/templates/float.template.mli (diff)
The file was modifiedstdlib/float.mli (diff)
The file was modifiedstdlib/stdlib.mli (diff)
Commit bea10971d2ae2b4f7276830371528c3fd36ba301 by noreply
Fix `__tsan_func_exit()` signature mismatch (#14065) (#14082)

* Added checks to ensure __tsan_* internal builtins are as we expect them to be and introduced wrappers for them and updated configure

* Changes to .S files reflecting the fact that we use caml_tsan_* in favour of __tsan_*

---------

Signed-off-by: HHN <harihara.sn@gmail.com>
Co-authored-by: Antonin Décimo <antonin.decimo@gmail.com>
The file was modifiedChanges (diff)
The file was modifiedruntime/s390x.S (diff)
The file was modifiedruntime/arm64.S (diff)
The file was modifiedruntime/riscv.S (diff)
The file was modifiedruntime/amd64.S (diff)
The file was modifiedruntime/caml/tsan.h (diff)
The file was modifiedruntime/power.S (diff)
The file was modifiedasmcomp/thread_sanitizer.ml (diff)
The file was modifiedconfigure (diff)
The file was modifiedruntime/memory.c (diff)
The file was modifiedconfigure.ac (diff)
The file was modifiedruntime/tsan.c (diff)
The file was modifiedruntime/caml/s.h.in (diff)
The file was modifiedtyping/typemod.ml (diff)
Commit dce8e77e7d90a33ae975b62cce20013b81d7c4f5 by noreply
matching: fix some non-deterministic code generation (#14091)

fixes #14088
The file was modifiedlambda/matching.ml (diff)
The file was modifiedChanges (diff)
Commit c064ea2694b661065a7388174431ee3dcc3c0c0d by noreply
Speedup some Set/Map access by using is_empty instead of cardinal = 0 (#14119)

The file was modifiedmiddle_end/flambda/flambda_to_clambda.ml (diff)
The file was modifiedmiddle_end/flambda/ref_to_variables.ml (diff)
The file was modifiedmiddle_end/flambda/flambda_utils.ml (diff)
The file was modifiedmiddle_end/flambda/freshening.ml (diff)
The file was modifiedmiddle_end/flambda/inline_and_simplify.ml (diff)
The file was modifiedmiddle_end/flambda/augment_specialised_args.ml (diff)
Commit fa858d9d631782d95d7d5a9c5abe595e8ea506a6 by Florian Angeletti
typechecker: fix an internal error due to wrong exception

`Ctype.mcomp` was raising an errortrace when two types were incompatible
in two rare cases, whereas the function was specified to raise the
`Incompatible` exception. This was fine for internal uses of `mcomp`
within `Ctype`, because call to `mcomp` went through `mcomp_for` that
transformed the `Incompatible` exception into an errortrace. However,
this leads to internal errors for others use of `Ctype.mcomp` that were
only expecting an `Incompatible` exception and not an errortrace.

This simple fix replaces the two raises of errortrace by a raise of
`Incompatible`.
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/typing-gadts/pr10189.ml (diff)
Commit 2105aac83f498e73e365c8e813a41ac54b232789 by Florian Angeletti
cpp support: move basic type definitions to misc
The file was modifiedruntime/caml/camlatomic.h (diff)
The file was modifiedChanges (diff)
The file was modifiedruntime/caml/misc.h (diff)
Commit b2aa0faf744c1beca4a9b2b9e873a651296cf935 by gabriel.scherer
[minor] indentation fix in errortrace_report
The file was modifiedtyping/errortrace_report.ml (diff)
Commit 36ddb173e8749d726bc3d9581bc61596d3530048 by Florian Angeletti
error messages: external with non-syntactic arity
The file was modifiedtyping/typedecl.ml (diff)
The file was modifiedtyping/typedecl.mli (diff)
The file was modifiedChanges (diff)
The file was addedtestsuite/tests/typing-external/non_syntactic_arity.ml
The file was modifiedrelease-info/calendar.md (diff)
Commit fc83a8b6149bcd8a12eb0accc52ae0b386951029 by Nick.Barnes
Upstream "mark-delay" change from flambda-backend.

Co-authored-by: Stephen Dolan <sdolan@janestreet.com>
The file was modifiedruntime/array.c (diff)
The file was modifiedruntime/intern.c (diff)
The file was modifiedruntime/caml/major_gc.h (diff)
The file was modifiedruntime/caml/domain.h (diff)
The file was modifiedruntime/weak.c (diff)
The file was modifiedruntime/caml/minor_gc.h (diff)
The file was modifiedruntime/minor_gc.c (diff)
The file was addedtestsuite/tests/parallel/churn.reference
The file was addedtestsuite/tests/parallel/churn.ml
The file was modifiedruntime/signals.c (diff)
The file was modifiedruntime/domain.c (diff)
The file was modifiedruntime/fiber.c (diff)
The file was modifiedruntime/shared_heap.c (diff)
The file was modifiedruntime/caml/shared_heap.h (diff)
The file was modifiedruntime/memory.c (diff)
The file was modifiedruntime/major_gc.c (diff)
The file was modifiedChanges (diff)
Commit 0cfcba5d68041f91b0aec3364a8bfb46d59b8d9c by Nick.Barnes
Hack to work around accounting problem: artificially catch-up work_counter at the start of any slice when it falls very far behind alloc_counter.
The file was modifiedruntime/major_gc.c (diff)
Commit d5545a34e72810b51768c68427951afc233f556f by Nick.Barnes
fix finaliser handling bug
The file was modifiedruntime/major_gc.c (diff)
Commit ce14eedd7bf220d58fea01025712a6a909383cdc by Nick.Barnes
Guard call to caml_darken
The file was modifiedruntime/weak.c (diff)
Commit 17d14fab2b86b6f1ede285c8a4c6b54292f29cdf by Nick.Barnes
Fix ephe_custom.ml test for the mark-delay scheme
The file was modifiedtestsuite/tests/weak-ephe-final/ephe_custom.ml (diff)
Commit 1e4b55cb4aab4a65c1b52a5fd06bb041bffa2463 by Nick.Barnes
Don't make finaliser updates dependent on work being available.
The file was modifiedruntime/major_gc.c (diff)
Commit 1aeb967946849b83fb909912e6ac939a3fa00582 by samuel.aime.vivien
Removed unused field in package_type
The file was modifiedtyping/typetexp.mli (diff)
The file was modifiedtyping/typetexp.ml (diff)
The file was modifiedtyping/typedtree.mli (diff)
The file was modifiedtyping/typedtree.ml (diff)
The file was modifiedtyping/typemod.ml (diff)
The file was modifiedChanges (diff)
Commit 5e89966f8fee3e4d4829e29d0abe1ac02c757aad by noreply
Rename cstrs to constraints to distinguish from cstrs = constructors (#14141)

The file was modifiedtyping/typedtree.mli (diff)
The file was modifiedtestsuite/tests/parsing/extensions.compilers.reference (diff)
The file was modifiedtyping/rawprinttyp.ml (diff)
The file was modifiedtyping/typemod.ml (diff)
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtyping/types.ml (diff)
The file was modifiedtestsuite/tests/parsing/attributes.compilers.reference (diff)
The file was modifiedtyping/typetexp.ml (diff)
The file was modifiedtyping/typedtree.ml (diff)
The file was modifiedparsing/ast_helper.mli (diff)
The file was modifiedparsing/parser.mly (diff)
The file was modifiedtyping/subst.ml (diff)
The file was modifiedparsing/ast_mapper.ml (diff)
The file was modifiedtyping/out_type.ml (diff)
The file was modifiedtyping/printtyped.ml (diff)
The file was modifiedtyping/tast_mapper.ml (diff)
The file was modifiedparsing/ast_helper.ml (diff)
The file was modifiedparsing/parsetree.mli (diff)
The file was modifiedparsing/depend.ml (diff)
The file was modifiedparsing/ast_invariants.ml (diff)
The file was modifiedtyping/typedecl.ml (diff)
The file was modifiedparsing/pprintast.ml (diff)
The file was modifiedtestsuite/tests/parsetree/locations_test.compilers.reference (diff)
The file was modifiedtestsuite/tests/parsing/hash_ambiguity.compilers.reference (diff)
The file was modifiedocamldoc/odoc_env.ml (diff)
The file was modifiedtyping/oprint.ml (diff)
The file was modifiedtyping/typedecl_variance.ml (diff)
The file was modifiedtyping/gprinttyp.ml (diff)
The file was modifiedboot/menhir/parser.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedtyping/outcometree.mli (diff)
The file was modifiedtyping/tast_iterator.ml (diff)
The file was modifiedtyping/btype.ml (diff)
The file was modifiedtyping/types.mli (diff)
The file was modifiedparsing/ast_iterator.ml (diff)
The file was modifiedtyping/untypeast.ml (diff)
The file was modifiedtestsuite/tests/parsing/shortcut_ext_attr.compilers.reference (diff)
The file was modifiedtyping/typeclass.ml (diff)
The file was modifiedtyping/typedecl_separability.ml (diff)
The file was modifiedparsing/printast.ml (diff)
Commit 2c2d2cda5c8be18912e59c4171ece83b86e4bd87 by kc
Move the orphaned ephemerons GC colour check inside the barrier.
The file was modifiedruntime/domain.c (diff)
The file was modifiedruntime/major_gc.c (diff)
Commit 69ed94cf28d9485d47bb572bacfa545b6959a9df by gabriel.scherer
minor gc: more consistent memprof logging

In
  https://github.com/ocaml/ocaml/pull/13580#issuecomment-3092253963
jmid reports that he needed to tweak the GC verbosity setting to avoid
getting spammed by minor-gc messages when debugging an assertion
failure.

The other sub-phases of the GC minor all uses `caml_gc_log` rather
than CAML_GC_MESSAGE, and do not seem to cause similar spamming
issues. Fixing the code to be consistent will avoid inconsistent
verbosity levels in end-user scripts.
The file was modifiedruntime/minor_gc.c (diff)
Commit ca3d055ae4984319da49fefc05b3b813b5edb1c1 by source
Fix missing expectations in typing-poly/poly.ml
The file was modifiedtestsuite/tests/typing-poly/poly.ml (diff)
Commit cc99be18afe97fe7c28e6d6a3d3a6cc1256b06bf by source
Additional corrections
The file was modifiedtestsuite/tests/typing-poly/poly.ml (diff)
Commit 0df7dea905dae52c0de7df81437cc3b313cf5c88 by source
Audit unexecuted phrases
The file was modifiedtestsuite/tools/expect.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/pr7851.ml (diff)
The file was modifiedtestsuite/tests/typing-unboxed-types/test.ml (diff)
The file was modifiedtestsuite/tests/lib-array/test_array.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/aliases.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/gadthead.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly.ml (diff)
The file was modifiedtestsuite/tests/typing-recmod/pr6491.ml (diff)
The file was modifiedtestsuite/tests/letrec-check/records.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/pr5985.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/yallop_bugs.ml (diff)
The file was modifiedtestsuite/tests/typing-immediate/immediate.ml (diff)
The file was modifiedtestsuite/tests/typing-misc/injectivity.ml (diff)
The file was modifiedtestsuite/tests/typing-misc/variance.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/firstclass.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/pr7818.ml (diff)
The file was modifiedtestsuite/tests/typing-misc/polyvars.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/pr6158.ml (diff)
The file was modifiedtestsuite/tests/letrec-check/float_unboxing.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/pr13579.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/ambiguity.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/pr7374.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/firstclass.ml (diff)
The file was modifiedtestsuite/tests/typing-recmod/pr6491.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/gadthead.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/pr6158.ml (diff)
The file was modifiedtestsuite/tests/letrec-check/float_unboxing.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/pr5985.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/pr7818.ml (diff)
The file was modifiedtestsuite/tests/typing-misc/polyvars.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/pr13579.ml (diff)
The file was modifiedtestsuite/tests/letrec-check/records.ml (diff)
The file was modifiedtestsuite/tests/lib-array/test_array.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/aliases.ml (diff)
The file was modifiedtestsuite/tests/typing-misc/variance.ml (diff)
The file was modifiedtestsuite/tests/typing-misc/injectivity.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/ambiguity.ml (diff)
The file was modifiedtestsuite/tests/typing-unboxed-types/test.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/pr7374.ml (diff)
The file was modifiedtestsuite/tests/typing-immediate/immediate.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/yallop_bugs.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/pr7851.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedChanges (diff)
Commit 8f0d4f4b77215029fcc3f331cfc0cee3cdff051b by gabriel.scherer
runtime: free the minor heap when leaving STW participants

The reserved address space for the minor heap area is a global
resource shared by all domains; each domain owns a portion of it,
within which it commits a part for its minor heap. (Having contiguous
address space allows for an efficient Is_young check.). When we need
more reserved space because the user increased the minor heap size, we
use a STW section to change the reservation: each domain in the STW
section first decommits its minor heap, a single domain changes the
reserved area, and then each domain re-commits its minor heap.

If a domain does not participate to STW sections, the boundaries of
its minor heap will change without the domain decommitting the
previous minor heap first. If the same domain structure is used for a
newly spawned domain later on, it will start by decommitting its minor
heap following the new boundaries, which is incorrect as it never
committed this adress range in the first place.

(In practice calling `caml_mem_decommit` incorrectly in this way does
not appear to crash the program. I think this is because `decommit`
has a fairly liberal behavior, it will happily do nothing if the
memory range is not committed. The code remains logically wrong, and
could become a hard failure if other parts of the runtime change in
reasonable ways later on.)

The present commit ensures that we systematically decommit the minor
heap of each domain when it leaves the set of STW participants. This
way, only STW-active domains have their minor heap allocated, and
changing the minor heap address space within STW section works as
intended.

(I tried to remove the new call to `free_minor_heap` in
`domain_terminate`, and checked that the testsuite fails in debug mode
when the `allocate_minor_heap` call in `domain_create` later on
notices an already-committed minor heap.)

Reviewed-by: KC Sivaramakrishnan <kc@kcsrk.info>
The file was modifiedruntime/domain.c (diff)
Commit 94908d2051d08eedc7543cd0a0b0f811e5f7d6c4 by Florian Angeletti
Update parser and adapt to the new Tpoly invariant. Requires bootstrap.

The argument of a Tarrow must now be a [Tpoly] node.
The file was modifiedboot/menhir/parser.ml (diff)
The file was modifiedtoplevel/topprinters.ml (diff)
The file was modifiedtyping/typetexp.mli (diff)
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtestsuite/tests/typing-objects/Exemples.ml (diff)
The file was modifiedtyping/btype.ml (diff)
The file was modifiedtyping/typeopt.ml (diff)
The file was modifiedtyping/typetexp.ml (diff)
The file was modifiedtyping/out_type.ml (diff)
The file was modifiedparsing/parser.mly (diff)
The file was modifiedtyping/btype.mli (diff)
The file was modified.depend (diff)
The file was modifiedtyping/ctype.mli (diff)
The file was modifiedtyping/errortrace_report.ml (diff)
The file was modifiedtyping/types.mli (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/typecore.mli (diff)
The file was modifiedtyping/typeclass.ml (diff)
The file was modifiedtyping/typeclass.mli (diff)
The file was modifiedtyping/typedecl.ml (diff)
The file was modifiedboot/ocamllex (diff)
The file was modifiedboot/ocamlc (diff)
Commit a6645993f8ee41156c4f619c49aa940d814975fa by Florian Angeletti
Add tests for polymorphic parameters
The file was addedtestsuite/tests/typing-poly/poly_params.ml
Commit c39e29dd0f745998e48f4721b27daba04d1759d0 by Florian Angeletti
Promote polymorphic parameters tests failures
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
Commit 489e219fb95fa95a48ffa8a70e12995c98ede018 by Florian Angeletti
Refactor: more descriptive return type for [split_function], renaming and comment work
The file was modifiedtyping/typecore.ml (diff)
Commit da0cabe07b8e5ab2bc7c443350da798598888d52 by Florian Angeletti
Introduce new error "opt params cannot be polymorphic"
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/typecore.mli (diff)
Commit ba14d13c046ebc74b9638a2ce79aef22a92d09bd by Florian Angeletti
Wrap and generalize filter_arrow_mono if principal
The file was modifiedtyping/typecore.ml (diff)
Commit 24b6f4c4a5b05a19ec2aa3fd49d5d4ff69304493 by Florian Angeletti
Handle polymorphic parameters in type_apply_arg
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
Commit 16d8e49c786f0ebf885cebc54dfc288ee9d74ddc by Florian Angeletti
Refactor Pexp_function case and handle poly
The file was modifiedtyping/typecore.ml (diff)
Commit e882d5ae4248f26fba18b6ad9414ef997fd4903b by Florian Angeletti
Add one generalization level in type_class_arg_pattern
The file was modifiedtyping/typecore.ml (diff)
Commit ac9691aca9a94f5a8c2aae37cf5fa9f2810a117f by Florian Angeletti
Handle polymorphic parameters in [type_approx and] [type_pat_aux]
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedlambda/translcore.ml (diff)
Commit 6e02745744317f7dd869c1d929035870036842c5 by Florian Angeletti
Add changes entry for #15733
The file was modifiedChanges (diff)
Commit d31142a21f9ae99434f9bf1aa4a4ab5beb431f99 by Florian Angeletti
Add test with class argument
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
Commit 2ad84dcb3c29293af1bb3d0378daf316022f6506 by Florian Angeletti
Additional tests with labels
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
Commit f401ccf8d0d0ad9a10b1cbd939d1bf64cea37f35 by Florian Angeletti
review: reorder functions in btype
The file was modifiedtyping/btype.mli (diff)
The file was modifiedtyping/btype.ml (diff)
The file was modifiedtyping/types.mli (diff)
Commit b6629c6e715c565ca3b8d38fa4d36480342b23ec by Florian Angeletti
review: add a Btype.newgenmono utility symetrical to Ctype.newmono
The file was modifiedtyping/btype.ml (diff)
The file was modifiedtyping/btype.mli (diff)
The file was modifiedtyping/typeclass.ml (diff)
Commit 6fc24f4eefbda7396884a4b76ba288a180ae7972 by Florian Angeletti
review: use label names in error messages
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/typetexp.ml (diff)
The file was modifiedtyping/typecore.mli (diff)
The file was modifiedtyping/typetexp.mli (diff)
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
Commit 669bd470115fbd04c3dd3b76c588c68a973adc56 by Florian Angeletti
Add test for polymorphic variants in polymorphic parameters
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
Commit e93ba211dbd022139cfc36e05e3d4e0185925fcd by Florian Angeletti
Take fixed instances of polys where appropriate

This fixes a bug in the interaction between polymorphic variants and polymorphic
parameters. The actual bug fix is just changing two falses to trues but I also
changed the instance_poly interface to make similar mistakes less likely to
happen.
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
The file was modifiedtyping/typeclass.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/ctype.mli (diff)
The file was modifiedtyping/typedecl.ml (diff)
The file was modifiedtyping/ctype.ml (diff)
Commit 74b9f1fe58a3d59f22b39b2ea280b3b884218c90 by Florian Angeletti
Show issue with subtyping trace
The file was modifiedtestsuite/tests/typing-misc/typecore_errors.ml (diff)
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtestsuite/tests/typing-objects/Exemples.ml (diff)
The file was modifiedtestsuite/tests/typing-misc/typecore_errors.ml (diff)
Commit e6d2834a5dcef5ffa9337177182e09ec7f77e6a7 by Florian Angeletti
tests: Promote error messages improvements after rebasing.
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
Commit be3016c7e6c5ca9db647b3044f79e3e2fe2b441d by Florian Angeletti
review: more reuse in parser and reloc in [param_type]
The file was modifiedboot/menhir/parser.ml (diff)
The file was modifiedparsing/parser.mly (diff)
Commit a5dc2ad2083e7d08de84ed5144a7703f95588127 by Florian Angeletti
review: move [is_really_poly] utility to Ctype.
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtyping/ctype.mli (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
Commit 19c9abe2aa5c097d409c442372bad96cc1f79b3b by Florian Angeletti
Move definition closer to usage
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
Commit c9a85332e881a251666853fd74fc72bc22836ac6 by Florian Angeletti
Document function in comment
The file was modifiedtyping/btype.mli (diff)
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
The file was modifiedtyping/typeclass.ml (diff)
Commit e8eb592e3fa593ce78f73ce9282d96a56a06246f by Florian Angeletti
Rename function and move it to Btype
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtyping/ctype.mli (diff)
The file was modifiedtoplevel/topprinters.ml (diff)
The file was modifiedtyping/btype.ml (diff)
The file was modifiedtyping/btype.mli (diff)
Commit d01ee5f4d04585414bbe9adf40654a367b970b23 by Florian Angeletti
Inline function and exception used only once
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/ctype.mli (diff)
The file was modifiedtyping/ctype.mli (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
Commit 730e7044b3d77db58cde54614f2557a6e9932cf2 by Florian Angeletti
Clearer argument label and field names
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtyping/ctype.mli (diff)
The file was modifiedtyping/typecore.ml (diff)
Commit ba7bf4906ff62d18be80de1382847c59b8226e31 by Florian Angeletti
Turn ordinary comment into a documentation comment
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
Commit 7202cdef2c09882a930eeeffccb8902009d60323 by Florian Angeletti
review: De-duplicate parser rule for let
The file was modifiedboot/menhir/parser.ml (diff)
The file was modifiedparsing/parser.mly (diff)
Commit 6e7a74424008a091e8c17ff187d129f95d5ee980 by Florian Angeletti
review: Add test with syntactic arity mismatch
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
Commit 02746081cc1310daafc67122365e514032de2a54 by david.allsopp
Fix dependency generation when tools are disabled

The OPTIONAL_BYTECODE_TOOLS, OPTIONAL_NATIVE_TOOLS and
OPTIONAL_LIBRARIES should be being used to affect build and
installation, not definitions. If ocamltest et al were disabled, then
the definitions of these programs were omitted, which prevents the
reproducible generation of dependency information.
The file was modifiedMakefile (diff)
The file was modifiedconfigure (diff)
The file was modifiedconfigure.ac (diff)
Commit f627d6356224bd93505964200cd39a0f57451416 by david.allsopp
Fix generation of config.status for dynlink

Running config.status works correctly, but individually requesting links
in otherlibs/dynlink did not because the names were specified using a
shell variable (i.e. at configure-time) instead of a m4sh variable (i.e.
at autoconf-time).
The file was modifiedconfigure (diff)
The file was modifiedconfigure.ac (diff)
Commit 70431af45b0c7f449863eb07d2e7caa38b0c1693 by david.allsopp
Don't generate ocamltest_config.ml when not needed
The file was modifiedconfigure (diff)
The file was modifiedconfigure.ac (diff)
The file was modifiedMakefile (diff)
Commit 921c6a3a6e0dbc4199e87912c96a362a0ab0f74d by david.allsopp
Correct ocamltest-manual
The file was modifiedMakefile (diff)
Commit ffa6197f6a76af4e9378fa323406cbdb8491a86c by noreply
symbol names: revert to using `$` only on macOS and Windows (#14143)

The file was modifiedruntime/s390x.S (diff)
The file was modifiedtestsuite/tests/native-debugger/linux-gdb-arm64.reference (diff)
The file was modifiedruntime/arm64.S (diff)
The file was modifiedtestsuite/tests/native-debugger/macos-lldb-arm64.reference (diff)
The file was modifiedtestsuite/tests/native-debugger/linux-lldb-amd64.reference (diff)
The file was modifiedasmcomp/emitaux.ml (diff)
The file was modifiedruntime/power.S (diff)
The file was modifiedtestsuite/tests/native-debugger/macos-lldb-amd64.reference (diff)
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/native-debugger/lldb-script (diff)
The file was modifiedmiddle_end/compilenv.mli (diff)
The file was modifiedasmcomp/x86_proc.ml (diff)
The file was modifiedruntime/dynlink_nat.c (diff)
The file was modifiedtestsuite/tests/asmcomp/func_sections.run (diff)
The file was modifiedruntime/amd64.S (diff)
The file was modifiedtestsuite/tests/native-debugger/linux-lldb-arm64.reference (diff)
The file was modifiedruntime/riscv.S (diff)
The file was modifiedtestsuite/tests/native-debugger/linux-gdb-amd64.reference (diff)
The file was modifiedmiddle_end/compilenv.ml (diff)
The file was modifiedtestsuite/tests/atomic-locs/cmm.compilers.reference (diff)
The file was modifiedtestsuite/tests/native-debugger/linux-gdb-riscv.reference (diff)
Commit 72a9d5adf2693649e460524f52cfa9b22685493a by Florian Angeletti
bookkeeping: update release info
The file was modifiedrelease-info/calendar.md (diff)
Commit 08d94e782ed2215aad075e011afd3efa02585524 by gabriel.scherer
Minor heap reservation: change the terminology

The current codebase use 'caml_minor_heaps_{start,end}' for the
boundaries of a global address space that is reserved,
'dom->caml_minor_heap_area_{start,end}' for a 'minor heap area', a
segment of this address space that is owned by each domain, and then
finally 'dom->young_{start,end}' for the prefix of this segment that
is actually committed and used as the minor heap of each domain. Some
comments refer to the latter as the 'minor heap arena', following
terminology from the Retrofitting Parallelism into OCaml paper.

On a suggestion by KC, I am trying to make the naming scheme more
regular by consistently using 'reservation' for a reserved block of
address space:

- Use 'minor heaps reservation' for the global reservation. Its
  boundaries remain stored in 'caml_minor_heaps_{start,end}' to avoid
  compatibility issues in third-party code.

- Use 'minor heap reservation' for the per-domain segment of the
  global reservation. Its boundaries are stored in
  'dom->minor_heap_reservation_{start,end}'.

- Use 'minor heap' for the prefix of the minor heap reservation
  that is actually committed, whose boundaries remain
  'dom->young_{start,end}'.

This change is purely local to domain.c.

Suggested-by: KC Sivaramakrishnan <kc@kcsrk.info>
The file was modifiedruntime/domain.c (diff)
Commit 0fd3dac310986df22b5f885eba685588752742cb by gabriel.scherer
review: use 'arena' for the (committed) minor heap space

Suggested-by: KC Sivaramakrishnan <kc@kcsrk.info>
The file was modifiedruntime/caml/domain.h (diff)
The file was modifiedruntime/domain.c (diff)
The file was modifiedruntime/minor_gc.c (diff)
Commit 2e0836f328b6431b9055bee58bad924f06c95e35 by gabriel.scherer
self-review: solidify two separate comments on minor heap layout
The file was modifiedruntime/domain.c (diff)
Commit ba7ba19789db4e50aed016b9ad8795b0c5a9420f by gabriel.scherer
runtime/domain.c: add a category of 'parked' stw_domains
The file was modifiedChanges (diff)
The file was modifiedruntime/domain.c (diff)
Commit 46bf83b0be41cd081d544de3b3cb056065d5247d by gabriel.scherer
[minor] domain.c: reorder domain_self and heap-reservation variables
The file was modifiedruntime/domain.c (diff)
Commit ca8b9aa6ed3406f013867f1faf67e601cd901a37 by gabriel.scherer
[minor] domain.c: reorder domain_create
The file was modifiedruntime/domain.c (diff)
Commit 29be98829b078a50103cfb30ce1b71830bc7cb92 by sadiq
use POOL_FIRST_BLOCK
The file was modifiedruntime/shared_heap.c (diff)
Commit 68a4b5649c7516ca311c7d4a8798d2ae90f397eb by gabriel.scherer
domain.c: fix `stw_resize_minor_heaps_reservation`.

My PR #14158 merged today introduced a bug in the logic to resize the
minor heaps reservation. It added the following to the
`free_minor_heap_arena` function:

    domain_state->minor_heap_wsz = 0;

Doing this is correct when we are freeing the minor heap arena of a
domain that is leaving the STW participant set (the focus of #14158);
it is also correct in

    int caml_reallocate_minor_heap_arena(asize_t wsize)
    {
      free_minor_heap_arena();
      return allocate_minor_heap_arena(wsize);
    }

which is called to change the size of the memory area, so zeroing it
in `free` before setting it in `allocate` is fine. However, it
is *not* correct in

    static void
    stw_resize_minor_heaps_reservation(caml_domain_state* domain,
                                      void* minor_wsz_data,
                                      int participating_count,
                                      caml_domain_state** participating) {
      caml_empty_minor_heap_no_major_slice_from_stw(
        domain, NULL, participating_count, participating);

      free_minor_heap_arena();

      Caml_global_barrier_if_final(participating_count) {
        uintnat new_minor_wsz = (uintnat) minor_wsz_data;
        domain_resize_heaps_reservation_from_stw_single(new_minor_wsz);
      }

      if (allocate_minor_heap_arena(Caml_state->minor_heap_wsz) < 0) {
        caml_fatal_error("Fatal error: No memory for minor heap arena");
      }
    }

This function changes the global minor heaps reservation during a STW
event where each domain first deallocates its arena and then
reallocates it in the new reservation. The problem is that
`free_minor_heap_arena` now changes the value of
`Caml_state->minor_heap_wsz` to 0, so the re-allocation that follows
will try to allocate a 0-word (in fact a 512-word due to the
page-alignment normalization logic) arena.

This bug can only be encountered by calling
`caml_update_minor_heap_max`, so it affects few programs.

I see two approaches to fix it:

1. we could remove the zeroing of `minor_heap_wsz`,
   and instead use the previous check
   `young_start == NULL && young_end == NULL`
   to detect uninitialized arenas

2. ... or we do assume that `free_minor_heap_arena` will unset
   the arena size (which is reasonable), and we preserve the desired
   size value within the `stw_resize_minor_heaps_reservation` function.

The present commit implements approach (2). I prefer to avoid a
situation (as with (1)) where the `free` would leave the state only
partially initialized, and it would be important for correctness.
The file was modifiedruntime/domain.c (diff)
Commit e374459de4de9f65c71cb6fe9f56959e15737428 by samuel.aime.vivien
Extend parsetree to distinguish between `(module M : S)` and `(module M) : (module S)` 
The file was modifiedtyping/untypeast.ml (diff)
The file was modifiedparsing/ast_helper.mli (diff)
The file was modifiedparsing/ast_mapper.ml (diff)
The file was modifiedtyping/printpat.ml (diff)
The file was modifiedparsing/ast_helper.ml (diff)
The file was modifiedparsing/ast_iterator.ml (diff)
The file was modifiedtyping/typedtree.ml (diff)
The file was modifiedparsing/pprintast.ml (diff)
The file was modifiedtestsuite/tests/typing-implicit_unpack/implicit_unpack.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedboot/menhir/parser.ml (diff)
The file was modifiedtyping/tast_iterator.ml (diff)
The file was modifiedtestsuite/tests/compiler-libs/test_untypeast.ml (diff)
The file was modifiedtyping/tast_mapper.ml (diff)
The file was modifiedtyping/typedtree.mli (diff)
The file was modifiedparsing/parser.mly (diff)
The file was modifiedtestsuite/tests/parsetree/locations_test.compilers.reference (diff)
The file was modifiedparsing/depend.ml (diff)
The file was modifiedparsing/parsetree.mli (diff)
The file was modifiedtyping/printtyped.ml (diff)
The file was modifiedtyping/typetexp.ml (diff)
The file was modifiedparsing/printast.ml (diff)
The file was modifiedfile_formats/cmt_format.ml (diff)
The file was modifiedChanges (diff)
Commit 9d44d724ad63ea76e22f5ac4740d7d0a66ec92bd by noreply
add hashtbl remove and replace which return the previous value (#14060)

The file was modifiedstdlib/hashtbl.ml (diff)
The file was modifiedtestsuite/tests/backtrace/backtrace2.reference (diff)
The file was modifiedstdlib/moreLabels.mli (diff)
The file was modifiedstdlib/hashtbl.mli (diff)
The file was modifiedtestsuite/tests/lib-hashtbl/htbl.ml (diff)
The file was modifiedstdlib/templates/hashtbl.template.mli (diff)
The file was modifiedChanges (diff)
Commit bab7aa8a5838830b5bb41a3c4b12dcd058665344 by gabriel.scherer
Memprof.start replaces any existing profile in the domain, Memprof.is_sampling

The change to Memprof.start increases its compositionality while
conforming to the previous behaviour (it simply fails in fewer
situations). This is necessary for us to implement the Memprof
interface on top of the package memprof-limits.

The new function is_sampling is for clients that do want to fail
early, e.g. when detecting that two Memprof clients are interfering.
The file was modifiedruntime/memprof.c (diff)
The file was modifiedstdlib/gc.mli (diff)
The file was modifiedstdlib/gc.ml (diff)
The file was modifiedtestsuite/tests/statmemprof/start_stop.ml (diff)
The file was addedtestsuite/tests/statmemprof/restart.ml
The file was modifiedtestsuite/tests/statmemprof/start_stop.reference (diff)
The file was addedtestsuite/tests/statmemprof/restart.reference
The file was modifiedruntime/memprof.c (diff)
Commit c0e29d9293147a35f9ad6ab827ec67008a8a6317 by gabriel.scherer
[documentation] Clarify a difference between threads and domains
The file was modifiedstdlib/gc.mli (diff)
The file was modifiedChanges (diff)
The file was modifiedtestsuite/tests/statmemprof/start_stop.reference (diff)
The file was modifiedtestsuite/tests/statmemprof/start_stop.ml (diff)
Commit 201ea83e90ade2b6fa31aa3453fd73033a060a6e by gabriel.scherer
Run callbacks before starting a different profile

Simplify code by using caml_memprof_run_callbacks_res
The file was modifiedruntime/memprof.c (diff)
Commit 43f3935e8791fe3455f4fb01c71b9a7cae756b31 by mail
Bump multicoretests to the trunk-compatible 0.9
The file was modified.github/workflows/multicoretests.yml (diff)
Commit 1431910c765dd1744f13cd158eda5bf4c272c2ec by mail
Also bump qcheck to 0.26 while we are at it
The file was modified.github/workflows/multicoretests.yml (diff)
Commit 34a810a42b7aa75423568a14c00a72b0a78fddb8 by noreply
runtime: host aligned fibers inside the fiber cache whenever possible (#14169)

* When growing a fiber, zero the alignment word before computing the next size in order
to make this new size fits inside the fiber cache.
* Add an assertion to check that small fibers are using the cache.
The file was modifiedruntime/fiber.c (diff)
The file was modifiedChanges (diff)
Commit a2eb4b7bbd0575943cf6f020c5eda4f5c91e5579 by noreply
Add expectation to wellfounded11150.ml (#14170)

* Add expectation to wellfounded11150.ml and document that this is a complexity class test
The file was modifiedtestsuite/tests/typing-misc/wellfounded11150.ml (diff)
Commit ae66354144c49572dc7c38e4a7db416fe53a2246 by source
Print row types when they are GADT constructors
The file was modifiedtyping/out_type.ml (diff)
The file was modifiedtyping/outcometree.mli (diff)
The file was modifiedChanges (diff)
The file was modifiedtyping/oprint.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/test.ml (diff)
Commit 8c57adb3dc00b0ba6dcd3a8dc82f4d0b506fc4b6 by source
Better Btype.is_row_name
The file was modifiedtyping/btype.ml (diff)
Commit 78a9495b72a320c42bdaf648c52f1d32a0660e16 by noreply
Gc.stat: restore stack_size and add live_stacks_words (#14168)

The file was modifiedChanges (diff)
The file was modifiedruntime/gc_ctrl.c (diff)
The file was modifiedruntime/fiber.c (diff)
The file was modifiedstdlib/gc.ml (diff)
The file was modifiedstdlib/gc.mli (diff)
The file was modifiedruntime/caml/fiber.h (diff)
Commit 524fd249c09812d8d3371e00a8e108a4dd9d512b by Florian Angeletti
error message: explain quantification mismatches
The file was modifiedtyping/ctype.mli (diff)
The file was modifiedtyping/errortrace_report.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/test.ml (diff)
The file was modifiedtyping/ctype.ml (diff)
The file was modifiedtestsuite/tests/typing-poly/poly.ml (diff)
The file was modifiedtyping/errortrace.mli (diff)
The file was modifiedtestsuite/tests/typing-poly/poly_params.ml (diff)
The file was modifiedtyping/errortrace.ml (diff)
The file was modifiedtestsuite/tests/typing-gadts/pr10907.ml (diff)
The file was modifiedtyping/typecore.ml (diff)
Commit 80872a5c74db318834d3a4397d000cc2f7adf9db by Florian Angeletti
deprecation alert: file location
The file was modifiedChanges (diff)
The file was modifiedparsing/location.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedtyping/out_type.ml (diff)
The file was addedtestsuite/tests/typing-labels/pr13658.ml
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedChanges (diff)
Commit 38a962c50b4cee9cafb7d04cdd9de3fa40250c87 by Nick.Barnes
Remove misleading comment, and change call back to the more intuitive function (now that that function can't allocate after the minor GC).
The file was modifiedruntime/minor_gc.c (diff)
Commit d5be817f104721b4a41ecf7729f16f72b51cb407 by Florian Angeletti
toplevel: fix printing of qualified labels
The file was modifiedtoplevel/genprintval.ml (diff)
The file was modifiedtestsuite/tests/tool-toplevel/constructor_printing.ml (diff)
Commit 4f2163db2e1f74134ea67421538bc211b30cb713 by timmcgil
Add runtime counters EV_C_MINOR_PROMOTED_WORDS and EV_C_MINOR_ALLOCATED_WORDS.

EV_C_MINOR_PROMOTED_WORDS reports words promoted by minor GC and
EV_C_MINOR_ALLOCATED_WORDS reports words allocated by minor GC. Both
have equivalent bytes counters.

Update the documentation for EV_C_MINOR_PROMOTED and
EV_C_MINOR_ALLOCATED to qualify scope of the values reported.
The file was modifiedruntime/minor_gc.c (diff)
The file was modifiedotherlibs/runtime_events/runtime_events.mli (diff)
The file was modifiedruntime/caml/runtime_events.h (diff)
The file was modifiedtestsuite/tests/lib-runtime-events/test_caml_counters.ml (diff)
The file was modifiedotherlibs/runtime_events/runtime_events.ml (diff)
Commit 2b6d2b03490a4bd01d736c47c7b9edbabe9d89bd by gabriel.scherer
ocamlprof: do not instrument unreachable clauses

fixes #14196
The file was modifiedtools/ocamlprof.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedChanges (diff)
Commit e6231db020fe239ff3a5bed6ea9caadafad32c8f by gabriel.scherer
Changes: 14169 was included in 5.4
The file was modifiedChanges (diff)
The file was modifiedChanges (diff)
Commit 2cbb0075e02bc2046b6724366fbd5b54949cd312 by timmcgil
Highlight known units for runtime_counter.
The file was modifiedotherlibs/runtime_events/runtime_events.mli (diff)
Commit 6b21d6a625650b45d20008da2fa6660ffdceaa89 by pierre.boutillier
Misc.invert_build_path_prefix_map
The file was modifiedutils/build_path_prefix_map.mli (diff)
The file was modifiedutils/build_path_prefix_map.ml (diff)
The file was modifiedutils/misc.ml (diff)
The file was modifiedutils/misc.mli (diff)
Commit 427e1a6d69e614702e62af985609753832c31d12 by pierre.boutillier
Apply BUILD_PATH_PREFIX_MAP to pathes found in files by the debugger
The file was modifieddebugger/symbols.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedChanges (diff)
Commit 4e27e80af8653a2a5f3ea0cd16aeca841807206c by noreply
Constraints on module unpacking are not ghost (#14198)

* Constraints on module unpack are not ghost

* Remove spurious inlining in parser.mly

* Changes
The file was modifiedboot/menhir/parser.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedparsing/parser.mly (diff)
Commit 2db2b9282e568f580e9fcf1a752606065f151914 by antonin
Fix pthread_setname_np under NetBSD
The file was modifiedotherlibs/systhreads/st_stubs.c (diff)
Commit 30c570fe817777c86182ee8f743b94b6295d58d4 by noreply
Fix #14200 (without breaking pr7321_ok.ml) (#14202)

The file was modifiedtestsuite/tests/typing-misc/variance.ml (diff)
The file was modifiedtyping/includecore.ml (diff)
The file was modifiedChanges (diff)
Commit 0f6fbaea61b55a8c81c2ad299e093138b34dc8ea by damien.doligez
fix memory model for Weak.set
The file was modifiedruntime/weak.c (diff)
Commit 0b00bf94a224c5902a67ac18967c44d9d836e97b by damien.doligez
refactor weak.c/do_set to look more like memory.c/modify
The file was modifiedruntime/weak.c (diff)
Commit 64a5cdf9c64e2ec2d46b27c4a299abc1a514ba07 by damien.doligez
ocamltest: show test name before running the test
The file was modifiedocamltest/main.ml (diff)
Commit 3c36ad0446dd1649444d16dfa64320cf92caf923 by noreply
Add List.split_map (#14185)

The file was modifiedstdlib/list.ml (diff)
The file was modifiedstdlib/listLabels.mli (diff)
The file was modifiedstdlib/list.mli (diff)
The file was modifiedChanges (diff)
The file was modifiedChanges (diff)
Commit 144463d346054ad202e72ca4dcd59ded2d0d17ea by noreply
Fix typos in comment (#14194)

The file was modifiedstdlib/format.ml (diff)
Commit 333a5398ffe5292b45bbcae64fe3acbe1a22ecbe by noreply
Elide duplicate ephemeron status check (#14175)

The file was modifiedruntime/major_gc.c (diff)
Commit 57fcefed333210bf441bba0f1eaf592c623ca61f by noreply
Recognize %identity as nonexpansive (#14029)

Co-authored-by: Stephen Dolan <sdolan@janestreet.com>
The file was modifiedstdlib/fun.ml (diff)
The file was addedtestsuite/tests/typing-misc/magic_is_a_value.ml
The file was modifiedtyping/typecore.ml (diff)
The file was modifiedChanges (diff)
The file was modifiedstdlib/fun.mli (diff)
Commit 2c69da8e39c400890959b0b1642086ffffcf73a2 by noreply
fix tsan tests to account for #14143 (#14203)

The file was modifiedtestsuite/tests/tsan/filter-locations.sh (diff)
Commit 1ac6152ec7becb7a29ef69b9b42ff78effb19c3e by source
Better error message when a functor is its own unsafe functor
The file was modifiedtestsuite/tests/basic-modules/recursive_module_evaluation_errors.ml (diff)
The file was modifiedlambda/translmod.ml (diff)
Commit 5f7ee1e5e282e6f9e53f543108a5299de09cde5d by Florian Angeletti
Changes bookkeeping

move 13580 entry to the right version
The file was modifiedChanges (diff)
Commit a69f472484d5aa771a791c741fd07167c40cbde7 by source
Actually make example unsafe (see #14217)
The file was modifiedtestsuite/tests/basic-modules/recursive_module_evaluation_errors.ml (diff)
Commit 6a6f8f62253f70bd60090889e3f06a6c9127b072 by damien.doligez
After #14209, TSan now correctly reports a data race in
tests/weak-ephe-final/weak_array_par.ml.

Since the data race is an essential part of the test, we have to
disable TSan on this file.
The file was modifiedtestsuite/tests/weak-ephe-final/weak_array_par.ml (diff)
Commit 8b1e26db2d9067c62680a0607e9f2f1255f93bde by Florian Angeletti
functor error messages: don't forget equality

Higher-level error messages for functors recompute inclusion checks when
trying to discover more macro-level error messages. For this
reconstruction to be accurate, those computations must use the same
environment than the one used when detecting the original problem.

In particular, this environment must include equalities added during the
pairing of types and modules during the signature inclusion test. For
instance, in

    module M: sig
       type t
       module F(X:sig val f:t val g:int end): sig end
    end = struct
      type t
      module F(X:sig val f:t val g:float end)= struct end
    end

we must remember that the interface-side `t` is equal to the
implementation-side `t`.

This part of the inclusion checking environment was ignored before this
commit leading to non-sensical error messages complaining that `t` is
not compatible with `t`.

This commit extends the captured environment for errors in signature to
include the substitution recording the equalities between items on both
side of the check.
The file was modifiedChanges (diff)
The file was modifiedtyping/includemod.mli (diff)
The file was modifiedtyping/includemod_errorprinter.ml (diff)
The file was modified.depend (diff)
The file was modifiedtyping/includemod.ml (diff)
The file was modifiedtestsuite/tests/typing-modules/functors.ml (diff)
Commit 8f1ba17f68f6f317f1ebfa9792c6f6793cbc92b9 by david.allsopp
Fix st_stubs.c compilation with mingw-w64 13.0.0

In mingw-w64 13.0.0, time.h now causes pthread_compat.h to be included
which as a side-effect sets up the macros for declspec(dllimport). Since
caml/osdeps.h uses time.h, this means that the macro changes designed to
ensure the API functions are properly decorated doesn't get applied, and
and RELOC_REL32 errors abound.

The fix for now is to ensure that the macros are setup to control
pthread_compat.h at the very beginning of the file.
The file was modifiedotherlibs/systhreads/st_stubs.c (diff)
The file was modifiedChanges (diff)