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

Stop adding user-contrib, xgd dirs and COQPATH to ml loadpath #19842

Merged
merged 1 commit into from
Jan 11, 2025

Conversation

SkySkimmer
Copy link
Contributor

We still add coq-core (actually coq-core/.. du to findlib limitations) for #15607 (coqc installed in a non-findlib location, typically calling _build/install/default/bin/coqc without going through dune exec)

@SkySkimmer SkySkimmer requested a review from a team as a code owner November 18, 2024 11:49
@coqbot-app coqbot-app bot added the needs: full CI The latest GitLab pipeline that ran was a light CI. Say "@coqbot run full ci" to get a full CI. label Nov 18, 2024
We still add coq-core for coq#15607 (coqc installed in a non-findlib
location, typically calling _build/install/default/bin/coqc without
going through `dune exec`)
@SkySkimmer SkySkimmer added kind: cleanup Code removal, deprecation, refactorings, etc. request: full CI Use this label when you want your next push to trigger a full CI. labels Nov 18, 2024
@coqbot-app coqbot-app bot removed request: full CI Use this label when you want your next push to trigger a full CI. needs: full CI The latest GitLab pipeline that ran was a light CI. Say "@coqbot run full ci" to get a full CI. labels Nov 18, 2024
@SkySkimmer SkySkimmer added this to the 9.0+rc1 milestone Nov 18, 2024
@silene
Copy link
Contributor

silene commented Nov 20, 2024

Does that mean that findlib will now ignore META files that are stored next to .vo files? I am not that fond of this evolution. Forcing files from a single Coq development to be installed in various separate directories does not look like progress to me.

@ejgallego ejgallego self-assigned this Nov 20, 2024
@ejgallego
Copy link
Member

Does that mean that findlib will now ignore META files that are stored next to .vo files? I am not that fond of this evolution. Forcing files from a single Coq development to be installed in various separate directories does not look like progress to me.

What Coq package is using the "install META next to .vo files" pattern?

I guess Gaëtan assumed that this no longer the case.

The progress here is that we are (actually already did) phasing out the Coq custom ML library handling infra for findlib.

Whether this is a good tradeoff is indeed a good question, I think so.

@SkySkimmer
Copy link
Contributor Author

@coqbot bench

Copy link
Contributor

coqbot-app bot commented Nov 20, 2024

🏁 Bench results:

┌─────────────────────────────────────┬─────────────────────────┬───────────────────────────────────────┬─────────────────────────┐
│                                     │      user time [s]      │           CPU instructions            │  max resident mem [KB]  │
│                                     │                         │                                       │                         │
│            package_name             │   NEW      OLD    PDIFF │      NEW             OLD        PDIFF │   NEW      OLD    PDIFF │
├─────────────────────────────────────┼─────────────────────────┼───────────────────────────────────────┼─────────────────────────┤
│                       coq-equations │    7.58     7.84  -3.32 │    51562585964     52890490194  -2.51 │  388860   392040  -0.81 │
│                       coq-fiat-core │   56.61    58.09  -2.55 │   349962134722    358988744566  -2.51 │  471552   471008   0.12 │
│                         coq-coqutil │   42.25    43.18  -2.15 │   269664714701    274342514678  -1.71 │  555492   555028   0.08 │
│                           coq-verdi │   44.04    44.80  -1.70 │   296552357686    300813722359  -1.42 │  529664   525460   0.80 │
│ coq-neural-net-interp-computed-lite │  231.67   234.85  -1.35 │  2249014948968   2253802423080  -0.21 │  854744   854116   0.07 │
│               coq-engine-bench-lite │  129.59   131.18  -1.21 │   964841059019    974859719138  -1.03 │ 1068924  1068576   0.03 │
│                    coq-math-classes │   85.30    86.07  -0.89 │   531350840967    534342148143  -0.56 │  499480   499224   0.05 │
│                         coq-bignums │   29.96    30.23  -0.89 │   194418024173    194386799992   0.02 │  476424   476424   0.00 │
│                   coq-metacoq-utils │   23.02    23.19  -0.73 │   152076887330    153470408847  -0.91 │  591472   594532  -0.51 │
│                           coq-color │  245.34   247.10  -0.71 │  1564779043890   1573780817794  -0.57 │ 1125488  1125040   0.04 │
│                    coq-fiat-parsers │  272.36   274.30  -0.71 │  2121152514896   2137249958653  -0.75 │ 2288756  2289208  -0.02 │
│              coq-mathcomp-character │   75.96    76.50  -0.71 │   503968575116    504071401152  -0.02 │  938064   938240  -0.02 │
│                        coq-coqprime │   51.89    52.25  -0.69 │   360470328343    362454790795  -0.55 │  784272   784268   0.00 │
│                         coq-unimath │ 1990.95  2004.27  -0.66 │ 16002200980274  16056295891286  -0.34 │ 1107388  1107140   0.02 │
│                 coq-category-theory │  598.55   601.75  -0.53 │  4445413800775   4467424260296  -0.49 │  965844   912692   5.82 │
│              coq-mathcomp-ssreflect │  107.47   108.00  -0.49 │   679747665599    680211364324  -0.07 │ 1631324  1648016  -1.01 │
│                        coq-compcert │  301.59   302.95  -0.45 │  1989978268888   1993183383374  -0.16 │ 1164916  1170048  -0.44 │
│                          coq-stdlib │  358.76   360.34  -0.44 │  1258355236330   1258263010342   0.01 │  631260   631404  -0.02 │
│                  coq-metacoq-common │   67.14    67.40  -0.39 │   439474504976    441534665470  -0.47 │ 1041896  1046604  -0.45 │
│                        coq-rewriter │  334.80   335.97  -0.35 │  2510371828903   2518197370284  -0.31 │ 1301616  1299748   0.14 │
│                             coq-vst │  860.85   863.62  -0.32 │  6503269578855   6522302931139  -0.29 │ 2194520  2194400   0.01 │
│                      coq-coquelicot │   37.55    37.66  -0.29 │   228799932878    227672659793   0.50 │  804996   806100  -0.14 │
│                   coq-iris-examples │  391.64   392.70  -0.27 │  2626139054660   2634319003212  -0.31 │ 1089224  1093500  -0.39 │
│                      coq-verdi-raft │  533.80   535.17  -0.26 │  3718822667615   3733618006836  -0.40 │  831640   818832   1.56 │
│          coq-performance-tests-lite │  906.18   908.12  -0.21 │  7311371903823   7316188696725  -0.07 │ 2446896  2446836   0.00 │
│                coq-mathcomp-algebra │  163.00   163.32  -0.20 │  1096403941967   1097000621282  -0.05 │ 1259748  1258804   0.07 │
│                   coq-metacoq-pcuic │  674.38   675.54  -0.17 │  4383464495399   4386252375469  -0.06 │ 2293660  2301836  -0.36 │
│                 coq-metacoq-erasure │  516.24   517.08  -0.16 │  3581562888257   3582313236568  -0.02 │ 1823132  1823464  -0.02 │
│               coq-mathcomp-solvable │   95.99    96.11  -0.12 │   660568354180    661895104798  -0.20 │  879264   881016  -0.20 │
│               coq-mathcomp-fingroup │   26.24    26.27  -0.11 │   171783201546    172042020835  -0.15 │  563800   563700   0.02 │
│        coq-fiat-crypto-with-bedrock │ 5839.37  5842.58  -0.05 │ 47411204925686  47442538180022  -0.07 │ 3245468  3245512  -0.00 │
│                       coq-fourcolor │ 1347.07  1347.80  -0.05 │ 12524149605375  12540846142717  -0.13 │  872312   874860  -0.29 │
│         coq-rewriter-perf-SuperFast │  776.62   777.04  -0.05 │  5951039843376   5966133714085  -0.25 │ 1382140  1395100  -0.93 │
│                            coq-corn │  674.73   675.03  -0.04 │  4675133838890   4681553842875  -0.14 │  679112   721856  -5.92 │
│              coq-mathcomp-odd-order │  539.90   540.14  -0.04 │  3738141552589   3738567596825  -0.01 │ 1576376  1577456  -0.07 │
│                coq-metacoq-template │  146.81   146.87  -0.04 │   989810414369    993064527389  -0.33 │ 1043540  1047340  -0.36 │
│             coq-metacoq-safechecker │  347.46   347.39   0.02 │  2644991138809   2646015729516  -0.04 │ 1706332  1711240  -0.29 │
│               coq-mathcomp-analysis │  590.90   589.96   0.16 │  4361814936787   4362853272920  -0.02 │ 1807812  1809016  -0.07 │
│                  coq-mathcomp-field │   90.95    90.80   0.17 │   629614972811    629923111674  -0.05 │ 1161588  1161652  -0.01 │
│                        coq-bedrock2 │  324.18   323.21   0.30 │  2725365222520   2731719843835  -0.23 │  851664   852752  -0.13 │
│            coq-metacoq-translations │   16.51    16.46   0.30 │   117660860550    118139173444  -0.40 │  773064   777304  -0.55 │
│                            coq-hott │  156.55   156.05   0.32 │  1090771849221   1091219694637  -0.04 │  470468   465996   0.96 │
│                            coq-core │  134.05   133.61   0.33 │   541162953902    541084510661   0.01 │  484800   485468  -0.14 │
└─────────────────────────────────────┴─────────────────────────┴───────────────────────────────────────┴─────────────────────────┘

INFO: failed to install
coq-test-suite (in NEW)

🐢 Top 25 slow downs
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                 TOP 25 SLOW DOWNS                                                                 │
│                                                                                                                                                   │
│   OLD       NEW      DIFF    %DIFF   Ln                      FILE                                                                                 │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│  63.3940   65.5420  2.1480    3.39%  609  coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html                                             │
│  65.0110   66.3220  1.3110    2.02%  609  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html           │
│   3.3180    3.9400  0.6220   18.75%  551  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html                               │
│  34.3130   34.7910  0.4780    1.39%  120  coq-unimath/UniMath/CategoryTheory/Hyperdoctrines/PartialEqRels/ExponentialEqs.v.html                   │
│  46.5890   47.0590  0.4700    1.01%  376  coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html                             │
│ 182.2850  182.7310  0.4460    0.24%  233  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │
│ 119.7600  120.2050  0.4450    0.37%   22  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html                                  │
│  16.9000   17.3240  0.4240    2.51%   32  coq-performance-tests-lite/src/pattern.v.html                                                           │
│  36.3150   36.7350  0.4200    1.16%  139  coq-fiat-parsers/src/Parsers/Refinement/SharpenedJSON.v.html                                            │
│  20.0540   20.4410  0.3870    1.93%  338  coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html                             │
│  38.9300   39.2900  0.3600    0.92%  236  coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html               │
│  26.6890   27.0380  0.3490    1.31%   68  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/VerifyDecode.v.html      │
│  42.6500   42.9950  0.3450    0.81%  834  coq-vst/veric/binop_lemmas4.v.html                                                                      │
│  22.7180   23.0590  0.3410    1.50%   79  coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/SieveOfEratosthenes.v.html       │
│  32.7540   33.0810  0.3270    1.00%  147  coq-vst/veric/expr_lemmas4.v.html                                                                       │
│  23.7850   24.1080  0.3230    1.36%   12  coq-fourcolor/theories/proof/job486to489.v.html                                                         │
│   7.1860    7.5010  0.3150    4.38%  604  coq-unimath/UniMath/CategoryTheory/EnrichedCats/Colimits/Examples/StructureEnrichedColimits.v.html      │
│  25.0840   25.3980  0.3140    1.25%   12  coq-fourcolor/theories/proof/job223to226.v.html                                                         │
│  21.6600   21.9680  0.3080    1.42%   49  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html                                 │
│  27.8030   28.0990  0.2960    1.06%   12  coq-fourcolor/theories/proof/job107to164.v.html                                                         │
│   0.2650    0.5500  0.2850  107.55%  102  coq-metacoq-erasure/erasure/theories/EOptimizePropDiscr.v.html                                          │
│   0.2750    0.5560  0.2810  102.18%  111  coq-metacoq-erasure/erasure/theories/ECoInductiveToInductive.v.html                                     │
│  80.0270   80.3060  0.2790    0.35%   48  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html                                 │
│  36.1140   36.3880  0.2740    0.76%  673  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                                    │
│  27.1000   27.3690  0.2690    0.99%   12  coq-fourcolor/theories/proof/job287to290.v.html                                                         │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
🐇 Top 25 speed ups
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                               TOP 25 SPEED UPS                                                               │
│                                                                                                                                              │
│   OLD       NEW      DIFF     %DIFF    Ln                     FILE                                                                           │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 200.4050  197.9550  -2.4500   -1.22%     8  coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html    │
│   7.2190    5.7660  -1.4530  -20.13%   130  coq-category-theory/Functor/Strong/Product.v.html                                                │
│   5.0040    3.9190  -1.0850  -21.68%    22  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html                           │
│  17.8500   17.2960  -0.5540   -3.10%    31  coq-engine-bench-lite/coq/PerformanceDemos/pattern.v.html                                        │
│  57.0660   56.5510  -0.5150   -0.90%   731  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JacobianCoZ.v.html                            │
│  38.8540   38.3830  -0.4710   -1.21%  1350  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │
│  46.6240   46.2030  -0.4210   -0.90%   974  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                             │
│   9.6200    9.2210  -0.3990   -4.15%   345  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/EdwardsXYZT.v.html                       │
│  11.5930   11.2020  -0.3910   -3.37%  2103  coq-mathcomp-ssreflect/mathcomp/ssreflect/order.v.html                                           │
│   0.9920    0.6430  -0.3490  -35.18%   813  coq-stdlib/MSets/MSetRBT.v.html                                                                  │
│   3.4790    3.1610  -0.3180   -9.14%   490  coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html                                       │
│   5.0000    4.6880  -0.3120   -6.24%  2089  coq-mathcomp-ssreflect/mathcomp/ssreflect/order.v.html                                           │
│ 235.8000  235.5140  -0.2860   -0.12%   141  coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html                       │
│  31.0190   30.7510  -0.2680   -0.86%    12  coq-fourcolor/theories/proof/job254to270.v.html                                                  │
│   0.8600    0.5950  -0.2650  -30.81%   170  coq-stdlib/Numbers/HexadecimalNat.v.html                                                         │
│   0.4460    0.1830  -0.2630  -58.97%   128  coq-metacoq-erasure/erasure/theories/ECoInductiveToInductive.v.html                              │
│  46.2770   46.0280  -0.2490   -0.54%   110  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html     │
│ 132.9470  132.6990  -0.2480   -0.19%   155  coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html                       │
│  94.0620   93.8220  -0.2400   -0.26%    20  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/NBE.v.html                                      │
│  28.9690   28.7480  -0.2210   -0.76%    12  coq-fourcolor/theories/proof/job589to610.v.html                                                  │
│   0.8150    0.5950  -0.2200  -26.99%   160  coq-stdlib/Numbers/HexadecimalNat.v.html                                                         │
│  19.5870   19.3710  -0.2160   -1.10%    12  coq-fourcolor/theories/proof/job507to510.v.html                                                  │
│  23.5340   23.3260  -0.2080   -0.88%    12  coq-fourcolor/theories/proof/job295to298.v.html                                                  │
│   0.7350    0.5330  -0.2020  -27.48%   274  coq-metacoq-erasure/erasure/theories/EGenericMapEnv.v.html                                       │
│   1.2910    1.0930  -0.1980  -15.34%    27  coq-category-theory/Instance/Cones/Comma.v.html                                                  │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

@silene
Copy link
Contributor

silene commented Nov 26, 2024

What Coq package is using the "install META next to .vo files" pattern?

Mine, for instance. I have never seen the point of polluting the global OCaml namespace with my Coq plugins.

Sure, not polluting the global OCaml namespace means that, if someone wanted to build a plugin on top of mine, they would have to set the OCAMLPATH environment variable. But I find it a reasonable tradeoff.

The progress here is that we are (actually already did) phasing out the Coq custom ML library handling infra for findlib.

This is backward. META files have appeared because we have switched to findlib. Without findlib, there would be no need to store META files in the first place. So, this pull request will not help our switch to findlib, which already happened anyway, as you wrote.

@ejgallego
Copy link
Member

Mine, for instance. I have never seen the point of polluting the global OCaml namespace with my Coq plugins.

Sure, not polluting the global OCaml namespace means that, if someone wanted to build a plugin on top of mine, they would have to set the OCAMLPATH environment variable. But I find it a reasonable tradeoff.

This is backward. META files have appeared because we have switched to findlib. Without findlib, there would be no need to store META files in the first place. So, this pull request will not help our switch to findlib, which already happened anyway, as you wrote.

I'm unsure what to say, @SkySkimmer ?

@SkySkimmer
Copy link
Contributor Author

I think "polluting" is not a fitting description of putting ocaml files in the standard ocaml search path, and "they would have to set the OCAMLPATH environment variable" is an indication that not putting them in the standard search path is a mistake.

@ejgallego
Copy link
Member

I think "polluting" is not a fitting description of putting ocaml files in the standard ocaml search path, and "they would have to set the OCAMLPATH environment variable" is an indication that not putting them in the standard search path is a mistake.

I share this view. IMHO it is reasonable for Coq to fully rely on findlib without extra semantics. This seems clear and simple: "if you want your Coq plugin to work, make sure it is properly configured as a findlib library"

Note that there was a discussion about the tradeoffs of relying on findlib, IIRC this downside was discussed.

In particular, I think what Coq is doing today is closer to "polluting" OCAMLPATH by adding all these loadpaths that shouldn't be needed (I think the bench allows us to observe that indeed)

Plugin authors willing to use a non-standard layout can do so, but they would be responsible of extending the several needed paths to accommodate the custom layout too.

