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

Support layout annotations #1417

Merged
merged 4 commits into from
Aug 4, 2023
Merged

Support layout annotations #1417

merged 4 commits into from
Aug 4, 2023

Conversation

goldfirere
Copy link
Collaborator

This refreshes the work in ccasin/ocaml-jst#1 and makes changes to layout annotations in types as agreed to in the type-systems meeting.

@goldfirere goldfirere marked this pull request as draft May 25, 2023 21:12
@goldfirere goldfirere force-pushed the rae/layout-annotations branch from e407635 to a715c18 Compare May 25, 2023 21:33
@goldfirere goldfirere force-pushed the rae/layout-histories branch from 15b2b8c to c029a39 Compare May 29, 2023 13:36
@goldfirere goldfirere force-pushed the rae/layout-histories branch from c029a39 to 57eb68e Compare May 31, 2023 12:07
@goldfirere goldfirere force-pushed the rae/layout-annotations branch 2 times, most recently from a071508 to e432f37 Compare June 7, 2023 21:01
@goldfirere goldfirere added the to upstream PR should be sent to upstream OCaml label Jun 9, 2023
@goldfirere goldfirere force-pushed the rae/layout-annotations branch 2 times, most recently from 14fac01 to b28a4f8 Compare June 12, 2023 01:27
@goldfirere goldfirere changed the base branch from rae/layout-histories to main June 12, 2023 18:02
Copy link
Contributor

@antalsz antalsz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left my comments, but this looks broadly good. The biggest thing I was confused about is the situation with the test cases; a lot of them seemed to be incomplete. I didn't end up reviewing most of them.

EDIT: Oops, I hit "submit" while I meant to be drafting. Some more comments forthcoming…

ocaml/driver/main_args.ml Outdated Show resolved Hide resolved
ocaml/parsing/ast_helper.mli Outdated Show resolved Hide resolved
ocaml/parsing/ast_helper.mli Outdated Show resolved Hide resolved
ocaml/parsing/ast_helper.ml Outdated Show resolved Hide resolved
ocaml/parsing/ast_helper.ml Show resolved Hide resolved
ocaml/testsuite/tests/typing-layouts/annots.ml Outdated Show resolved Hide resolved
ocaml/testsuite/tests/typing-layouts/annots.ml Outdated Show resolved Hide resolved
ocaml/testsuite/tests/typing-layouts/annots.ml Outdated Show resolved Hide resolved
ocaml/testsuite/tests/typing-layouts/annots.ml Outdated Show resolved Hide resolved
Copy link
Contributor

@antalsz antalsz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, good, I hadn't missed too much. As discussed, I didn't review typing/; as mentioned above, I didn't review testsuite/ yet, I'm awaiting clarification.

ocaml/typing/ctype.ml Show resolved Hide resolved
ocaml/utils/language_extension.mli Outdated Show resolved Hide resolved
@goldfirere goldfirere force-pushed the rae/layout-annotations branch 2 times, most recently from b25ed44 to 860b01b Compare June 14, 2023 17:02
Copy link
Contributor

@antalsz antalsz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed up through 860b01b "More work on extension constructors"

ocaml/parsing/ast_helper.ml Outdated Show resolved Hide resolved
ocaml/parsing/ast_iterator.ml Show resolved Hide resolved
ocaml/parsing/jane_syntax.ml Outdated Show resolved Hide resolved
ocaml/parsing/jane_syntax.ml Outdated Show resolved Hide resolved
ocaml/parsing/jane_syntax.ml Outdated Show resolved Hide resolved
ocaml/parsing/jane_syntax.ml Outdated Show resolved Hide resolved
ocaml/parsing/jane_syntax.mli Outdated Show resolved Hide resolved
@goldfirere goldfirere force-pushed the rae/layout-annotations branch 2 times, most recently from df7836b to a4aa280 Compare June 16, 2023 02:01
@goldfirere
Copy link
Collaborator Author

goldfirere commented Jun 29, 2023

Here are review instructions:

General notes:

  • The commits are meant to be reviewable individually. And if GitHub had good support for commit-by-commit review (e.g. allowing you to say you had read a commit and then to get you to focus your efforts on other parts of a file when viewing it later), I would advocate for commit-by-commit. But that's not the world we live in, so I've come up with another plan.
  • The other plan (details below) could be implemented more smoothly by doing some big restructures of this PR. But I estimate that the effort of doing so is not worth it. Indeed, I've already probably spent the better part of a day (cumulative) trying to keep the commits clean, and I'm not sure that effort has yielded any benefit, so I'm not inclined to invest more in this direction.
  • Exception to the general rule that individual commits make sense: the testsuite. Because the testsuite cares about extension levels, and extension levels are tied in with the jane-syntax approach, it didn't make sense for me to keep the testsuite up-to-date at every commit. So if you build an arbitrary commit, you should expect the annots.ml and annots_beta.ml tests to fail, along with two test files that are labeled "failing". (But that's it -- just those four tests should fail. I kept the testsuite up-to-date otherwise.)

I've broken the review responsibilities down across the two requested reviewers, @antalsz and @ccasin.

@antalsz

  1. Review "Pprintast now depends on Printast" (bdac10c). This could be a separate PR, but see comments above about investment of time making clean PRs. It's just a little refactor of dependencies. Upstream has offered support for this direction of travel, and I expect to upstream this particular commit after this PR has landed; I've made an internal ticket to track this task.
  2. Recall that you've previously done review here. Commits starting from "Comments from Antal" are new to you.
  3. Review "Comments from Antal" through to the end. It's unclear whether this will be easier going commit-by-commit or just as a chunk. (GitHub supports displaying changes from a range of commits.) These commits also fix up the testsuite, hopefully clearing up the (quite reasonable -- sorry!) confusion about the testsuite from earlier.
  4. Confirm that the final changeset includes only a conservative change to ast_helper.mli and no changes at all to parsetree.mli.
  5. Take a pass through open conversations from previous reviews -- hopefully these issues are resolved now.

@ccasin

This PR does not remove the mechanism for writing e.g. type t [@@void], and writing type t : void is interpreted as the former, which does not use the new jane-syntax mechanism. The goal in this PR is simply to remove changes to the parsetree that I introduced previously. I will return to fixing up the remaining non-jane-syntax annotations in a future PR. Of course, there will be a small challenge in that we need to continue to support [@@immediate] in that spot, but it's a story for another day.

  1. Review the final changes to the testsuite, to see if you like the final destination of this PR.
  2. Remember that you gave an in-depth review of Add support for annotating types with layouts. ccasin/ocaml-jst#1. All conversations there were Resolved. That PR got squashed and has become the commit "Initial implementation of layout annotations" (2e2cac3). You may want to glance through this commit to refresh your memory, but no need for a re-review. The rebase was uninteresting.
  3. In commit Rename ~reason to ~context for annotations (only) (1d35034), confirm that the commit really is just a renaming. Nothing else happens here.
  4. Review type-checker changes in "Move layout annotations into aliases" (edd32a5).
  5. Review type-checker changes in "Support for annotations on _" (91b3a78).
  6. Review type-checker changes in "Handle type parameters uniformly" (9e2b5e2). This adds a new check in typeclass.ml and does non-trivial restructuring in typedecl.ml / typetexp.ml.
  7. Review commit "Incorporate test case from old PR, improving msg" (3166795), which comes from your comment on the old PR.

I hope this is manageable! If we ever need to do a temporary parsetree change again, we should follow the workflow pioneered by @ccasin and @rtjoa and review commits as they get merged into a long-running branch, which would avoid this particular review challenge.

ocaml/parsing/pprintast.ml Outdated Show resolved Hide resolved
ocaml/parsing/jane_syntax.ml Show resolved Hide resolved
ocaml/parsing/jane_syntax.mli Outdated Show resolved Hide resolved
ocaml/parsing/jane_syntax.ml Outdated Show resolved Hide resolved
ocaml/parsing/ast_helper.mli Show resolved Hide resolved
ocaml/tools/eqparsetree.ml Outdated Show resolved Hide resolved
@antalsz
Copy link
Contributor

antalsz commented Jun 30, 2023

I believe my review is complete, modulo my outstanding comments – I didn't review the typing/ directory thoroughly, which IIUC was the plan. EDIT: To clarify, I reviewed that the changes to typing/ just moved code around, but did not review that the code so moved was correct.

Copy link
Contributor

@antalsz antalsz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving for non-typing changes

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.

I have some questions and suggestions, but this looks great.

ocaml/testsuite/tests/typing-layouts/annots-failing.ml Outdated Show resolved Hide resolved
ocaml/typing/typedecl.ml Outdated Show resolved Hide resolved
ocaml/typing/typetexp.ml Outdated Show resolved Hide resolved
ocaml/typing/typedecl.ml Outdated Show resolved Hide resolved
ocaml/typing/typedecl.ml Outdated Show resolved Hide resolved
ocaml/typing/ctype.ml Outdated Show resolved Hide resolved
@goldfirere
Copy link
Collaborator Author

OK. Finished responding.

This commit also includes various improvements to jane-syntax.

Documentation coming in a separate commit.

This commit has been rebased to include the following
commits:

Pprintast now depends on Printast

Initial implementation of layout annotations

This was taken from ccasin/ocaml-jst#1,
but rebased and cleaned. There are a handful of failing tests,
still, but they're all newly introduced in this patch.

Rename ~reason to ~context for annotations (only)

Move layout annotations into aliases

This now prevents e.g. [(int : immediate)] but allows
[int as ('a : immediate)], as discussed with the type-systems
group.

Add control over printing verbosity

Move alias over to jane-syntax architecture

Move variable layout annotation into jane-syntax

Support for annotations on _

Check layout annotation during conversion

Handle type parameters uniformly

Convert Ptyp_poly to use jane-syntax architecture

Comments from Antal

Move annotations on extension constructors into JS

Combine unboxed constants with other layouts

Newtypes are now in jane-syntax.

Constructor declarations in jane-syntax

Make testsuite pass

Some minor cleanup of old XXXs.

Some cleanup from review

A little cleanup in Jane_syntax from review

Fix compilation with dune-based build

Incorporate test case from old PR, improving msg

Respond to Antal's review

More review fixes

Move test that now passes

Responses to comments

rename test

Remove "assert false" in favor of "Misc.fatal_error"

Add comment about generic parameters

transl_type_param_layout --> get_type_param_layout

Rename error constructors

Remove module that will interfere with merging
@goldfirere goldfirere force-pushed the rae/layout-annotations branch from 3d16c0a to c11a79f Compare August 3, 2023 21:37
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.

Looks good now, thanks!

@Ekdohibs
Copy link
Contributor

Ekdohibs commented Aug 4, 2023

So, the build failure seems to be due to the minimizer (make minimizer and make minimizer-upstream) not building anymore; you'll need to at least update the code of compat.jst.ml to make it compile again both with ocaml-jst and upstream ocaml.

@goldfirere goldfirere requested a review from Ekdohibs as a code owner August 4, 2023 14:12
Copy link
Contributor

@Ekdohibs Ekdohibs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For files in chamelon/.

Copy link
Collaborator

@mshinwell mshinwell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dune and driver/ changes

@goldfirere goldfirere merged commit 0b14459 into main Aug 4, 2023
Ekdohibs pushed a commit to Ekdohibs/flambda-backend that referenced this pull request Aug 31, 2023
* Add layout annotations to the language.

This commit also includes various improvements to jane-syntax.

Documentation coming in a separate commit.

This commit has been rebased to include the following
commits:

Pprintast now depends on Printast

Initial implementation of layout annotations

This was taken from ccasin/ocaml-jst#1,
but rebased and cleaned. There are a handful of failing tests,
still, but they're all newly introduced in this patch.

Rename ~reason to ~context for annotations (only)

Move layout annotations into aliases

This now prevents e.g. [(int : immediate)] but allows
[int as ('a : immediate)], as discussed with the type-systems
group.

Add control over printing verbosity

Move alias over to jane-syntax architecture

Move variable layout annotation into jane-syntax

Support for annotations on _

Check layout annotation during conversion

Handle type parameters uniformly

Convert Ptyp_poly to use jane-syntax architecture

Comments from Antal

Move annotations on extension constructors into JS

Combine unboxed constants with other layouts

Newtypes are now in jane-syntax.

Constructor declarations in jane-syntax

Make testsuite pass

Some minor cleanup of old XXXs.

Some cleanup from review

A little cleanup in Jane_syntax from review

Fix compilation with dune-based build

Incorporate test case from old PR, improving msg

Respond to Antal's review

More review fixes

Move test that now passes

Responses to comments

rename test

Remove "assert false" in favor of "Misc.fatal_error"

Add comment about generic parameters

transl_type_param_layout --> get_type_param_layout

Rename error constructors

Remove module that will interfere with merging

* Remove call to make_params in enter_type

* Keep minimizer compatible

* Format chameleon
@goldfirere goldfirere deleted the rae/layout-annotations branch September 14, 2023 20:35
mshinwell added a commit that referenced this pull request Oct 18, 2023
df70400 flambda-backend: Fix interface differences in Printtyp (#1918)
e7b5ebf flambda-backend: Fix breaking of tail recursion in classic mode (#1915)
cbb72d8 flambda-backend: Improve debuginfo for for-loops (and conditionals) (#1870)
19133b6 flambda-backend: Replace thread save/restore API with switch (#1869)
882b067 flambda-backend: Add test showing how `max_arity` affects function splitting (#1904)
f1f7da4 flambda-backend: Abbreviate module types when printing error messages (#1895)
e4566dd flambda-backend: Add four missing attributes to the `builtin_attrs` table. (#1898)
4bb4c70 flambda-backend: Undo sort changes during snapshot backtrack (#1885)
87c857a flambda-backend: Add a missing check for jane syntax (#1891)
070d57f flambda-backend: Remove mode from Texp_send (#1893)
7d9ef46 flambda-backend: Remove Jkind.of_sort (#1890)
5ad9591 flambda-backend: ocamlformat in Jane-Street only files in typing (#1881)
5e50edf flambda-backend: Remove var_constraint (#1880)
b1962fa flambda-backend: Rename "layout" to "jkind" (#1875)
f74b090 flambda-backend: Rename layouts.ml to jkind.ml (#1886)
cf32778 flambda-backend: Enable ocamlformat for Jane Syntax / language extensions code (#1876)
20b32a0 flambda-backend: Better error when using a float64 library without extension (#1859)
64e883d flambda-backend: Add hint for `#float` (#1864)
ab42aac flambda-backend: Port upstream #12368 about abstract environments (#1759)
bbc5173 flambda-backend: Support for unboxed products in the middle-end and backend (#1433)
6149a5f flambda-backend: Simplify integer comparisons that use "compare" (#1851)
a05adce flambda-backend: Ask user to add `exclave_` instead of `local_` (#1853)
cdd7f6a flambda-backend: Bump magic numbers for 4.14.1-19
96ec26a flambda-backend: Manually applied changes from PR #11782 (#1732)
ea484d0 flambda-backend: Zero alloc annotation: assume a function never returns normally (#1831)
387893c flambda-backend: All-`float#` records (#1769)
c3f9983 flambda-backend: Expose `Pprintast.tyvar` (#1848)
3782152 flambda-backend: Don't allocate a closure unnecessarily (#1836)
a8f6aae flambda-backend: Fix bug in `Clambda_primitives.result_layout`. (#1833)
4b2a6f6 flambda-backend: Add dune target for `dumpobj` (#1773)
2089ec0 flambda-backend: tmc: Remove close-on-apply flag when producing a call in non-tail position (#1827)
9f304d8 flambda-backend: Adjust the location on `as` pattern vars for better errors/warnings (#1835)
b9cf106 flambda-backend: Zero alloc: assume that works with inlining - propagate via Scoped_location (#1762)
263fa26 flambda-backend: Make -extension immutable_arrays on by default (#1829)
9cca7d2 flambda-backend: Support mode crossing at identifiers (#1811)
7942fed flambda-backend: Finish moving `any` to `layouts_beta` (#1821)
44cd2fc flambda-backend: Fix uncaught Unify exception in filter_arrow (#1820)
3552db6 flambda-backend: Factor out duplicated code in `cmm_helpers` (#1822)
caf938f flambda-backend: Fix AFL test in flambda2 (#1824)
ddd765a flambda-backend: Move `float64` to `layouts_beta` (#1812)
3b579d7 flambda-backend: Fixed ISO C99 warning introduced in #1705 (#1787)
df927f0 flambda-backend: Add a test for an interaction between omitted mli and overeager heap allocation of argument (#1816)
92ddf14 flambda-backend: Fix incorrect sort assumption in lambda for `bop_exp`s in letops (#1793)
1a91f16 flambda-backend: Merging of Debuginfo.t across CSEd occurrences (#1767)
f7cd48f flambda-backend: Backport #10364 (#1788)
5740ebd flambda-backend: Enable warnings-as-errors (#1796)
374a2fb flambda-backend: Build Jane Syntax with upstream OCaml in CI (#1780)
1d6471f flambda-backend: A more consistent first-to-last order for `-w53` (unused attributes) (#1658)
6210ee4 flambda-backend: Make sure the Jane syntax extensions don't depend on our compiler changes (#1777)
963bfbc flambda-backend: Add [Obj.uniquely_reachable_words] (#1705)
4cd24bd flambda-backend: mode crossing of LHS of arrow types by coercing (#1701)
910914d flambda-backend: `Pprintast` prints Jane syntax unconditionally (#1770)
46dad5b flambda-backend: Regulate access to [Language_extension] from within Jane Syntax (#1768)
a0f8d0c flambda-backend: Lazy strengthening (#1337)
85b5c54 flambda-backend: Small improvement to layout inference for mutually recursive type decl parameters (#1766)
0c57382 flambda-backend: Syntactic function arity parsing (#1548)
e8edd13 flambda-backend: Fix modes annotation ghost location (#1761)
a669c00 flambda-backend: Refactor Debuginfo.t (#1724)
91ab70a flambda-backend: Basic uniqueness extension (#1552)
5be3cb8 flambda-backend: add the `%get_header` primitive (#1539)
0006b3e flambda-backend: Fix arrow printing when closing over unknown mode (#1744)
226d6ac flambda-backend: Add some checks that the minor GC does not recurse (#1743)
f3e7c0a flambda-backend: Bump magic numbers for 4.14.1-18
30cbf0a flambda-backend: Add `Jane_syntax` `Pprintast` tests (#1727)
1269571 flambda-backend: Expose a couple more functions from `Pprintast` (#1731)
159adbe flambda-backend: Propagate the label names of optional parameters (#1723)
4f70f0b flambda-backend: Further refine our debugging infrastructure (#1650)
a440f6d flambda-backend: Add mode to `int_as_pointer` (#1648)
0cc5356 flambda-backend: Update `jane-street-merlin-setup.sh` for this repo (#1663)
71879dc flambda-backend: Add code path to read .cmi without adding to environment  (#1674)
5394352 flambda-backend: Only substitute once in `Env.read_sign_of_cmi` (#1670)
2a7f015 flambda-backend: Pass `-f` when `rm`ing file during install (#1700)
ddaf752 flambda-backend: Set location on topmost Jane Syntax attribute (#1696)
5205836 flambda-backend: Support layout annotations (#1417)
455887f flambda-backend: Simplifications following PR #1667 (#1668)
6c0a9e8 flambda-backend: Don't add a module to the environment when saving it (#1667)
562eb7b flambda-backend: Flambda 2 changes for DWARF variables (#1678)
f1352ed flambda-backend: Add modes on parameters and a framework for attributes on them (#1257)
3d23db5 flambda-backend: 128-bit vector primitive types (#1568)
06a3bdc flambda-backend: Bump magic numbers for 4.14.1-16 (#1657)
37c5ea0 flambda-backend: Remove/comment new uses of `not_expecting` in the parser (#1517)
8bbe82d flambda-backend: Float_u stdlib module (#1572)
f4075a4 flambda-backend: Add a `float64` layout and `float#` type. (#1528)
43f02af flambda-backend: Test fix in #1457 (#1458)
c896a97 flambda-backend: Swap simd flag to language extension (#1569)
e6c44d4 flambda-backend: mkuplus and mkuminus must preserve attributes (#1575)
906cfc5 flambda-backend: Make environment lazy in preparation for simd extension (#1570)
a222bfc flambda-backend: pattern match local iarray gives local elements(#1574)
d3c1413 flambda-backend: 128-bit SIMD vector primitive type (#1499)
bcc0a09 flambda-backend: exclave_ implies strictly local (#1554)
e3deedb flambda-backend: Factor out kernel of `Language_extension` used by Jane Syntax (#1509)
eea5150 flambda-backend: Fix incorrect sort in transl (#1547)
d2b44d8 flambda-backend: A + sign usually means Positive (#1536)
d1644f9 flambda-backend: Restore #1455: Communicate layouts to middle end (#1511)
5e6524d flambda-backend: Tail-calling local-returning functions should make the current function local-returning as well (#1498)
fa71f6b flambda-backend: Increase local stack limit (#1513)
c1eecf6 flambda-backend: Generalize `deep_occur` to `deep_occur_list` (#1503)
1a17a8b flambda-backend: Bump magic numbers for 4.14.1-15
a3d1953 flambda-backend: Fix Translcore to look for allocations in exclaves (#1495)
0ea8b04 flambda-backend: Revert "Communicate frontend layouts to lambda" (#1507)
383e158 flambda-backend: Disable `sockets.ml` on macOS (#1505)
3b73a8d flambda-backend: Communicate frontend layouts to lambda (#1455)
f94a067 flambda-backend: Allow `make debug` with dune-based build (#1480)
1880d42 flambda-backend: Disable `beat.ml` on macOS (#1496)
4b2e620 flambda-backend: Check that layout variables aren't unconstrained when writing `cmi`s (#1474)
284889c flambda-backend: Add flambda2 -O3 and -Oclassic CI jobs, third attempt (#1493)
ef161b9 flambda-backend: Prepare translation of primitives in lambda_to_flambda for unboxed products (#1465)
bc1d15a flambda-backend: Remove ast_desc and ast_info from jane-syntax (#1488)
be57ed6 flambda-backend: Local immutable arrays (#1420)
3a5d06a flambda-backend: Unboxed literal jane syntax (#1487)
cc61a3a flambda-backend: Ensure that all [val]s are [value]s. (#1481)
aba14c2 flambda-backend: Check for value in polymorphic variant argument (#1482)
0a20dfb flambda-backend: Jane-syntax support for extension constructors (#1479)
697519a flambda-backend: Remove `nonlocal_` modality (#1452)
0bf6a17 flambda-backend: Use exported modules in Jane_syntax_parsing (#1477)
aa6d00f flambda-backend: Flambda1: Simplify `Region (Exclave e)` to `e` (#1473)
e472be0 flambda-backend: Remove the `type float# = float` hack (#1478)
ebe702d flambda-backend: Fix a typo in language extension parsing/serializing (#1456)
40f0e8c flambda-backend: Lex unboxed float and int literals as single lexemes (#1469)
22f170a flambda-backend: Unboxed float type parsing in `layouts_alpha` (#1467)
740de2a flambda-backend: Revert "Add flambda2 -Oclassic and -O3 CI jobs" (#1462)
6ec73ed flambda-backend: Zero alloc remove annotation from stdlib (#1434)
f416497 flambda-backend: Don't pass (unnecessary?) -L flags to `gcc -shared` from opttoplevel (#1363)
416a714 flambda-backend: sync dynlink/dune compiler flags (#1461)
d3e555f flambda-backend: Add flambda2 -Oclassic and -O3 CI jobs (#1459)
e5eca61 flambda-backend: Add documentation for testing targets to HACKING docs (#1436)
f1835c4 flambda-backend: New extensions API, supporting maturity levels (#1454)
1deb5af flambda-backend: Add Make/Dune target for debug printers (#1289)
324f32e flambda-backend: Bugfix for application mode crossing (#1451)
7ac42ab flambda-backend: Don't substitute into exclaves in `simplif.ml` (#1448)
a03de20 flambda-backend: Parse unboxed literals, treating them as boxed (#1437)
5283047 flambda-backend: support native `exclave_` syntax (#1338)
a1fe4cf flambda-backend: Default layout variables in gadt constructors (#1424)
f4c96ff flambda-backend: Fix programmatically enabling and disabling the same layouts extension (#1446)
cc58003 flambda-backend: Erasability namespace for Jane Syntax attributes/extensions (#1421)
ae9099a flambda-backend: Use layout histories to produce better errors (#1340)
385ada9 flambda-backend: Fix swapgil test C warnings (#1430)
ff9a0d1 flambda-backend: Bugfix for caml_switch_runtime_locking_scheme (#1429)
df41dae flambda-backend: Remove layout variables from [val]s (#1423)
2e1a05a flambda-backend: Bugfix for GC backlog tracking (#1387)
8bc3fd7 flambda-backend: Allow more function argument / returns to be non-value (#1422)
f2a5b93 flambda-backend: Convert Jane Syntax to use attributes for many syntactic categories (#1412)
1e2d5c5 flambda-backend: zero alloc: warning 198 about assume (#1409)
9270fee flambda-backend: Allow non-value function args and returns (#1405)
5319dfe flambda-backend: Bump magic numbers for 4.14.1-13
31fb926 flambda-backend: Fix issue with layout any and Tstr_eval in the native toplevel (#1402)
dff4346 flambda-backend: Extend caml_locking_scheme with callbacks for thread start/stop (#1411)
674a335 flambda-backend: Introduce an API to swap the runtime lock for a different lock. (#1365)
1ce68db flambda-backend: Modular syntax for types (#1401)
9f55ade flambda-backend: Missing changes around the renaming to "Jane syntax" (#1400)
cf8eaa8 flambda-backend: Move `include functor` over to the modular extensions machinery (#1377)
da4e02d flambda-backend: Statically enabled probes (#1388)
093e638 flambda-backend: Bump magic numbers for 4.14.1-12
e7e0bf1 flambda-backend: Move layout from Type_abstract to type_declaration (#1384)
9c53ca7 flambda-backend: Rename `tests/jst-modular-extensions` to `tests/jane-modular-syntax` (#1397)
6881566 flambda-backend: Rename "modular extensions" to "Jane syntax"/"modular syntax" (#1395)
bfec906 flambda-backend: Add autocompletion for test-one/promote-one (#1393)
9fc4aac flambda-backend: Fix a bug that -no-rebuild introduced in test-one (#1394)
301b683 flambda-backend: Add -no-rebuild options for test-one and promote-one (#1391)
1e090ac flambda-backend: zero alloc check: ignore functors and entry functions (#1370)
9d3b5a1 flambda-backend: Provide an AST-like view of modular extension extension node names (#1362)
7a92219 flambda-backend: Ltail for lambda and use in dissect_letrec (#1313)
7a7e639 flambda-backend: Add emacs hacking commands (#1372)
8dd6eae flambda-backend: Remove closure from Array.for_all (#1354)
a4c4d03 flambda-backend: Fix ghost locations for modular extensions (#1348)
ca5a008 flambda-backend: Bump magic numbers for 4.14.1-10 (#1360)
a24d2ec flambda-backend: Inline a variable to save 2%+ in allocations (#1353)
96f8f00 flambda-backend: Probe name too long: warning instead of error (#1352)
cd34685 flambda-backend: Typedtree module unpacks: Incorporate upstream feedback (#1288)
c0482d3 flambda-backend: Add dedicated printline-debugging support (#1308)
7b295b0 flambda-backend: Fix try region closure for "match with exception" under Flambda 2 (#1339)
db6552a flambda-backend: Revert ocaml/toplevel/ changes that are duplicative
132f8ba flambda-backend: Revert ocaml/driver/ changes that are duplicative
3d7f37f flambda-backend: Merge ocaml-jst
4646c2e flambda-backend: Merge ocaml-jst
e62f2b1 flambda-backend: Bump magic numbers for 4.14.1-8
f617a06 flambda-backend: Revert ocaml/toplevel/ changes that are duplicative
79f91e9 flambda-backend: Revert ocaml/driver/ changes that are duplicative

git-subtree-dir: ocaml
git-subtree-split: df70400
mshinwell added a commit that referenced this pull request Oct 31, 2023
7da89ee flambda-backend: Error message: add hint for unboxed types (#1960)
559870d flambda-backend: More precise layout for array patterns (#1968)
097204a flambda-backend: Fix boolean functions tail call position bug (#1957)
8bd0b80 flambda-backend: Fix result layout of combined applications (#1963)
91d3de7 flambda-backend: Change error message for non-value class lets (#1953)
27e58ec flambda-backend: Handle empty cases (fixes bug from #1899) (#1955)
aafeeda flambda-backend: Zero alloc: add payload "opt" and "-zero-alloc-check {default|all|none|opt}" flag (#1936)
e65faae flambda-backend: Make `assert false` behave as local_ or not, depending on what's better (+ 2 bugfixes) (#1899)
0706cec flambda-backend: Install simd.h with other runtime headers (#1935)
82364c9 flambda-backend: Allow parameter modes to be relaxed in type_argument (#1756)
cb9fa49 flambda-backend: Add missing iarrayLabels module from stdlib dune file (#1930)
40ddf54 flambda-backend: Runtime helpers for 128-bit vectors (#1897)
a336b70 flambda-backend: Update magic numbers for 4.14.1-22 (and add tools/bump_magic_numbers.sh)
a1239f0 flambda-backend: 128-bit Array Load/Store (#1682)
c3297fc flambda-backend: Fix uncaught exception for non-representable type statements (#1928)
65af444 flambda-backend: Add `Is_stack` for C-stub  (#1914)
df70400 flambda-backend: Fix interface differences in Printtyp (#1918)
e7b5ebf flambda-backend: Fix breaking of tail recursion in classic mode (#1915)
cbb72d8 flambda-backend: Improve debuginfo for for-loops (and conditionals) (#1870)
19133b6 flambda-backend: Replace thread save/restore API with switch (#1869)
882b067 flambda-backend: Add test showing how `max_arity` affects function splitting (#1904)
f1f7da4 flambda-backend: Abbreviate module types when printing error messages (#1895)
e4566dd flambda-backend: Add four missing attributes to the `builtin_attrs` table. (#1898)
4bb4c70 flambda-backend: Undo sort changes during snapshot backtrack (#1885)
87c857a flambda-backend: Add a missing check for jane syntax (#1891)
070d57f flambda-backend: Remove mode from Texp_send (#1893)
7d9ef46 flambda-backend: Remove Jkind.of_sort (#1890)
5ad9591 flambda-backend: ocamlformat in Jane-Street only files in typing (#1881)
5e50edf flambda-backend: Remove var_constraint (#1880)
b1962fa flambda-backend: Rename "layout" to "jkind" (#1875)
f74b090 flambda-backend: Rename layouts.ml to jkind.ml (#1886)
cf32778 flambda-backend: Enable ocamlformat for Jane Syntax / language extensions code (#1876)
20b32a0 flambda-backend: Better error when using a float64 library without extension (#1859)
64e883d flambda-backend: Add hint for `#float` (#1864)
ab42aac flambda-backend: Port upstream #12368 about abstract environments (#1759)
bbc5173 flambda-backend: Support for unboxed products in the middle-end and backend (#1433)
6149a5f flambda-backend: Simplify integer comparisons that use "compare" (#1851)
a05adce flambda-backend: Ask user to add `exclave_` instead of `local_` (#1853)
cdd7f6a flambda-backend: Bump magic numbers for 4.14.1-19
96ec26a flambda-backend: Manually applied changes from PR #11782 (#1732)
ea484d0 flambda-backend: Zero alloc annotation: assume a function never returns normally (#1831)
387893c flambda-backend: All-`float#` records (#1769)
c3f9983 flambda-backend: Expose `Pprintast.tyvar` (#1848)
3782152 flambda-backend: Don't allocate a closure unnecessarily (#1836)
a8f6aae flambda-backend: Fix bug in `Clambda_primitives.result_layout`. (#1833)
4b2a6f6 flambda-backend: Add dune target for `dumpobj` (#1773)
2089ec0 flambda-backend: tmc: Remove close-on-apply flag when producing a call in non-tail position (#1827)
9f304d8 flambda-backend: Adjust the location on `as` pattern vars for better errors/warnings (#1835)
b9cf106 flambda-backend: Zero alloc: assume that works with inlining - propagate via Scoped_location (#1762)
263fa26 flambda-backend: Make -extension immutable_arrays on by default (#1829)
9cca7d2 flambda-backend: Support mode crossing at identifiers (#1811)
7942fed flambda-backend: Finish moving `any` to `layouts_beta` (#1821)
44cd2fc flambda-backend: Fix uncaught Unify exception in filter_arrow (#1820)
3552db6 flambda-backend: Factor out duplicated code in `cmm_helpers` (#1822)
caf938f flambda-backend: Fix AFL test in flambda2 (#1824)
ddd765a flambda-backend: Move `float64` to `layouts_beta` (#1812)
3b579d7 flambda-backend: Fixed ISO C99 warning introduced in #1705 (#1787)
df927f0 flambda-backend: Add a test for an interaction between omitted mli and overeager heap allocation of argument (#1816)
92ddf14 flambda-backend: Fix incorrect sort assumption in lambda for `bop_exp`s in letops (#1793)
1a91f16 flambda-backend: Merging of Debuginfo.t across CSEd occurrences (#1767)
f7cd48f flambda-backend: Backport #10364 (#1788)
5740ebd flambda-backend: Enable warnings-as-errors (#1796)
374a2fb flambda-backend: Build Jane Syntax with upstream OCaml in CI (#1780)
1d6471f flambda-backend: A more consistent first-to-last order for `-w53` (unused attributes) (#1658)
6210ee4 flambda-backend: Make sure the Jane syntax extensions don't depend on our compiler changes (#1777)
963bfbc flambda-backend: Add [Obj.uniquely_reachable_words] (#1705)
4cd24bd flambda-backend: mode crossing of LHS of arrow types by coercing (#1701)
910914d flambda-backend: `Pprintast` prints Jane syntax unconditionally (#1770)
46dad5b flambda-backend: Regulate access to [Language_extension] from within Jane Syntax (#1768)
a0f8d0c flambda-backend: Lazy strengthening (#1337)
85b5c54 flambda-backend: Small improvement to layout inference for mutually recursive type decl parameters (#1766)
0c57382 flambda-backend: Syntactic function arity parsing (#1548)
e8edd13 flambda-backend: Fix modes annotation ghost location (#1761)
a669c00 flambda-backend: Refactor Debuginfo.t (#1724)
91ab70a flambda-backend: Basic uniqueness extension (#1552)
5be3cb8 flambda-backend: add the `%get_header` primitive (#1539)
0006b3e flambda-backend: Fix arrow printing when closing over unknown mode (#1744)
226d6ac flambda-backend: Add some checks that the minor GC does not recurse (#1743)
f3e7c0a flambda-backend: Bump magic numbers for 4.14.1-18
30cbf0a flambda-backend: Add `Jane_syntax` `Pprintast` tests (#1727)
1269571 flambda-backend: Expose a couple more functions from `Pprintast` (#1731)
159adbe flambda-backend: Propagate the label names of optional parameters (#1723)
4f70f0b flambda-backend: Further refine our debugging infrastructure (#1650)
a440f6d flambda-backend: Add mode to `int_as_pointer` (#1648)
0cc5356 flambda-backend: Update `jane-street-merlin-setup.sh` for this repo (#1663)
71879dc flambda-backend: Add code path to read .cmi without adding to environment  (#1674)
5394352 flambda-backend: Only substitute once in `Env.read_sign_of_cmi` (#1670)
2a7f015 flambda-backend: Pass `-f` when `rm`ing file during install (#1700)
ddaf752 flambda-backend: Set location on topmost Jane Syntax attribute (#1696)
5205836 flambda-backend: Support layout annotations (#1417)
455887f flambda-backend: Simplifications following PR #1667 (#1668)
6c0a9e8 flambda-backend: Don't add a module to the environment when saving it (#1667)
562eb7b flambda-backend: Flambda 2 changes for DWARF variables (#1678)
f1352ed flambda-backend: Add modes on parameters and a framework for attributes on them (#1257)
3d23db5 flambda-backend: 128-bit vector primitive types (#1568)
06a3bdc flambda-backend: Bump magic numbers for 4.14.1-16 (#1657)
37c5ea0 flambda-backend: Remove/comment new uses of `not_expecting` in the parser (#1517)
8bbe82d flambda-backend: Float_u stdlib module (#1572)
f4075a4 flambda-backend: Add a `float64` layout and `float#` type. (#1528)
43f02af flambda-backend: Test fix in #1457 (#1458)
c896a97 flambda-backend: Swap simd flag to language extension (#1569)
e6c44d4 flambda-backend: mkuplus and mkuminus must preserve attributes (#1575)
906cfc5 flambda-backend: Make environment lazy in preparation for simd extension (#1570)
a222bfc flambda-backend: pattern match local iarray gives local elements(#1574)
d3c1413 flambda-backend: 128-bit SIMD vector primitive type (#1499)
bcc0a09 flambda-backend: exclave_ implies strictly local (#1554)
e3deedb flambda-backend: Factor out kernel of `Language_extension` used by Jane Syntax (#1509)
eea5150 flambda-backend: Fix incorrect sort in transl (#1547)
d2b44d8 flambda-backend: A + sign usually means Positive (#1536)
d1644f9 flambda-backend: Restore #1455: Communicate layouts to middle end (#1511)
5e6524d flambda-backend: Tail-calling local-returning functions should make the current function local-returning as well (#1498)
fa71f6b flambda-backend: Increase local stack limit (#1513)
c1eecf6 flambda-backend: Generalize `deep_occur` to `deep_occur_list` (#1503)
1a17a8b flambda-backend: Bump magic numbers for 4.14.1-15
a3d1953 flambda-backend: Fix Translcore to look for allocations in exclaves (#1495)
0ea8b04 flambda-backend: Revert "Communicate frontend layouts to lambda" (#1507)
383e158 flambda-backend: Disable `sockets.ml` on macOS (#1505)
3b73a8d flambda-backend: Communicate frontend layouts to lambda (#1455)
f94a067 flambda-backend: Allow `make debug` with dune-based build (#1480)
1880d42 flambda-backend: Disable `beat.ml` on macOS (#1496)
4b2e620 flambda-backend: Check that layout variables aren't unconstrained when writing `cmi`s (#1474)
284889c flambda-backend: Add flambda2 -O3 and -Oclassic CI jobs, third attempt (#1493)
ef161b9 flambda-backend: Prepare translation of primitives in lambda_to_flambda for unboxed products (#1465)
bc1d15a flambda-backend: Remove ast_desc and ast_info from jane-syntax (#1488)
be57ed6 flambda-backend: Local immutable arrays (#1420)
3a5d06a flambda-backend: Unboxed literal jane syntax (#1487)
cc61a3a flambda-backend: Ensure that all [val]s are [value]s. (#1481)
aba14c2 flambda-backend: Check for value in polymorphic variant argument (#1482)
0a20dfb flambda-backend: Jane-syntax support for extension constructors (#1479)
697519a flambda-backend: Remove `nonlocal_` modality (#1452)
0bf6a17 flambda-backend: Use exported modules in Jane_syntax_parsing (#1477)
aa6d00f flambda-backend: Flambda1: Simplify `Region (Exclave e)` to `e` (#1473)
e472be0 flambda-backend: Remove the `type float# = float` hack (#1478)
ebe702d flambda-backend: Fix a typo in language extension parsing/serializing (#1456)
40f0e8c flambda-backend: Lex unboxed float and int literals as single lexemes (#1469)
22f170a flambda-backend: Unboxed float type parsing in `layouts_alpha` (#1467)
740de2a flambda-backend: Revert "Add flambda2 -Oclassic and -O3 CI jobs" (#1462)
6ec73ed flambda-backend: Zero alloc remove annotation from stdlib (#1434)
f416497 flambda-backend: Don't pass (unnecessary?) -L flags to `gcc -shared` from opttoplevel (#1363)
416a714 flambda-backend: sync dynlink/dune compiler flags (#1461)
d3e555f flambda-backend: Add flambda2 -Oclassic and -O3 CI jobs (#1459)
e5eca61 flambda-backend: Add documentation for testing targets to HACKING docs (#1436)
f1835c4 flambda-backend: New extensions API, supporting maturity levels (#1454)
1deb5af flambda-backend: Add Make/Dune target for debug printers (#1289)
324f32e flambda-backend: Bugfix for application mode crossing (#1451)
7ac42ab flambda-backend: Don't substitute into exclaves in `simplif.ml` (#1448)
a03de20 flambda-backend: Parse unboxed literals, treating them as boxed (#1437)
5283047 flambda-backend: support native `exclave_` syntax (#1338)
a1fe4cf flambda-backend: Default layout variables in gadt constructors (#1424)
f4c96ff flambda-backend: Fix programmatically enabling and disabling the same layouts extension (#1446)
cc58003 flambda-backend: Erasability namespace for Jane Syntax attributes/extensions (#1421)
ae9099a flambda-backend: Use layout histories to produce better errors (#1340)
385ada9 flambda-backend: Fix swapgil test C warnings (#1430)
ff9a0d1 flambda-backend: Bugfix for caml_switch_runtime_locking_scheme (#1429)
df41dae flambda-backend: Remove layout variables from [val]s (#1423)
2e1a05a flambda-backend: Bugfix for GC backlog tracking (#1387)
8bc3fd7 flambda-backend: Allow more function argument / returns to be non-value (#1422)
f2a5b93 flambda-backend: Convert Jane Syntax to use attributes for many syntactic categories (#1412)
1e2d5c5 flambda-backend: zero alloc: warning 198 about assume (#1409)
9270fee flambda-backend: Allow non-value function args and returns (#1405)
5319dfe flambda-backend: Bump magic numbers for 4.14.1-13
31fb926 flambda-backend: Fix issue with layout any and Tstr_eval in the native toplevel (#1402)
dff4346 flambda-backend: Extend caml_locking_scheme with callbacks for thread start/stop (#1411)
674a335 flambda-backend: Introduce an API to swap the runtime lock for a different lock. (#1365)
1ce68db flambda-backend: Modular syntax for types (#1401)
9f55ade flambda-backend: Missing changes around the renaming to "Jane syntax" (#1400)
cf8eaa8 flambda-backend: Move `include functor` over to the modular extensions machinery (#1377)
da4e02d flambda-backend: Statically enabled probes (#1388)
093e638 flambda-backend: Bump magic numbers for 4.14.1-12
e7e0bf1 flambda-backend: Move layout from Type_abstract to type_declaration (#1384)
9c53ca7 flambda-backend: Rename `tests/jst-modular-extensions` to `tests/jane-modular-syntax` (#1397)
6881566 flambda-backend: Rename "modular extensions" to "Jane syntax"/"modular syntax" (#1395)
bfec906 flambda-backend: Add autocompletion for test-one/promote-one (#1393)
9fc4aac flambda-backend: Fix a bug that -no-rebuild introduced in test-one (#1394)
301b683 flambda-backend: Add -no-rebuild options for test-one and promote-one (#1391)
1e090ac flambda-backend: zero alloc check: ignore functors and entry functions (#1370)
9d3b5a1 flambda-backend: Provide an AST-like view of modular extension extension node names (#1362)
7a92219 flambda-backend: Ltail for lambda and use in dissect_letrec (#1313)
7a7e639 flambda-backend: Add emacs hacking commands (#1372)
8dd6eae flambda-backend: Remove closure from Array.for_all (#1354)
a4c4d03 flambda-backend: Fix ghost locations for modular extensions (#1348)
ca5a008 flambda-backend: Bump magic numbers for 4.14.1-10 (#1360)
a24d2ec flambda-backend: Inline a variable to save 2%+ in allocations (#1353)
96f8f00 flambda-backend: Probe name too long: warning instead of error (#1352)
cd34685 flambda-backend: Typedtree module unpacks: Incorporate upstream feedback (#1288)
c0482d3 flambda-backend: Add dedicated printline-debugging support (#1308)
7b295b0 flambda-backend: Fix try region closure for "match with exception" under Flambda 2 (#1339)
db6552a flambda-backend: Revert ocaml/toplevel/ changes that are duplicative
132f8ba flambda-backend: Revert ocaml/driver/ changes that are duplicative
3d7f37f flambda-backend: Merge ocaml-jst
4646c2e flambda-backend: Merge ocaml-jst
e62f2b1 flambda-backend: Bump magic numbers for 4.14.1-8
f617a06 flambda-backend: Revert ocaml/toplevel/ changes that are duplicative
79f91e9 flambda-backend: Revert ocaml/driver/ changes that are duplicative

git-subtree-dir: ocaml
git-subtree-split: 7da89ee
goldfirere added a commit that referenced this pull request Dec 26, 2023
This reverts commit bdac10c.

That commit was part of #1417, but ended up getting squashed
in a rebase. Why revert? Because it's hard to upstream this
change, due to the new dependency of the tyvar printer on the
lexer. This can be disentangled, but doing so would be disruptive
for little gain. So I'm just undoing this unforced little cleanup,
which isn't so important anyway.
goldfirere added a commit that referenced this pull request Dec 27, 2023
* Revert "Pprintast now depends on Printast"

This reverts commit bdac10c.

That commit was part of #1417, but ended up getting squashed
in a rebase. Why revert? Because it's hard to upstream this
change, due to the new dependency of the tyvar printer on the
lexer. This can be disentangled, but doing so would be disruptive
for little gain. So I'm just undoing this unforced little cleanup,
which isn't so important anyway.

* Fix the build
lukemaurer pushed a commit to lukemaurer/flambda-backend that referenced this pull request Oct 23, 2024
…bda#2194)

* Revert "Pprintast now depends on Printast"

This reverts commit bdac10c.

That commit was part of ocaml-flambda#1417, but ended up getting squashed
in a rebase. Why revert? Because it's hard to upstream this
change, due to the new dependency of the tyvar printer on the
lexer. This can be disentangled, but doing so would be disruptive
for little gain. So I'm just undoing this unforced little cleanup,
which isn't so important anyway.

* Fix the build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
to upstream PR should be sent to upstream OCaml typing unboxed types
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants