-
Notifications
You must be signed in to change notification settings - Fork 414
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
feature: load modules in the repl #5940
Conversation
What's the relation between this PR and |
Just updated the PR description. |
4228460
to
c6c0096
Compare
I guess this needs documentation, right? |
Do you think we need something in the online manual or is the man page enough? |
Leaving this to doc experts, but I see |
Sidenote,
|
0e86fb6
to
fe8b0f7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Two minor capitalisations.
res | ||
in | ||
let* dir_contents = | ||
drop_rules @@ fun () -> Dune_rules.Dir_contents.get sctx ~dir |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is drop_rules doing here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The function returns the rules in addition, but we don't need the rules since they've already been setup.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Let me give this a try. Although I would say that this issue isn't blocking the PR.
We could add this if there's demand for it. I personally preferred the approach of building the toplevel binary ourself, but Jeremie liked doing everything through directives more.
I would say that we should deprecate There's still a few issues with this PR btw:
The first two problems can be fixed with additional directives. Although if we went for the approach of building the toplevel (like To solve the 3rd problem, we must prepare an object directory free of stale artifacts. The simplest way to do that is just to copy the objects into some temp dir and use that. A more clever way is to introduce rules for each modules that will setup the subdirectory with only the relevant artifacts. |
fe8b0f7
to
e04fd0d
Compare
7279d02
to
ab352d4
Compare
@rgrinberg I was about to include it into 3.4 even with the limitations you mentioned but happy to postpone to 3.5. |
The issue with the stale artifacts makes this feature not very ergonomic at the moment unfortunately. I'd rather solve this issue first |
That's actually due to a bug with our fork of cmdliner. Once we update our version of cmdliner, the per command docs should appear. |
ab352d4
to
371d15a
Compare
[ `Library of Dune_file.Library.t | ||
| `Executables of Dune_file.Executables.t | ||
] | ||
Module_name.Map.t |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fyi @jchavarri
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ftr: Merged into 8b1d684
8c3d5cb
to
d0aaeae
Compare
introduce a $ dune ocaml top-module command to load modules directly Signed-off-by: Rudi Grinberg <[email protected]> ps-id: 79f4ac2d-0e7b-4983-9bee-c410d534bc8e
d0aaeae
to
1bc4e91
Compare
…ne-site, dune-rpc, dune-rpc-lwt, dune-private-libs, dune-glob, dune-configurator, dune-build-info, dune-action-plugin and chrome-trace (3.6.0) CHANGES: - Forbid multiple instances of dune running concurrently in the same workspace. (ocaml/dune#6360, fixes ocaml/dune#236, @rgrinberg) - Allow promoting into source directories specified by `subdir` (ocaml/dune#6404, fixes ocaml/dune#3502, @rgrinberg) - Make dune describe workspace return the correct root path (ocaml/dune#6380, fixes ocaml/dune#6379, @esope) - Introduce a `$ dune ocaml top-module` subcommand to load modules directly without sealing them behind the signature. (ocaml/dune#5940, @rgrinberg) - [ctypes] do not mangle user written names in the ctypes stanza (ocaml/dune#6374, fixes ocaml/dune#5561, @rgrinberg) - Support `CLICOLOR` and `CLICOLOR_FORCE` to enable/disable/force ANSI colors. (ocaml/dune#6340, fixes ocaml/dune#6323, @MisterDA). - Forbid private libraries with `(package ..)` set from depending on private libraries that don't belong to a package (ocaml/dune#6385, fixes ocaml/dune#6153, @rgrinberg) - Allow `Byte_complete` binaries to be installable (ocaml/dune#4873, @AltGr, @rgrinberg) - Revive `$ dune external-lib-deps` under `$ dune describe external-lib-deps`. (ocaml/dune#6045, @moyodiallo) - Fix running inline tests in bytecode mode (ocaml/dune#5622, fixes ocaml/dune#5515, @dariusf) - [ctypes] always re-run `pkg-config` because we aren't tracking its external dependencies (ocaml/dune#6052, @rgrinberg) - [ctypes] remove dependency on configurator in the generated rules (ocaml/dune#6052, @rgrinberg) - Build progress status now shows number of failed jobs (ocaml/dune#6242, @Alizter) - Allow absolute build directories to find public executables. For example, those specified with `(deps %{bin:...})` (ocaml/dune#6326, @anmonteiro) - Create a fake socket file `_build/.rpc/dune` on windows to allow rpc clients to connect using the build directory. (ocaml/dune#6329, @rgrinberg) - Prevent crash if absolute paths are used in the install stanza and in recursive globs. These cases now result in a user error. (ocaml/dune#6331, @gridbugs) - Add `(glob_files <glob>)` and `(glob_files_rec <glob>)` terms to the `files` field of the `install` stanza (ocaml/dune#6250, closes ocaml/dune#6018, @gridbugs) - Allow `:standard` in the `(modules)` field of the `coq.pp` stanza (ocaml/dune#6229, fixes ocaml/dune#2414, @Alizter) - Fix passing of flags to dune coq top (ocaml/dune#6369, fixes ocaml/dune#6366, @Alizter) - Extend the promotion CLI to a `dune promotion` group: `dune promote` is moved to `dune promotion apply` (the former still works) and the new `dune promotion diff` command can be used to just display the promotion without applying it. (ocaml/dune#6160, fixes ocaml/dune#5368, @emillon)
This PR introduces the
$ dune ocaml top-level src/module.ml
command. The purpose of this command is to load a particular module for interactive development. The way it differs from the other toplevel commands is that it only build the minimal amount needed to load a particular module and then it evaluates the module's source with#use
. The point of this is to avoid sealing the module with the mli and thereby allowing interactive development with all the private parts of the module.@ulugbekna this should work nicely for vscode