Skip to content
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

Merged
merged 64 commits into from
Dec 23, 2024

Conversation

mshinwell
Copy link
Collaborator

@mshinwell mshinwell commented Nov 26, 2024

This implements two primitives (exact signature of the second yet to be decided):

external[@layout_poly] makearray_dynamic : ('a : any). len:int -> init:('a [@local_opt]) -> ('a array [@local_opt]) =
  "%makearray_dynamic"

external[@layout_poly] makearray_dynamic_uninit : ('a : <TBD>). int -> ('a array [@local_opt]) =
  "%makearray_dynamic_uninit"

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# and int32#) 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)

@mshinwell mshinwell added flambda2 Prerequisite for, or part of, flambda2 runtime unboxed types labels Nov 26, 2024
@mshinwell
Copy link
Collaborator Author

One thing we need to check: preservation of evaluation order (and non-duplication) during the Lambda-to-Lambda transformations here.

@mshinwell mshinwell mentioned this pull request Nov 26, 2024
@mshinwell mshinwell force-pushed the makearray_dynamic branch 2 times, most recently from c47d194 to ead927e Compare December 3, 2024 16:06
@TheNumbat TheNumbat self-requested a review December 4, 2024 17:23
Copy link
Contributor

@TheNumbat TheNumbat left a 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.

lambda/lambda.mli Outdated Show resolved Hide resolved
lambda/translprim.ml Outdated Show resolved Hide resolved
runtime/array.c Outdated Show resolved Hide resolved
runtime/float32.c Outdated Show resolved Hide resolved
runtime/simd.c Outdated Show resolved Hide resolved
testsuite/tests/typing-layouts/layout_poly.ml Outdated Show resolved Hide resolved
typing/typeopt.ml Outdated Show resolved Hide resolved
@TheNumbat
Copy link
Contributor

(Also as Chris noted, the tests are currently only running in bytecode)

@mshinwell
Copy link
Collaborator Author

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.

Copy link
Contributor

@TheNumbat TheNumbat left a 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

Copy link
Contributor

@ccasin ccasin left a 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.

lambda/translprim.ml Outdated Show resolved Hide resolved
lambda/translprim.ml Outdated Show resolved Hide resolved
lambda/translprim.ml Show resolved Hide resolved
lambda/translprim.ml Outdated Show resolved Hide resolved
typing/typeopt.ml Outdated Show resolved Hide resolved
testsuite/tests/typing-layouts/layout_poly.ml Outdated Show resolved Hide resolved
@mshinwell
Copy link
Collaborator Author

I've also rebased this.

@mshinwell
Copy link
Collaborator Author

Have rebased.

@mshinwell mshinwell force-pushed the makearray_dynamic branch 2 times, most recently from 4433b65 to fec8ec7 Compare December 20, 2024 11:01
@mshinwell mshinwell enabled auto-merge (squash) December 23, 2024 17:18
@mshinwell mshinwell merged commit 6da1dde into ocaml-flambda:main Dec 23, 2024
19 checks passed
mshinwell added a commit that referenced this pull request Dec 26, 2024
mshinwell added a commit that referenced this pull request Dec 26, 2024
Revert "Implement %makearray_dynamic{,_uninit} (#3317)"

This reverts commit 6da1dde.
jvanburen added a commit that referenced this pull request Jan 2, 2025
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]>
jvanburen added a commit that referenced this pull request Jan 22, 2025
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]>
jvanburen added a commit that referenced this pull request Jan 29, 2025
    #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
jvanburen added a commit that referenced this pull request Jan 29, 2025
…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]>
jvanburen added a commit that referenced this pull request Jan 29, 2025
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flambda2 Prerequisite for, or part of, flambda2 runtime unboxed types
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants