-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement %makearray_dynamic{,_uninit} #3317
Conversation
One thing we need to check: preservation of evaluation order (and non-duplication) during the Lambda-to-Lambda transformations here. |
c47d194
to
ead927e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor comments. I think it's fine that all-int unboxed tuple arrays end up with the mixed block representation, though it is a bit strange that this applies to singleton tuples too.
(Also as Chris noted, the tests are currently only running in bytecode) |
19f6283
to
cb9fc60
Compare
18c764a
to
ca72548
Compare
Note that the runtime4 CI tests are not yet expected to pass, I'll port the runtime5 changes to runtime4 once review has been completed. |
e20dd40
to
7a8dba0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving modulo discussion with Chris
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looked at the bits I was tagged for - some minor suggestions.
ab571fe
to
4dfedeb
Compare
I've also rebased this. |
93042d1
to
2982b4b
Compare
Have rebased. |
4433b65
to
fec8ec7
Compare
testsuite/tests/typing-layouts-arrays/generate_makearray_dynamic_tests.ml
Outdated
Show resolved
Hide resolved
daea1bb
to
2a692c0
Compare
This reverts commit 6da1dde.
commit d1acc48 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:53:51 2025 -0500 Squashed commit of the following: commit c9d7aa6 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:49:45 2025 -0500 cleaned up div/mod commit 4d9f427 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:45:42 2025 -0500 address feedback and simplify division interface commit 625a416 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 31 11:00:07 2024 -0500 unified unboxed field getters/setters. This will be useful once we have unboxed integers of different sizes commit 37b4e82 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 31 09:40:53 2024 -0500 formatted commit 1746aa8 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 30 11:37:33 2024 -0500 updated cmm_helpers interface to be more amenable to adding other integer sizes commit 9e7c322 Author: Greta Yorsh <[email protected]> Date: Tue Dec 31 12:01:21 2024 +0000 Separate test for vectorizer in the CI (#3414) * Separate test for vectorizer in the CI * Remove vectorizer from "gi" CI job commit e1a5fe4 Author: Xavier Clerc <[email protected]> Date: Tue Dec 31 10:54:43 2024 +0000 CI: simplify the regalloc jobs (#3389) commit ab229fc Author: Greta Yorsh <[email protected]> Date: Tue Dec 31 10:42:37 2024 +0000 ASR 64-bit lane not available in sse instruction (#3413) commit 8b99545 Author: Thomas Del Vecchio <[email protected]> Date: Mon Dec 30 14:26:48 2024 -0500 Fix case where parser drops attributes in packed module types. (#3262) * Demonstrate dropped attributes in test. Signed-off-by: Thomas Del Vecchio <[email protected]> * Syntax error on misplaced attribute in packed module types. Signed-off-by: Thomas Del Vecchio <[email protected]> --------- Signed-off-by: Thomas Del Vecchio <[email protected]> commit fe97beb Author: Aspen Smith <[email protected]> Date: Sat Dec 28 11:47:55 2024 -0500 Add attributes to (unsafely) skip jkind check (#3385) * Add attributes to (unsafely) skip jkind check Add a pair of attributes, [@@unsafe_allow_any_kind_in_intf] and [@@unsafe_allow_any_kind_in_impl], which if set on both the impl and the intf respectively, skip checking the jkind of the type in a signature against the jkind of the type in a struct entirely. This is a more-selective version of the `--allow-illegal-crossing` flag, and likely eventually subsumes it. Signed-off-by: Aspen Smith <[email protected]> * Emit a warning when unsafe_allow_any_kind is added unnecessarily Note that this is /only/ done if the attribute is set in both signatures but not used - also this is a little over-sensitive (sadly) since this is done during sigature inclusion too. A new test covers the over-sensitivity. Signed-off-by: Aspen Smith <[email protected]> --------- Signed-off-by: Aspen Smith <[email protected]> commit 862ced2 Author: dkalinichenko-js <[email protected]> Date: Thu Dec 26 15:20:06 2024 -0500 Add `Variant_with_null` and `Null` variant constructors (#2870) * `Variant_with_null` * `Null` tagged constructors * precise value kind * No private re-export --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit 1eeed87 Author: Mark Shinwell <[email protected]> Date: Thu Dec 26 15:00:49 2024 +0000 Revert "Implement %makearray_dynamic{,_uninit}" (#3408) Revert "Implement %makearray_dynamic{,_uninit} (#3317)" This reverts commit 6da1dde. commit 2358e09 Author: Mark Shinwell <[email protected]> Date: Tue Dec 24 15:54:06 2024 +0000 Upload core files etc upon CI failure (#3405) commit dc6e300 Author: Xavier Clerc <[email protected]> Date: Tue Dec 24 10:06:20 2024 +0100 Fix IRC and Greedy allocators (arm64) (#3388) commit 65c0596 Author: Max Slater <[email protected]> Date: Mon Dec 23 16:49:37 2024 -0500 Convert float32 constants to int32 in first stage compiler (#3371) * convert float32 constants in bytecode output * edit * edit * blocks + test * compare against float64 constants * tests check proper custom ops --------- Co-authored-by: Diana Kalinichenko <[email protected]>
commit 1b4978a Merge: 80b7111 c7361a4 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 14:51:42 2025 -0500 Merge branch 'refactor-cmm-for-more-integer-widths' into cmm-scalar-type commit c7361a4 Merge: 0052ebb d0e8914 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 14:45:04 2025 -0500 Merge branch 'cmm-refactor-unboxed-fields' into refactor-cmm-for-more-integer-widths commit d0e8914 Merge: abcd725 dd1d945 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 14:22:34 2025 -0500 Merge branch 'generalize-cmm-helpers-interface' into cmm-refactor-unboxed-fields commit dd1d945 Author: Jacob Van Buren <[email protected]> Date: Tue Jan 21 13:10:36 2025 -0500 sped up division tests commit 958b4d3 Author: Jacob Van Buren <[email protected]> Date: Tue Jan 21 12:36:32 2025 -0500 no specialize commit 7033cfd Author: Jacob Van Buren <[email protected]> Date: Tue Jan 21 11:40:59 2025 -0500 updated division tests commit c5ab6a2 Author: Jacob Van Buren <[email protected]> Date: Tue Jan 21 10:59:37 2025 -0500 moved comment commit f1a071b Author: Jacob Van Buren <[email protected]> Date: Tue Jan 21 10:58:42 2025 -0500 re-added comment with disclaimer for d>1 commit 1a44076 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 17 15:44:03 2025 -0500 testing division by constant optimzation commit d54b895 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 17 15:40:56 2025 -0500 responded to feedback commit afe40f1 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 16 15:06:12 2025 -0500 updated signed division by a negative constant to use the algorithm suggested in the referenced book commit eff8c7e Author: Jacob Van Buren <[email protected]> Date: Thu Jan 16 13:01:05 2025 -0500 responded to feedback commit 80b7111 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 3 11:03:21 2025 -0500 Added `Cmm_helpers.Scalar_type`. This provides utilities for converting between integers types of different widths and signedness. This is in preparation for adding unboxed small integer types. commit abcd725 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 31 11:00:07 2024 -0500 unified unboxed field getters/setters. This will be useful once we have unboxed integers of different sizes commit 0052ebb Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 15:40:34 2025 -0500 Squashed commit of the following: commit d1acc48 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:53:51 2025 -0500 Squashed commit of the following: commit c9d7aa6 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:49:45 2025 -0500 cleaned up div/mod commit 4d9f427 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:45:42 2025 -0500 address feedback and simplify division interface commit 625a416 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 31 11:00:07 2024 -0500 unified unboxed field getters/setters. This will be useful once we have unboxed integers of different sizes commit 37b4e82 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 31 09:40:53 2024 -0500 formatted commit 1746aa8 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 30 11:37:33 2024 -0500 updated cmm_helpers interface to be more amenable to adding other integer sizes commit 9e7c322 Author: Greta Yorsh <[email protected]> Date: Tue Dec 31 12:01:21 2024 +0000 Separate test for vectorizer in the CI (#3414) * Separate test for vectorizer in the CI * Remove vectorizer from "gi" CI job commit e1a5fe4 Author: Xavier Clerc <[email protected]> Date: Tue Dec 31 10:54:43 2024 +0000 CI: simplify the regalloc jobs (#3389) commit ab229fc Author: Greta Yorsh <[email protected]> Date: Tue Dec 31 10:42:37 2024 +0000 ASR 64-bit lane not available in sse instruction (#3413) commit 8b99545 Author: Thomas Del Vecchio <[email protected]> Date: Mon Dec 30 14:26:48 2024 -0500 Fix case where parser drops attributes in packed module types. (#3262) * Demonstrate dropped attributes in test. Signed-off-by: Thomas Del Vecchio <[email protected]> * Syntax error on misplaced attribute in packed module types. Signed-off-by: Thomas Del Vecchio <[email protected]> --------- Signed-off-by: Thomas Del Vecchio <[email protected]> commit fe97beb Author: Aspen Smith <[email protected]> Date: Sat Dec 28 11:47:55 2024 -0500 Add attributes to (unsafely) skip jkind check (#3385) * Add attributes to (unsafely) skip jkind check Add a pair of attributes, [@@unsafe_allow_any_kind_in_intf] and [@@unsafe_allow_any_kind_in_impl], which if set on both the impl and the intf respectively, skip checking the jkind of the type in a signature against the jkind of the type in a struct entirely. This is a more-selective version of the `--allow-illegal-crossing` flag, and likely eventually subsumes it. Signed-off-by: Aspen Smith <[email protected]> * Emit a warning when unsafe_allow_any_kind is added unnecessarily Note that this is /only/ done if the attribute is set in both signatures but not used - also this is a little over-sensitive (sadly) since this is done during sigature inclusion too. A new test covers the over-sensitivity. Signed-off-by: Aspen Smith <[email protected]> --------- Signed-off-by: Aspen Smith <[email protected]> commit 862ced2 Author: dkalinichenko-js <[email protected]> Date: Thu Dec 26 15:20:06 2024 -0500 Add `Variant_with_null` and `Null` variant constructors (#2870) * `Variant_with_null` * `Null` tagged constructors * precise value kind * No private re-export --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit 1eeed87 Author: Mark Shinwell <[email protected]> Date: Thu Dec 26 15:00:49 2024 +0000 Revert "Implement %makearray_dynamic{,_uninit}" (#3408) Revert "Implement %makearray_dynamic{,_uninit} (#3317)" This reverts commit 6da1dde. commit 2358e09 Author: Mark Shinwell <[email protected]> Date: Tue Dec 24 15:54:06 2024 +0000 Upload core files etc upon CI failure (#3405) commit dc6e300 Author: Xavier Clerc <[email protected]> Date: Tue Dec 24 10:06:20 2024 +0100 Fix IRC and Greedy allocators (arm64) (#3388) commit 65c0596 Author: Max Slater <[email protected]> Date: Mon Dec 23 16:49:37 2024 -0500 Convert float32 constants to int32 in first stage compiler (#3371) * convert float32 constants in bytecode output * edit * edit * blocks + test * compare against float64 constants * tests check proper custom ops --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit c9d7aa6 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:49:45 2025 -0500 cleaned up div/mod commit 4d9f427 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:45:42 2025 -0500 address feedback and simplify division interface commit 37b4e82 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 31 09:40:53 2024 -0500 formatted commit 1746aa8 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 30 11:37:33 2024 -0500 updated cmm_helpers interface to be more amenable to adding other integer sizes commit 9e7c322 Author: Greta Yorsh <[email protected]> Date: Tue Dec 31 12:01:21 2024 +0000 Separate test for vectorizer in the CI (#3414) * Separate test for vectorizer in the CI * Remove vectorizer from "gi" CI job commit e1a5fe4 Author: Xavier Clerc <[email protected]> Date: Tue Dec 31 10:54:43 2024 +0000 CI: simplify the regalloc jobs (#3389) commit ab229fc Author: Greta Yorsh <[email protected]> Date: Tue Dec 31 10:42:37 2024 +0000 ASR 64-bit lane not available in sse instruction (#3413) commit 8b99545 Author: Thomas Del Vecchio <[email protected]> Date: Mon Dec 30 14:26:48 2024 -0500 Fix case where parser drops attributes in packed module types. (#3262) * Demonstrate dropped attributes in test. Signed-off-by: Thomas Del Vecchio <[email protected]> * Syntax error on misplaced attribute in packed module types. Signed-off-by: Thomas Del Vecchio <[email protected]> --------- Signed-off-by: Thomas Del Vecchio <[email protected]> commit fe97beb Author: Aspen Smith <[email protected]> Date: Sat Dec 28 11:47:55 2024 -0500 Add attributes to (unsafely) skip jkind check (#3385) * Add attributes to (unsafely) skip jkind check Add a pair of attributes, [@@unsafe_allow_any_kind_in_intf] and [@@unsafe_allow_any_kind_in_impl], which if set on both the impl and the intf respectively, skip checking the jkind of the type in a signature against the jkind of the type in a struct entirely. This is a more-selective version of the `--allow-illegal-crossing` flag, and likely eventually subsumes it. Signed-off-by: Aspen Smith <[email protected]> * Emit a warning when unsafe_allow_any_kind is added unnecessarily Note that this is /only/ done if the attribute is set in both signatures but not used - also this is a little over-sensitive (sadly) since this is done during sigature inclusion too. A new test covers the over-sensitivity. Signed-off-by: Aspen Smith <[email protected]> --------- Signed-off-by: Aspen Smith <[email protected]> commit 862ced2 Author: dkalinichenko-js <[email protected]> Date: Thu Dec 26 15:20:06 2024 -0500 Add `Variant_with_null` and `Null` variant constructors (#2870) * `Variant_with_null` * `Null` tagged constructors * precise value kind * No private re-export --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit 1eeed87 Author: Mark Shinwell <[email protected]> Date: Thu Dec 26 15:00:49 2024 +0000 Revert "Implement %makearray_dynamic{,_uninit}" (#3408) Revert "Implement %makearray_dynamic{,_uninit} (#3317)" This reverts commit 6da1dde. commit 2358e09 Author: Mark Shinwell <[email protected]> Date: Tue Dec 24 15:54:06 2024 +0000 Upload core files etc upon CI failure (#3405) commit dc6e300 Author: Xavier Clerc <[email protected]> Date: Tue Dec 24 10:06:20 2024 +0100 Fix IRC and Greedy allocators (arm64) (#3388) commit 65c0596 Author: Max Slater <[email protected]> Date: Mon Dec 23 16:49:37 2024 -0500 Convert float32 constants to int32 in first stage compiler (#3371) * convert float32 constants in bytecode output * edit * edit * blocks + test * compare against float64 constants * tests check proper custom ops --------- Co-authored-by: Diana Kalinichenko <[email protected]>
#Squashed commit of the following: #commit c9d7aa6 #Author: Jacob Van Buren <[email protected]> #Date: Thu Jan 2 14:49:45 2025 -0500 #cleaned up div/mod #commit 4d9f427 #Author: Jacob Van Buren <[email protected]> #Date: Thu Jan 2 14:45:42 2025 -0500 #address feedback and simplify division interface #unified unboxed field getters/setters. This will be useful once we have unboxed integers of different sizes #formatted #updated cmm_helpers interface to be more amenable to adding other integer sizes #Separate test for vectorizer in the CI (#3414) #* Separate test for vectorizer in the CI #* Remove vectorizer from "gi" CI job #CI: simplify the regalloc jobs (#3389) #ASR 64-bit lane not available in sse instruction (#3413) #Fix case where parser drops attributes in packed module types. (#3262) #* Demonstrate dropped attributes in test. #Signed-off-by: Thomas Del Vecchio <[email protected]> #* Syntax error on misplaced attribute in packed module types. #Signed-off-by: Thomas Del Vecchio <[email protected]> #--------- #Signed-off-by: Thomas Del Vecchio <[email protected]> #Add attributes to (unsafely) skip jkind check (#3385) #* Add attributes to (unsafely) skip jkind check #Add a pair of attributes, [@@unsafe_allow_any_kind_in_intf] and #[@@unsafe_allow_any_kind_in_impl], which if set on both the impl and the intf #respectively, skip checking the jkind of the type in a signature against the #jkind of the type in a struct entirely. This is a more-selective version of the #`--allow-illegal-crossing` flag, and likely eventually subsumes it. #Signed-off-by: Aspen Smith <[email protected]> #* Emit a warning when unsafe_allow_any_kind is added unnecessarily #Note that this is /only/ done if the attribute is set in both signatures but not #used - also this is a little over-sensitive (sadly) since this is done during #sigature inclusion too. A new test covers the over-sensitivity. #Signed-off-by: Aspen Smith <[email protected]> #--------- #Signed-off-by: Aspen Smith <[email protected]> #Add `Variant_with_null` and `Null` variant constructors (#2870) #* `Variant_with_null` #* `Null` tagged constructors #* precise value kind #* No private re-export #--------- #Co-authored-by: Diana Kalinichenko <[email protected]> #Revert "Implement %makearray_dynamic{,_uninit}" (#3408) #Revert "Implement %makearray_dynamic{,_uninit} (#3317)" #This reverts commit 6da1dde. #Upload core files etc upon CI failure (#3405) #Fix IRC and Greedy allocators (arm64) (#3388) #Convert float32 constants to int32 in first stage compiler (#3371) #* convert float32 constants in bytecode output #* edit #* edit #* blocks + test #* compare against float64 constants #* tests check proper custom ops #--------- #Co-authored-by: Diana Kalinichenko <[email protected]> Squashed commit of the following: commit 16f1b23 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 15:25:23 2025 -0500 Squashed commit of the following: commit 7c5c7f0 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 15:24:10 2025 -0500 Squashed commit of the following: commit a53391d Author: Max Slater <[email protected]> Date: Wed Jan 22 13:53:02 2025 -0500 Rename `atomic_cas`/`Compare_and_swap` (#3491) commit 92b327c Author: Max Slater <[email protected]> Date: Tue Jan 21 14:18:56 2025 -0500 Additional operations for int atomics (#3490) commit 38e792c Author: Luke Maurer <[email protected]> Date: Tue Jan 21 17:09:23 2025 +0000 Support `-open Foo` where `Foo` is parameterised (#3489) The command line ``` ocamlopt -open Foo -parameter P -c bar.ml ``` should be fine, even if `Foo` is itself parameterised by `P`: as usual, we compile `bar.ml` as if it began with `open! Foo`, and by the subset rule, `Bar` can refer to `Foo` because it takes at least the same parameters. Unfortunately, currently we process `-open` before `-parameter`, so when we go to check the implicit reference to `Foo`, we think there are no parameters, and we report an error. (Confusingly, the error suggests that the user add `-parameter P` to the command line.) The fix is simple: move the code that processes `-parameter` earlier so that the initial environment is constructed with the parameters already available. commit 784dc96 Author: Greta Yorsh <[email protected]> Date: Tue Jan 21 14:07:41 2025 +0000 Rename [emit.mlp] to [emit.ml] on amd64 (#3488) commit f3b720a Author: Zesen Qian <[email protected]> Date: Tue Jan 21 10:35:35 2025 +0000 Module aliases save locks instead of walking them immediately (#3398) commit 389a7c3 Author: Nick Barnes <[email protected]> Date: Mon Jan 20 17:55:51 2025 +0000 Add OCAMLRUNPARAM d= parameter for max # domains (#3487) Allow maximum number of domains to be specified as a OCAMLRUNPARAM parameter. (cherry picked from commit f92715f1044aea30ca97e497653c883578f91fe6) Co-authored-by: KC Sivaramakrishnan <[email protected]> commit 63767d7 Author: Nick Barnes <[email protected]> Date: Mon Jan 20 17:45:30 2025 +0000 Add caml_runtime_parameters back (#3468) Add caml_runtime_parameters back. commit 5e9975e Author: Greta Yorsh <[email protected]> Date: Mon Jan 20 17:15:15 2025 +0000 Emit atomic compare and exchange (#3486) commit a9821e8 Author: Basile Clément <[email protected]> Date: Mon Jan 20 15:36:09 2025 +0100 Make patricia trees big-endian (#3438) This patch switches up the implementation of the `Patricia_tree` module from little-endian to big-endian, with the main motivation to be able to implement in-order traversal. The `caml_int_clz_tagged_to_untagged` and `caml_int_tagged_to_tagged` C stubs are recognized and replaced with the `clz` instruction when compiling with flambda2, so they are only used in the boot compiler. commit b8a9789 Author: Leo White <[email protected]> Date: Fri Jan 17 13:35:19 2025 +0000 Generate specific instructions for atomics on immediates (#3477) * Generate specific instructions for atomics on immediates * Fix formatting commit 7b93134 Author: Greta Yorsh <[email protected]> Date: Fri Jan 17 09:30:30 2025 +0000 Vectorizer: add tests (#3456) * Add tests * Disable ocamlformat on unboxed tests * Increase -vectorize-max-block-size for tests * Fix asssertion failure when vectorizing unboxed int32 * Disable float32 on arm64 (not yet implemented) * improve gen_dune.ml for the vectorizer tests Co-authored-by: Xavier Clerc <[email protected]> commit 6379678 Author: Mark Shinwell <[email protected]> Date: Thu Jan 16 16:08:29 2025 +0000 Add "-ocamlrunparam" linker flag (#3483) commit f7b2cbe Author: Xavier Clerc <[email protected]> Date: Thu Jan 16 15:25:28 2025 +0000 Bump the version of `actions/upload-artifact` (#3474) * Bump the version of actions/upload-artifact. * Ensure artifact names are unique. * To trigger CI. * Try with commit hash. commit afb8a55 Author: Mark Shinwell <[email protected]> Date: Thu Jan 16 14:03:37 2025 +0000 Move two macOS CI controllers to runtime5 (#3482) commit aae5c40 Author: Mark Shinwell <[email protected]> Date: Thu Jan 16 13:50:34 2025 +0000 Fix error in caml_get_init_stack_wsize (#3481) commit 525868c Author: dkalinichenko-js <[email protected]> Date: Wed Jan 15 17:47:30 2025 -0500 Use null pointers for `or_null` (#3267) * runtime changes * runtime4 changes * Change `CODE_UNBOXED_INT64` and `CODE_NULL` * make `Is_block` an inline function * redefine `Is_long` * fix * Change `CODE_UNBOXED_INT64` back * optimize `Is_block`/`Is_long` * `null_tag` for `caml_obj_tag` * consistent naming * slightly more reassuring comment * `inline` is unnecessary and might break `#define inline` * optimization incorrect in presence of nulls * Constructors and pattern-matching * Bytecode compilation * `or_null` is `Variant_or_null` * Accept tests * Runtime tests * Delete obsolete or_null test --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit 9796b21 Author: dkalinichenko-js <[email protected]> Date: Wed Jan 15 17:47:13 2025 -0500 Runtime changes for `or_null` (#3265) * runtime changes * runtime4 changes * Change `CODE_UNBOXED_INT64` and `CODE_NULL` * make `Is_block` an inline function * redefine `Is_long` * fix * Change `CODE_UNBOXED_INT64` back * optimize `Is_block`/`Is_long` * `null_tag` for `caml_obj_tag` * consistent naming * slightly more reassuring comment * `inline` is unnecessary and might break `#define inline` * optimization incorrect in presence of nulls --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit df4a6e0 Author: Chris Casinghino <[email protected]> Date: Wed Jan 15 13:08:53 2025 -0500 Bump magic numbers for 5.2.0minus-5 (#3478) commit d1c8d85 Author: Mark Shinwell <[email protected]> Date: Wed Jan 15 16:44:39 2025 +0000 Peek and poke (#3309) commit f8caad4 Author: Greta Yorsh <[email protected]> Date: Wed Jan 15 16:00:39 2025 +0000 Vectorizer: xmm register can hold ocaml values (#3455) * Add [Valx2] to [Cmm.machtype_component] * Vectorizer generates [Valx2] * Record live offsets of [Valx2] in the frametable For runtime4, xmm register are below [gc_regs], use negative offsets. * Move [types_are_compatible] from [Reg] to [Proc] This information has to be in sync with register classes, stack slock classes, and emit for move instructions. commit 34a7873 Author: Zesen Qian <[email protected]> Date: Wed Jan 15 13:13:18 2025 +0000 Improve coherence of modality zapping (#3462) commit 1a6a9d3 Author: Mark Shinwell <[email protected]> Date: Wed Jan 15 12:06:24 2025 +0000 Fix caml_obj_with_tag (#3465) commit bc5110a Author: Nick Barnes <[email protected]> Date: Wed Jan 15 11:52:25 2025 +0000 Reset the pacing of major collection after any synchronous major GC (#3463) Reset the pacing of major collection at the end of any synchronous major collection. commit 9faf700 Author: Mark Shinwell <[email protected]> Date: Wed Jan 15 11:32:59 2025 +0000 Remove remnants of caml_obj_truncate (#3469) commit ff9430b Author: Luke Maurer <[email protected]> Date: Wed Jan 15 11:31:22 2025 +0000 Mangle instance symbol names using `____` rather than `___` (#3472) Apparently there are libraries around that have names ending in single underscores, leading to ambiguous symbol names if we use triple underscores to delimit instances. Other choices are possible but this PR opts for newly-developed quadruple-underscore technology. commit 9984700 Author: Vincent Laviron <[email protected]> Date: Wed Jan 15 11:03:43 2025 +0100 Port upstream PRs 11542 and 12505 to runtime4 (#3431) fix #11482: random crash in large closure allocation (#11542) Co-authored-by: Damien Doligez <[email protected]> commit 058c4db Author: Mark Shinwell <[email protected]> Date: Tue Jan 14 22:19:32 2025 +0000 Enable all makearray_dynamic tests on runtime4 (#3470) commit ba15ee5 Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 20:08:31 2025 +0000 Vectorize [Ifloatarithmem] (#3452) * Add [Isimd_mem] to [Arch.Specific] and emit [addpd] with memory arg and similar instructions * Vectorize [Ifloatarithmem] When the memory alignment is known to be 128-bit (currently, never) emits [addpd], otherwise emits a vector load followed by an arithmetic instruction. commit 9755b39 Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 18:57:39 2025 +0000 Fix CI failure (#3473) commit 859949c Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 17:56:53 2025 +0000 Vectorize [Specific.Istore_int] (#3450) Used for array initialization (amd64) commit 50f73cb Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 17:38:39 2025 +0000 Do not allow naked pointers (remove configure option) (#3448) commit b7c8ad3 Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 17:07:39 2025 +0000 Vectorizer refactor heuristic for select_and_join (#3449) * Refactor [Block.find_last_instruction], cache [Computation.last_pos] * Improve heuristics in [Computation.select_and_join] using [last_pos] commit 22f81d8 Author: Mark Shinwell <[email protected]> Date: Tue Jan 14 17:00:29 2025 +0000 Fix mistake in conditional for makearray_dynamic array initialization (#3466) commit aaaddfb Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 14:57:17 2025 +0000 Vectorizer: propagate alignment of memory accesses (#3451) Currently it's always 8 but having this argument will help us consider alignment for new vector sequences. commit b15d44e Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 14:55:29 2025 +0000 vectorizer: improve debug printout (#3445) commit 6239156 Author: Stephen Dolan <[email protected]> Date: Tue Jan 14 13:43:21 2025 +0000 Better hugepage alignment of stacks and heap (#3384) Co-authored-by: Mark Shinwell <[email protected]> commit 677d79a Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 13:23:56 2025 +0000 Backend dune copy and directive (#3467) * Remove unused line directive from [dune] * Use [copy_files#] to copy files from ARCH and add a file directive * Remove existing file directives commit 314b131 Author: Stephen Dolan <[email protected]> Date: Tue Jan 14 11:58:41 2025 +0000 Bound stack size in expect tests (#3439) commit 02774f8 Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 10:52:50 2025 +0000 all_deps is reflexive (#3464) commit 117a0a0 Author: Stephen Dolan <[email protected]> Date: Tue Jan 14 10:44:15 2025 +0000 Stub implementation of new custom memory API (#3437) commit 4f30aac Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 10:31:48 2025 +0000 Vectorizer bug fix: address argument of memory operations (#3446) Fix bug: use address arg of the first instruction in a group ... not the last! Only matters for arrays at the moment, where the address offset argument is not always the same register. commit cc91e2b Author: Vincent Laviron <[email protected]> Date: Tue Jan 14 11:26:59 2025 +0100 caml_update_dummy: fail on closure blocks (#3429) commit 17a01a9 Author: Mark Shinwell <[email protected]> Date: Tue Jan 14 10:07:39 2025 +0000 Implement %array_element_size_in_bytes (#3367) Co-authored-by: Chris Casinghino <[email protected]> commit b487f71 Author: Greta Yorsh <[email protected]> Date: Mon Jan 13 14:05:25 2025 +0000 Runtime: make types explicit when reading [gc_regs] (#3453) Runtime4: make types explicit when reading [gc_regs]. commit 67e6eb3 Author: Max Slater <[email protected]> Date: Fri Jan 10 16:17:32 2025 -0500 More capsule API updates (#3440) commit c7f573f Author: Mark Shinwell <[email protected]> Date: Fri Jan 10 18:26:15 2025 +0000 Reinstate %makearray_dynamic (#3460) commit e1e4fb8 Author: Zesen Qian <[email protected]> Date: Fri Jan 10 16:15:48 2025 +0000 `portable` lazy allows `nonportable` thunk (#3436) * portable lazy allows nonportable thunk * add documentation * improve documentation * add examples * improve comments in test * say "not stronger" commit c30ec74 Author: Ryan Tjoa <[email protected]> Date: Fri Jan 10 10:41:08 2025 -0500 Check for type recursion without boxing (#3407) commit cb290c5 Author: Greta Yorsh <[email protected]> Date: Fri Jan 10 11:00:32 2025 +0000 Vectorizer: rename New (#3454) Rename New to New_vec128 to make the type clear and distinguish it from the upcoming Valx2 commit bd39e02 Author: Greta Yorsh <[email protected]> Date: Fri Jan 10 10:24:48 2025 +0000 Add function [DLL.for_all_i] (#3442) * Add function [DLL.for_all_i] * Rename to [for_alli] to match existing [mapi] and [iteri] * Remove unused argument of [aux] in [DLL.for_all*] commit c048920 Author: Greta Yorsh <[email protected]> Date: Thu Jan 9 13:16:36 2025 +0000 Cleanup machtype_component size (#3441) Cleanup size_component commit 830d5e7 Author: Greta Yorsh <[email protected]> Date: Thu Jan 9 13:15:59 2025 +0000 Add "dump-vectorize" to OCAMLPARAM (#3443) Add [dump-vectorize] to OCAMLPARAM for debugging commit 157c95e Author: Greta Yorsh <[email protected]> Date: Thu Jan 9 13:15:33 2025 +0000 Vectorizer bug fix: 128-bit vectorized constant (#3447) Fix bug: 128-bit vectorized constant high/low correctly ordered commit 648155d Author: Greta Yorsh <[email protected]> Date: Thu Jan 9 13:09:48 2025 +0000 Add [Printreg.reglist] for debugging (#3444) commit d40254f Author: Stephen Dolan <[email protected]> Date: Tue Jan 7 21:25:45 2025 +0000 Move two misplaced files (#3435) commit 4a0bb69 Author: dkalinichenko-js <[email protected]> Date: Tue Jan 7 15:34:27 2025 -0500 `Yielding` mode axis (#3283) * `Yielding` mode axis * Tests * fix printing --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit 00275e0 Author: Max Slater <[email protected]> Date: Mon Jan 6 13:05:58 2025 -0500 Unbox_float32 should check custom ops name (#3433) check sym name commit 2e49469 Author: Max Slater <[email protected]> Date: Mon Jan 6 13:05:03 2025 -0500 Make Capsule preserve wrapped exception backtraces (#3421) * with_password * portable * don't use polymorphic parameters * review * protect encapsulated from other capsule * raise wrapped exceptions with existing backtrace * cr commit 2de23a5 Author: Ryan Tjoa <[email protected]> Date: Mon Jan 6 04:04:29 2025 -0500 Fix CI by using `setup-ocaml` v3 for ocamlformat workflow (#3426) [CI] Use setup-ocaml v3 for ocamlformat workflow commit eada0f1 Author: Ryan Tjoa <[email protected]> Date: Fri Jan 3 21:23:23 2025 -0500 Move unboxed records to stable (#3419) commit a273a33 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 3 11:17:18 2025 -0500 Changed make fmt to run in parallel (#3422) changed make fmt to run in parallel commit 4de5a72 Author: Max Slater <[email protected]> Date: Thu Jan 2 20:10:08 2025 -0500 Add `Capsule.with_password` (#3420) commit b084ff3 Author: Greta Yorsh <[email protected]> Date: Wed Jan 1 15:34:11 2025 +0000 vectorizer: new test (#3418) Add test for register compatiblity commit 5549015 Author: Greta Yorsh <[email protected]> Date: Tue Dec 31 17:20:56 2024 +0000 Vectorizer: check register compatibility (#3412) Check that registers are compatible when joining computations
…ng between integers types of different widths and signedness. This is in preparation for adding unboxed small integer types. # Squashed commit of the following: # commit c9d7aa6 # Author: Jacob Van Buren <[email protected]> # Date: Thu Jan 2 14:49:45 2025 -0500 # cleaned up div/mod # commit 4d9f427 # Author: Jacob Van Buren <[email protected]> # Date: Thu Jan 2 14:45:42 2025 -0500 # address feedback and simplify division interface # unified unboxed field getters/setters. This will be useful once we have unboxed integers of different sizes # formatted # updated cmm_helpers interface to be more amenable to adding other integer sizes # Separate test for vectorizer in the CI (#3414) # * Separate test for vectorizer in the CI # * Remove vectorizer from "gi" CI job # CI: simplify the regalloc jobs (#3389) # ASR 64-bit lane not available in sse instruction (#3413) # Fix case where parser drops attributes in packed module types. (#3262) # * Demonstrate dropped attributes in test. # Signed-off-by: Thomas Del Vecchio <[email protected]> # * Syntax error on misplaced attribute in packed module types. # Signed-off-by: Thomas Del Vecchio <[email protected]> # --------- # Signed-off-by: Thomas Del Vecchio <[email protected]> # Add attributes to (unsafely) skip jkind check (#3385) # * Add attributes to (unsafely) skip jkind check # Add a pair of attributes, [@@unsafe_allow_any_kind_in_intf] and # [@@unsafe_allow_any_kind_in_impl], which if set on both the impl and the intf # respectively, skip checking the jkind of the type in a signature against the # jkind of the type in a struct entirely. This is a more-selective version of the # `--allow-illegal-crossing` flag, and likely eventually subsumes it. # Signed-off-by: Aspen Smith <[email protected]> # * Emit a warning when unsafe_allow_any_kind is added unnecessarily # Note that this is /only/ done if the attribute is set in both signatures but not # used - also this is a little over-sensitive (sadly) since this is done during # sigature inclusion too. A new test covers the over-sensitivity. # Signed-off-by: Aspen Smith <[email protected]> # --------- # Signed-off-by: Aspen Smith <[email protected]> # Add `Variant_with_null` and `Null` variant constructors (#2870) # * `Variant_with_null` # * `Null` tagged constructors # * precise value kind # * No private re-export # --------- # Co-authored-by: Diana Kalinichenko <[email protected]> # Revert "Implement %makearray_dynamic{,_uninit}" (#3408) # Revert "Implement %makearray_dynamic{,_uninit} (#3317)" # This reverts commit 6da1dde. # Upload core files etc upon CI failure (#3405) # Fix IRC and Greedy allocators (arm64) (#3388) # Convert float32 constants to int32 in first stage compiler (#3371) # * convert float32 constants in bytecode output # * edit # * edit # * blocks + test # * compare against float64 constants # * tests check proper custom ops # --------- # Co-authored-by: Diana Kalinichenko <[email protected]>
commit a093d3b Author: Jacob Van Buren <[email protected]> Date: Fri Jan 24 19:10:54 2025 -0500 removed old commented code commit d090c6d Author: Jacob Van Buren <[email protected]> Date: Fri Jan 24 19:09:40 2025 -0500 small fixes commit 9c4fa5e Author: Jacob Van Buren <[email protected]> Date: Fri Jan 24 18:58:05 2025 -0500 translprim fixed commit 8b5a935 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 24 17:39:04 2025 -0500 progress commit 8c05bec Author: Jacob Van Buren <[email protected]> Date: Fri Jan 24 13:07:59 2025 -0500 checkpoint before moving modules commit 933e993 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 24 12:34:34 2025 -0500 checkpoint before 2 type params commit 8010fb5 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 24 11:16:47 2025 -0500 introduced naked_immediate to lambda commit 6a616fd Author: Jacob Van Buren <[email protected]> Date: Thu Jan 23 18:17:15 2025 -0500 push commit 08ec6bc Author: Jacob Van Buren <[email protected]> Date: Thu Jan 23 18:09:45 2025 -0500 unifying scalar primitives commit abe4cef Author: Jacob Van Buren <[email protected]> Date: Thu Jan 23 14:58:18 2025 -0500 div/rem -> sdiv/srem commit 12c5e9f Author: Jacob Van Buren <[email protected]> Date: Thu Jan 23 14:41:54 2025 -0500 fix tests commit 902ab43 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 23 13:50:07 2025 -0500 fixed flambda bug commit a8a64ae Author: Jacob Van Buren <[email protected]> Date: Thu Jan 23 13:16:50 2025 -0500 updated typing and started changing int16_u commit 37a8262 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 23 12:55:06 2025 -0500 removed targetint from lambda commit 1eed0a1 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 23 12:46:38 2025 -0500 added bytecode compilation commit d64f310 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 23 10:24:27 2025 -0500 fixed up commit 2aa2843 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 14:07:40 2025 -0500 added primitives, but didn't update backend yet commit dc289dd Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 11:49:09 2025 -0500 started adding primitives commit 4950d06 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 17:32:27 2025 -0500 fixed up unboxing proofs to reflect that "unboxed" int8/16 are just untagged immediates commit 9786426 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 17:14:53 2025 -0500 renamed prove_is_a_boxed_number commit 4e97122 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 17:08:31 2025 -0500 fixed bbswap commit 4d6c02f Merge: 1e40897 39828c2 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 16:52:01 2025 -0500 Merge branch 'cmm-scalar-type' into unboxed-small-ints-tryagain commit 1e40897 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 16:30:20 2025 -0500 formatted commit 8ad12b4 Merge: 98ac389 a53391d Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 16:29:00 2025 -0500 Merge branch 'main' into unboxed-small-ints-tryagain commit 39828c2 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 15:27:00 2025 -0500 Squashed commit of the following: commit 34a5e6a Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 15:26:17 2025 -0500 Squashed commit of the following: commit 16f1b23 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 15:25:23 2025 -0500 Squashed commit of the following: commit 7c5c7f0 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 15:24:10 2025 -0500 Squashed commit of the following: commit a53391d Author: Max Slater <[email protected]> Date: Wed Jan 22 13:53:02 2025 -0500 Rename `atomic_cas`/`Compare_and_swap` (#3491) commit 92b327c Author: Max Slater <[email protected]> Date: Tue Jan 21 14:18:56 2025 -0500 Additional operations for int atomics (#3490) commit 38e792c Author: Luke Maurer <[email protected]> Date: Tue Jan 21 17:09:23 2025 +0000 Support `-open Foo` where `Foo` is parameterised (#3489) The command line ``` ocamlopt -open Foo -parameter P -c bar.ml ``` should be fine, even if `Foo` is itself parameterised by `P`: as usual, we compile `bar.ml` as if it began with `open! Foo`, and by the subset rule, `Bar` can refer to `Foo` because it takes at least the same parameters. Unfortunately, currently we process `-open` before `-parameter`, so when we go to check the implicit reference to `Foo`, we think there are no parameters, and we report an error. (Confusingly, the error suggests that the user add `-parameter P` to the command line.) The fix is simple: move the code that processes `-parameter` earlier so that the initial environment is constructed with the parameters already available. commit 784dc96 Author: Greta Yorsh <[email protected]> Date: Tue Jan 21 14:07:41 2025 +0000 Rename [emit.mlp] to [emit.ml] on amd64 (#3488) commit f3b720a Author: Zesen Qian <[email protected]> Date: Tue Jan 21 10:35:35 2025 +0000 Module aliases save locks instead of walking them immediately (#3398) commit 389a7c3 Author: Nick Barnes <[email protected]> Date: Mon Jan 20 17:55:51 2025 +0000 Add OCAMLRUNPARAM d= parameter for max # domains (#3487) Allow maximum number of domains to be specified as a OCAMLRUNPARAM parameter. (cherry picked from commit f92715f1044aea30ca97e497653c883578f91fe6) Co-authored-by: KC Sivaramakrishnan <[email protected]> commit 63767d7 Author: Nick Barnes <[email protected]> Date: Mon Jan 20 17:45:30 2025 +0000 Add caml_runtime_parameters back (#3468) Add caml_runtime_parameters back. commit 5e9975e Author: Greta Yorsh <[email protected]> Date: Mon Jan 20 17:15:15 2025 +0000 Emit atomic compare and exchange (#3486) commit a9821e8 Author: Basile Clément <[email protected]> Date: Mon Jan 20 15:36:09 2025 +0100 Make patricia trees big-endian (#3438) This patch switches up the implementation of the `Patricia_tree` module from little-endian to big-endian, with the main motivation to be able to implement in-order traversal. The `caml_int_clz_tagged_to_untagged` and `caml_int_tagged_to_tagged` C stubs are recognized and replaced with the `clz` instruction when compiling with flambda2, so they are only used in the boot compiler. commit b8a9789 Author: Leo White <[email protected]> Date: Fri Jan 17 13:35:19 2025 +0000 Generate specific instructions for atomics on immediates (#3477) * Generate specific instructions for atomics on immediates * Fix formatting commit 7b93134 Author: Greta Yorsh <[email protected]> Date: Fri Jan 17 09:30:30 2025 +0000 Vectorizer: add tests (#3456) * Add tests * Disable ocamlformat on unboxed tests * Increase -vectorize-max-block-size for tests * Fix asssertion failure when vectorizing unboxed int32 * Disable float32 on arm64 (not yet implemented) * improve gen_dune.ml for the vectorizer tests Co-authored-by: Xavier Clerc <[email protected]> commit 6379678 Author: Mark Shinwell <[email protected]> Date: Thu Jan 16 16:08:29 2025 +0000 Add "-ocamlrunparam" linker flag (#3483) commit f7b2cbe Author: Xavier Clerc <[email protected]> Date: Thu Jan 16 15:25:28 2025 +0000 Bump the version of `actions/upload-artifact` (#3474) * Bump the version of actions/upload-artifact. * Ensure artifact names are unique. * To trigger CI. * Try with commit hash. commit afb8a55 Author: Mark Shinwell <[email protected]> Date: Thu Jan 16 14:03:37 2025 +0000 Move two macOS CI controllers to runtime5 (#3482) commit aae5c40 Author: Mark Shinwell <[email protected]> Date: Thu Jan 16 13:50:34 2025 +0000 Fix error in caml_get_init_stack_wsize (#3481) commit 525868c Author: dkalinichenko-js <[email protected]> Date: Wed Jan 15 17:47:30 2025 -0500 Use null pointers for `or_null` (#3267) * runtime changes * runtime4 changes * Change `CODE_UNBOXED_INT64` and `CODE_NULL` * make `Is_block` an inline function * redefine `Is_long` * fix * Change `CODE_UNBOXED_INT64` back * optimize `Is_block`/`Is_long` * `null_tag` for `caml_obj_tag` * consistent naming * slightly more reassuring comment * `inline` is unnecessary and might break `#define inline` * optimization incorrect in presence of nulls * Constructors and pattern-matching * Bytecode compilation * `or_null` is `Variant_or_null` * Accept tests * Runtime tests * Delete obsolete or_null test --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit 9796b21 Author: dkalinichenko-js <[email protected]> Date: Wed Jan 15 17:47:13 2025 -0500 Runtime changes for `or_null` (#3265) * runtime changes * runtime4 changes * Change `CODE_UNBOXED_INT64` and `CODE_NULL` * make `Is_block` an inline function * redefine `Is_long` * fix * Change `CODE_UNBOXED_INT64` back * optimize `Is_block`/`Is_long` * `null_tag` for `caml_obj_tag` * consistent naming * slightly more reassuring comment * `inline` is unnecessary and might break `#define inline` * optimization incorrect in presence of nulls --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit df4a6e0 Author: Chris Casinghino <[email protected]> Date: Wed Jan 15 13:08:53 2025 -0500 Bump magic numbers for 5.2.0minus-5 (#3478) commit d1c8d85 Author: Mark Shinwell <[email protected]> Date: Wed Jan 15 16:44:39 2025 +0000 Peek and poke (#3309) commit f8caad4 Author: Greta Yorsh <[email protected]> Date: Wed Jan 15 16:00:39 2025 +0000 Vectorizer: xmm register can hold ocaml values (#3455) * Add [Valx2] to [Cmm.machtype_component] * Vectorizer generates [Valx2] * Record live offsets of [Valx2] in the frametable For runtime4, xmm register are below [gc_regs], use negative offsets. * Move [types_are_compatible] from [Reg] to [Proc] This information has to be in sync with register classes, stack slock classes, and emit for move instructions. commit 34a7873 Author: Zesen Qian <[email protected]> Date: Wed Jan 15 13:13:18 2025 +0000 Improve coherence of modality zapping (#3462) commit 1a6a9d3 Author: Mark Shinwell <[email protected]> Date: Wed Jan 15 12:06:24 2025 +0000 Fix caml_obj_with_tag (#3465) commit bc5110a Author: Nick Barnes <[email protected]> Date: Wed Jan 15 11:52:25 2025 +0000 Reset the pacing of major collection after any synchronous major GC (#3463) Reset the pacing of major collection at the end of any synchronous major collection. commit 9faf700 Author: Mark Shinwell <[email protected]> Date: Wed Jan 15 11:32:59 2025 +0000 Remove remnants of caml_obj_truncate (#3469) commit ff9430b Author: Luke Maurer <[email protected]> Date: Wed Jan 15 11:31:22 2025 +0000 Mangle instance symbol names using `____` rather than `___` (#3472) Apparently there are libraries around that have names ending in single underscores, leading to ambiguous symbol names if we use triple underscores to delimit instances. Other choices are possible but this PR opts for newly-developed quadruple-underscore technology. commit 9984700 Author: Vincent Laviron <[email protected]> Date: Wed Jan 15 11:03:43 2025 +0100 Port upstream PRs 11542 and 12505 to runtime4 (#3431) fix #11482: random crash in large closure allocation (#11542) Co-authored-by: Damien Doligez <[email protected]> commit 058c4db Author: Mark Shinwell <[email protected]> Date: Tue Jan 14 22:19:32 2025 +0000 Enable all makearray_dynamic tests on runtime4 (#3470) commit ba15ee5 Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 20:08:31 2025 +0000 Vectorize [Ifloatarithmem] (#3452) * Add [Isimd_mem] to [Arch.Specific] and emit [addpd] with memory arg and similar instructions * Vectorize [Ifloatarithmem] When the memory alignment is known to be 128-bit (currently, never) emits [addpd], otherwise emits a vector load followed by an arithmetic instruction. commit 9755b39 Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 18:57:39 2025 +0000 Fix CI failure (#3473) commit 859949c Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 17:56:53 2025 +0000 Vectorize [Specific.Istore_int] (#3450) Used for array initialization (amd64) commit 50f73cb Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 17:38:39 2025 +0000 Do not allow naked pointers (remove configure option) (#3448) commit b7c8ad3 Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 17:07:39 2025 +0000 Vectorizer refactor heuristic for select_and_join (#3449) * Refactor [Block.find_last_instruction], cache [Computation.last_pos] * Improve heuristics in [Computation.select_and_join] using [last_pos] commit 22f81d8 Author: Mark Shinwell <[email protected]> Date: Tue Jan 14 17:00:29 2025 +0000 Fix mistake in conditional for makearray_dynamic array initialization (#3466) commit aaaddfb Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 14:57:17 2025 +0000 Vectorizer: propagate alignment of memory accesses (#3451) Currently it's always 8 but having this argument will help us consider alignment for new vector sequences. commit b15d44e Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 14:55:29 2025 +0000 vectorizer: improve debug printout (#3445) commit 6239156 Author: Stephen Dolan <[email protected]> Date: Tue Jan 14 13:43:21 2025 +0000 Better hugepage alignment of stacks and heap (#3384) Co-authored-by: Mark Shinwell <[email protected]> commit 677d79a Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 13:23:56 2025 +0000 Backend dune copy and directive (#3467) * Remove unused line directive from [dune] * Use [copy_files#] to copy files from ARCH and add a file directive * Remove existing file directives commit 314b131 Author: Stephen Dolan <[email protected]> Date: Tue Jan 14 11:58:41 2025 +0000 Bound stack size in expect tests (#3439) commit 02774f8 Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 10:52:50 2025 +0000 all_deps is reflexive (#3464) commit 117a0a0 Author: Stephen Dolan <[email protected]> Date: Tue Jan 14 10:44:15 2025 +0000 Stub implementation of new custom memory API (#3437) commit 4f30aac Author: Greta Yorsh <[email protected]> Date: Tue Jan 14 10:31:48 2025 +0000 Vectorizer bug fix: address argument of memory operations (#3446) Fix bug: use address arg of the first instruction in a group ... not the last! Only matters for arrays at the moment, where the address offset argument is not always the same register. commit cc91e2b Author: Vincent Laviron <[email protected]> Date: Tue Jan 14 11:26:59 2025 +0100 caml_update_dummy: fail on closure blocks (#3429) commit 17a01a9 Author: Mark Shinwell <[email protected]> Date: Tue Jan 14 10:07:39 2025 +0000 Implement %array_element_size_in_bytes (#3367) Co-authored-by: Chris Casinghino <[email protected]> commit b487f71 Author: Greta Yorsh <[email protected]> Date: Mon Jan 13 14:05:25 2025 +0000 Runtime: make types explicit when reading [gc_regs] (#3453) Runtime4: make types explicit when reading [gc_regs]. commit 67e6eb3 Author: Max Slater <[email protected]> Date: Fri Jan 10 16:17:32 2025 -0500 More capsule API updates (#3440) commit c7f573f Author: Mark Shinwell <[email protected]> Date: Fri Jan 10 18:26:15 2025 +0000 Reinstate %makearray_dynamic (#3460) commit e1e4fb8 Author: Zesen Qian <[email protected]> Date: Fri Jan 10 16:15:48 2025 +0000 `portable` lazy allows `nonportable` thunk (#3436) * portable lazy allows nonportable thunk * add documentation * improve documentation * add examples * improve comments in test * say "not stronger" commit c30ec74 Author: Ryan Tjoa <[email protected]> Date: Fri Jan 10 10:41:08 2025 -0500 Check for type recursion without boxing (#3407) commit cb290c5 Author: Greta Yorsh <[email protected]> Date: Fri Jan 10 11:00:32 2025 +0000 Vectorizer: rename New (#3454) Rename New to New_vec128 to make the type clear and distinguish it from the upcoming Valx2 commit bd39e02 Author: Greta Yorsh <[email protected]> Date: Fri Jan 10 10:24:48 2025 +0000 Add function [DLL.for_all_i] (#3442) * Add function [DLL.for_all_i] * Rename to [for_alli] to match existing [mapi] and [iteri] * Remove unused argument of [aux] in [DLL.for_all*] commit c048920 Author: Greta Yorsh <[email protected]> Date: Thu Jan 9 13:16:36 2025 +0000 Cleanup machtype_component size (#3441) Cleanup size_component commit 830d5e7 Author: Greta Yorsh <[email protected]> Date: Thu Jan 9 13:15:59 2025 +0000 Add "dump-vectorize" to OCAMLPARAM (#3443) Add [dump-vectorize] to OCAMLPARAM for debugging commit 157c95e Author: Greta Yorsh <[email protected]> Date: Thu Jan 9 13:15:33 2025 +0000 Vectorizer bug fix: 128-bit vectorized constant (#3447) Fix bug: 128-bit vectorized constant high/low correctly ordered commit 648155d Author: Greta Yorsh <[email protected]> Date: Thu Jan 9 13:09:48 2025 +0000 Add [Printreg.reglist] for debugging (#3444) commit d40254f Author: Stephen Dolan <[email protected]> Date: Tue Jan 7 21:25:45 2025 +0000 Move two misplaced files (#3435) commit 4a0bb69 Author: dkalinichenko-js <[email protected]> Date: Tue Jan 7 15:34:27 2025 -0500 `Yielding` mode axis (#3283) * `Yielding` mode axis * Tests * fix printing --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit 00275e0 Author: Max Slater <[email protected]> Date: Mon Jan 6 13:05:58 2025 -0500 Unbox_float32 should check custom ops name (#3433) check sym name commit 2e49469 Author: Max Slater <[email protected]> Date: Mon Jan 6 13:05:03 2025 -0500 Make Capsule preserve wrapped exception backtraces (#3421) * with_password * portable * don't use polymorphic parameters * review * protect encapsulated from other capsule * raise wrapped exceptions with existing backtrace * cr commit 2de23a5 Author: Ryan Tjoa <[email protected]> Date: Mon Jan 6 04:04:29 2025 -0500 Fix CI by using `setup-ocaml` v3 for ocamlformat workflow (#3426) [CI] Use setup-ocaml v3 for ocamlformat workflow commit eada0f1 Author: Ryan Tjoa <[email protected]> Date: Fri Jan 3 21:23:23 2025 -0500 Move unboxed records to stable (#3419) commit a273a33 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 3 11:17:18 2025 -0500 Changed make fmt to run in parallel (#3422) changed make fmt to run in parallel commit 4de5a72 Author: Max Slater <[email protected]> Date: Thu Jan 2 20:10:08 2025 -0500 Add `Capsule.with_password` (#3420) commit b084ff3 Author: Greta Yorsh <[email protected]> Date: Wed Jan 1 15:34:11 2025 +0000 vectorizer: new test (#3418) Add test for register compatiblity commit 5549015 Author: Greta Yorsh <[email protected]> Date: Tue Dec 31 17:20:56 2024 +0000 Vectorizer: check register compatibility (#3412) Check that registers are compatible when joining computations commit 1b4978a Merge: 80b7111 c7361a4 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 14:51:42 2025 -0500 Merge branch 'refactor-cmm-for-more-integer-widths' into cmm-scalar-type commit c7361a4 Merge: 0052ebb d0e8914 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 14:45:04 2025 -0500 Merge branch 'cmm-refactor-unboxed-fields' into refactor-cmm-for-more-integer-widths commit d0e8914 Merge: abcd725 dd1d945 Author: Jacob Van Buren <[email protected]> Date: Wed Jan 22 14:22:34 2025 -0500 Merge branch 'generalize-cmm-helpers-interface' into cmm-refactor-unboxed-fields commit dd1d945 Author: Jacob Van Buren <[email protected]> Date: Tue Jan 21 13:10:36 2025 -0500 sped up division tests commit 958b4d3 Author: Jacob Van Buren <[email protected]> Date: Tue Jan 21 12:36:32 2025 -0500 no specialize commit 7033cfd Author: Jacob Van Buren <[email protected]> Date: Tue Jan 21 11:40:59 2025 -0500 updated division tests commit c5ab6a2 Author: Jacob Van Buren <[email protected]> Date: Tue Jan 21 10:59:37 2025 -0500 moved comment commit f1a071b Author: Jacob Van Buren <[email protected]> Date: Tue Jan 21 10:58:42 2025 -0500 re-added comment with disclaimer for d>1 commit 1a44076 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 17 15:44:03 2025 -0500 testing division by constant optimzation commit d54b895 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 17 15:40:56 2025 -0500 responded to feedback commit afe40f1 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 16 15:06:12 2025 -0500 updated signed division by a negative constant to use the algorithm suggested in the referenced book commit eff8c7e Author: Jacob Van Buren <[email protected]> Date: Thu Jan 16 13:01:05 2025 -0500 responded to feedback commit 80b7111 Author: Jacob Van Buren <[email protected]> Date: Fri Jan 3 11:03:21 2025 -0500 Added `Cmm_helpers.Scalar_type`. This provides utilities for converting between integers types of different widths and signedness. This is in preparation for adding unboxed small integer types. commit abcd725 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 31 11:00:07 2024 -0500 unified unboxed field getters/setters. This will be useful once we have unboxed integers of different sizes commit 0052ebb Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 15:40:34 2025 -0500 Squashed commit of the following: commit d1acc48 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:53:51 2025 -0500 Squashed commit of the following: commit c9d7aa6 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:49:45 2025 -0500 cleaned up div/mod commit 4d9f427 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:45:42 2025 -0500 address feedback and simplify division interface commit 625a416 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 31 11:00:07 2024 -0500 unified unboxed field getters/setters. This will be useful once we have unboxed integers of different sizes commit 37b4e82 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 31 09:40:53 2024 -0500 formatted commit 1746aa8 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 30 11:37:33 2024 -0500 updated cmm_helpers interface to be more amenable to adding other integer sizes commit 9e7c322 Author: Greta Yorsh <[email protected]> Date: Tue Dec 31 12:01:21 2024 +0000 Separate test for vectorizer in the CI (#3414) * Separate test for vectorizer in the CI * Remove vectorizer from "gi" CI job commit e1a5fe4 Author: Xavier Clerc <[email protected]> Date: Tue Dec 31 10:54:43 2024 +0000 CI: simplify the regalloc jobs (#3389) commit ab229fc Author: Greta Yorsh <[email protected]> Date: Tue Dec 31 10:42:37 2024 +0000 ASR 64-bit lane not available in sse instruction (#3413) commit 8b99545 Author: Thomas Del Vecchio <[email protected]> Date: Mon Dec 30 14:26:48 2024 -0500 Fix case where parser drops attributes in packed module types. (#3262) * Demonstrate dropped attributes in test. Signed-off-by: Thomas Del Vecchio <[email protected]> * Syntax error on misplaced attribute in packed module types. Signed-off-by: Thomas Del Vecchio <[email protected]> --------- Signed-off-by: Thomas Del Vecchio <[email protected]> commit fe97beb Author: Aspen Smith <[email protected]> Date: Sat Dec 28 11:47:55 2024 -0500 Add attributes to (unsafely) skip jkind check (#3385) * Add attributes to (unsafely) skip jkind check Add a pair of attributes, [@@unsafe_allow_any_kind_in_intf] and [@@unsafe_allow_any_kind_in_impl], which if set on both the impl and the intf respectively, skip checking the jkind of the type in a signature against the jkind of the type in a struct entirely. This is a more-selective version of the `--allow-illegal-crossing` flag, and likely eventually subsumes it. Signed-off-by: Aspen Smith <[email protected]> * Emit a warning when unsafe_allow_any_kind is added unnecessarily Note that this is /only/ done if the attribute is set in both signatures but not used - also this is a little over-sensitive (sadly) since this is done during sigature inclusion too. A new test covers the over-sensitivity. Signed-off-by: Aspen Smith <[email protected]> --------- Signed-off-by: Aspen Smith <[email protected]> commit 862ced2 Author: dkalinichenko-js <[email protected]> Date: Thu Dec 26 15:20:06 2024 -0500 Add `Variant_with_null` and `Null` variant constructors (#2870) * `Variant_with_null` * `Null` tagged constructors * precise value kind * No private re-export --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit 1eeed87 Author: Mark Shinwell <[email protected]> Date: Thu Dec 26 15:00:49 2024 +0000 Revert "Implement %makearray_dynamic{,_uninit}" (#3408) Revert "Implement %makearray_dynamic{,_uninit} (#3317)" This reverts commit 6da1dde. commit 2358e09 Author: Mark Shinwell <[email protected]> Date: Tue Dec 24 15:54:06 2024 +0000 Upload core files etc upon CI failure (#3405) commit dc6e300 Author: Xavier Clerc <[email protected]> Date: Tue Dec 24 10:06:20 2024 +0100 Fix IRC and Greedy allocators (arm64) (#3388) commit 65c0596 Author: Max Slater <[email protected]> Date: Mon Dec 23 16:49:37 2024 -0500 Convert float32 constants to int32 in first stage compiler (#3371) * convert float32 constants in bytecode output * edit * edit * blocks + test * compare against float64 constants * tests check proper custom ops --------- Co-authored-by: Diana Kalinichenko <[email protected]> commit c9d7aa6 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:49:45 2025 -0500 cleaned up div/mod commit 4d9f427 Author: Jacob Van Buren <[email protected]> Date: Thu Jan 2 14:45:42 2025 -0500 address feedback and simplify division interface commit 37b4e82 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 31 09:40:53 2024 -0500 formatted commit 1746aa8 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 30 11:37:33 2024 -0500 updated cmm_helpers interface to be more amenable to adding other integer sizes commit 98ac389 Author: Jacob Van Buren <[email protected]> Date: Fri Dec 27 14:49:54 2024 -0500 simplified shift operators commit 6f73bf9 Author: Jacob Van Buren <[email protected]> Date: Fri Dec 27 13:28:30 2024 -0500 expanded cmm_helpers numeric types to handle more numeric types commit 5ca16d8 Author: Jacob Van Buren <[email protected]> Date: Thu Dec 26 17:05:20 2024 -0500 working on casting and splitting up PR commit b6c0154 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 16:28:17 2024 -0500 formatted commit e9760bf Merge: 5e5c4f3 a7b1f51 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 16:27:49 2024 -0500 Merge branch 'refactor-cmm-for-more-integer-widths' into unboxed-small-ints commit a7b1f51 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 16:26:20 2024 -0500 formatted commit 5e5c4f3 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 16:25:42 2024 -0500 fixed merge commit b3e3b45 Merge: 6fa9504 227f0c8 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 16:10:28 2024 -0500 Merge branch 'refactor-cmm-for-more-integer-widths' into unboxed-small-ints commit 227f0c8 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 16:08:07 2024 -0500 moved cmm refactors into their own branch commit 6fa9504 Merge: 4983b51 6da1dde Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 15:50:38 2024 -0500 Merge remote-tracking branch 'origin/main' into unboxed-small-ints commit 4983b51 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 15:36:41 2024 -0500 unified unboxed field accessors commit 3bb4134 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 13:24:20 2024 -0500 tiny change commit 31b1e9d Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 13:21:51 2024 -0500 added proof of sign-extension logic commit 8a5da66 Merge: 73d4749 a83d70c Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 13:07:14 2024 -0500 Merge remote-tracking branch 'refs/remotes/origin/unboxed-small-ints' into unboxed-small-ints commit 73d4749 Author: Jacob Van Buren <[email protected]> Date: Mon Dec 23 13:06:55 2024 -0500 addressed some feedback, cleaned some things up commit a83d70c Merge: 3eddfc1 efc5211 Author: Jacob Van Buren <[email protected]> Date: Fri Dec 20 16:48:15 2024 -0500 merged with origin/main commit 3eddfc1 Merge: 11e57fa 3cc76c0 Author: Jacob Van Buren <[email protected]> Date: Fri Dec 20 16:29:40 2024 -0500 merged commit 3cc76c0 Author: Jacob Van Buren <[email protected]> Date: Fri Dec 20 16:09:37 2024 -0500 formatted commit d0973be Author: Jacob Van Buren <[email protected]> Date: Fri Dec 20 15:54:12 2024 -0500 renamed Stdlib_beta.Int to Int_wrapper commit f7e4a58 Merge: 03f9cc8 e356f62 Author: Jacob Van Buren <[email protected]> Date: Fri Dec 20 10:37:42 2024 -0500 merged commit 03f9cc8 Author: Jacob Van Buren <[email protected]> Date: Thu Dec 19 16:15:47 2024 -0500 functorized small integer libraries commit 11e57fa Author: Jacob Van Buren <[email protected]> Date: Fri Dec 13 16:38:52 2024 -0500 inlined library functions commit f47ef38 Author: Jacob Van Buren <[email protected]> Date: Fri Dec 13 16:38:04 2024 -0500 no small indexing for now commit 3dfddc4 Author: Jacob Van Buren <[email protected]> Date: Fri Dec 13 16:37:37 2024 -0500 inlined library functions commit 15c9c22 Author: Jacob Van Buren <[email protected]> Date: Fri Dec 13 15:15:20 2024 -0500 fix arm commit a4ef41a Author: Jacob Van Buren <[email protected]> Date: Fri Dec 13 14:56:20 2024 -0500 fix arm64 commit 18fb759 Merge: 5e78a6c 29d45a8 Author: Jacob Van Buren <[email protected]> Date: Fri Dec 13 14:55:38 2024 -0500 merged commit 29d45a8 Merge: 782530d 83b13be Author: Jacob Van Buren <[email protected]> Date: Fri Dec 13 14:51:44 2024 -0500 Merge remote-tracking branch 'origin/main' into tagged-small-ints commit 5e78a6c Author: Jacob Van Buren <[email protected]> Date: Fri Dec 13 14:46:16 2024 -0500 accidentally flipped a bool commit 9efa083 Merge: 69e6b81 782530d Author: Jacob Van Buren <[email protected]> Date: Thu Dec 12 17:47:57 2024 -0500 merged with upstream commit 782530d Merge: 9058c3f 17d57bd Author: Jacob Van Buren <[email protected]> Date: Thu Dec 12 17:33:45 2024 -0500 Merge remote-tracking branch 'origin/main' into tagged-small-ints commit 69e6b81 Author: Jacob Van Buren <[email protected]> Date: Thu Dec 12 17:29:32 2024 -0500 removed extra file oops commit 96f3849 Author: Jacob Van Buren <[email protected]> Date: Thu Dec 12 17:28:39 2024 -0500 revert change to github workflow file commit a490e54 Author: Jacob Van Buren <[email protected]> Date: Thu Dec 12 16:25:27 2024 -0500 simplified code commit c2deb71 Author: Jacob Van Buren <[email protected]> Date: Thu Dec 12 16:12:39 2024 -0500 updated shift code to optimize away extra tagging operations commit 400136f Author: Jacob Van Buren <[email protected]> Date: Thu Dec 12 14:21:45 2024 -0500 merged commit bad1993 Author: Jacob Van Buren <[email protected]> Date: Thu Dec 12 12:19:46 2024 -0500 added stdlib and conversion primitives commit 7830039 Author: Jacob Van Buren <[email protected]> Date: Thu Dec 12 11:19:00 2024 -0500 formatted commit a24610f Author: Jacob Van Buren <[email protected]> Date: Wed Dec 11 17:49:34 2024 -0500 updated the rest of the code - no stdlib support yet commit c958c81 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 10 15:59:14 2024 -0500 before removing arrays commit 1fed354 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 10 14:28:17 2024 -0500 before removing int8 and int16 from boxable numbers commit 09aef50 Author: Jacob Van Buren <[email protected]> Date: Tue Dec 10 11:58:45 2024 -0500 merged with origin/break-type-eq-between-boxed-and-unboxed commit 9058c3f Author: Jacob Van Buren <[email protected]> Date: Thu Dec 12 13:38:40 2024 -0500 fix logical right shift bug commit 96b889d Author: Jacob Van Buren <[email protected]> Date: Fri Dec 6 13:35:25 2024 -0500 accept unique id diffs commit 417caeb Author: Jacob Van Buren <[email protected]> Date: Fri Dec 6 13:06:22 2024 -0500 fixed many issues with tagged small ints. Fixed printing, fixed gating them on beta extension universe, fixed the tests. commit bef118f Author: Jacob Van Buren <[email protected]> Date: Fri Dec 6 12:31:45 2024 -0500 added predefined types for int8 and int16, along with modules for them in Stdlib_beta
This implements two primitives (exact signature of the second yet to be decided):
These provide array creation at runtime either on the heap or the local stack. All layouts, including those involving unboxed products, are supported. The arrays may be either initialized or uninitialized. Any excess 32-bit word at the end of an initialized array (for arrays of
float32#
andint32#
) is deterministically initialized to zero.Uninitialized arrays may only be created if the layout completely prohibits valid OCaml values (which includes things of type
int
and equivalent, even if they occur in a context such as#(int * int32#)
where the resulting block will be non-scannable). This ensures soundness in the case where such array is inadvertently read before being initialized. (Consider for example the case where the uninitialized data fails to have the bottom bit set.)Arrays whose array kinds involve GC-ignorable unboxed products are always allocated as mixed blocks, even in cases such as
#(int32# * int32#)
, and 32-bit elements are never packed therein. This means that the representation currently differs from e.g.int32# array
, which uses a custom block, with packing. As has been discussed, we intend to move everything to mixed blocks in the future, and there will no doubt be improvements to packing for unboxed products.We should discuss whether it is undesirable for the representation of all-
int
arrays (which will end up as mixed blocks in this PR) to be different from e.g. that obtained from array literals, for the purposes of the polymorphic operations.(This PR currently includes a test commit from ccasin@a55f456)