@silene I think that if you still don't agree with this PR we can schedule a Coq Call discussion, WDYT?

p.s: Note that in

The progress here is that we are (actually already did) phasing out the Coq custom ML library handling infra for findlib.

The progress I refer to is about cleaning up code that shouldn't be needed anymore, and in this case cleaning up the paths we add (mostly unnecessarily) to Coq.

@ejgallego ejgallego added the part: build The build system. label Nov 27, 2024
@silene
Copy link
Contributor

silene commented Nov 28, 2024

I think what Coq is doing today is closer to "polluting" OCAMLPATH by adding all these loadpaths that shouldn't be needed (I think the bench allows us to observe that indeed)

This argument works both ways. Installing Coq plugins inside the global findlib namespace might make Coq faster, but it also makes all the other OCaml programs slower. (And coq/rfcs#101 will make things even worse, since even plugin-free developments will then be installed in the global findlib namespace.)

Also, note that I am not the only one to think that it is a poor idea. For example, think about the Nix packagers who are forced to do things like mv $OCAMLFIND_DESTDIR/coq $out/lib/coq/${coq.coq-version} to move the Coq plugins out of the global findlib namespace.

@ejgallego
Copy link
Member

Installing Coq plugins inside the global findlib namespace might make Coq faster, but it also makes all the other OCaml programs slower.

How does installing plugins in the regular ocaml library path make other ocaml programs slower?

For example, think about the Nix packagers who are forced to do things like mv $OCAMLFIND_DESTDIR/coq $out/lib/coq/${coq.coq-version} to move the Coq plugins out of the global findlib namespace.

I am not familiar with this, why do they need to do that? Is that something Coq-specific, or that applies to all OCaml / Dune packages?

@ejgallego
Copy link
Member

Ping @silene

Copy link
Member

@gares gares left a comment

Choose a reason for hiding this comment

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

I think it is better to stick the standard way ocaml libraries are installed system wide. Passing extra -I seems to still let one do a custom install, for whatever reason.

@ejgallego
Copy link
Member

Re-ping @silene

Note that I don't thing this could be a serious issue, but it seems large OCAMLPATHs do indeed degrade ocamlfind performance, this could an issue for Nix.

@SkySkimmer
Copy link
Contributor Author

ping @silene @ejgallego

Copy link
Contributor

@silene silene left a comment

Choose a reason for hiding this comment

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

While I would have preferred a more conservative solution (e.g., instead of removing all the directories, only remove those that do not have a META grandchild), I am fine with the pull request.

@ppedrot ppedrot self-assigned this Jan 11, 2025
@ppedrot
Copy link
Member

ppedrot commented Jan 11, 2025

Since @ejgallego was fine with the PR, I'm going to merge myself, so that we don't get a mess out of merge issues on Monday. @coqbot merge now

@coqbot-app coqbot-app bot merged commit 655a22a into coq:master Jan 11, 2025
7 checks passed
@SkySkimmer SkySkimmer deleted the no-ml-misc-dirs branch January 13, 2025 12:54
@ejgallego
Copy link
Member

I'm indeed fine with merging this, however an important question was not answered:

Installing Coq plugins inside the global findlib namespace might make Coq faster, but it also makes all the other OCaml programs slower.

@silene do you have more information on this.

Regarding Nix (cc: @Zimmi48 @vbgl and who else?) , note that indeed findlib becomes slower when OCAMLPATH is large, so Nix users / devs may want to perf findlib and maybe open an upstream issue.

[Note that this PR actually makes Coq faster, IIUTC]

@silene
Copy link
Contributor

silene commented Jan 14, 2025

There is not much to say. Computers are not magical beasts that can perform any operation in O(1) time. The amount of entries in a directory directly impacts the performance of any program that needs to access anything in it. Even if operating systems work very hard to reduce this cost (B-trees, negative caches, etc), it still far from negligible. For example, Git tries hard to limit the number of entries in .git/objects to 256, and so do other tools that are serious about the performance of disk accesses. Having a large amount of entries in .../lib/ocaml (or whatever is given by ocamlfind printconf) will impact any OCaml program doing dynamic linking from it.

@ejgallego
Copy link
Member

I see @silene , I didn't get you were talking about low-level filesystem performance. In my opinion this is hardly a factor at play here, and the overhead of Coq plugins adding a few more directory entries will be at most in the nanosecond category, so I'm surprised to see a discussion about impact.

On the other hand, the impact of longer OCAMLPATH is way higher and can be measured, so that is a concern for Nix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: cleanup Code removal, deprecation, refactorings, etc. part: build The build system. part: toplevel
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants