janestreet / core

Jane Street Capital's standard library overlay
MIT License
1.11k stars 111 forks source link

Utop errors as of ocaml 4.06 #101

Closed jeb2239 closed 6 years ago

jeb2239 commented 6 years ago
Exception: <abstr>.
-----Welcome to utop etc.... ---------
Raised by primitive operation at unknown location
Called from file "toplevel/topdirs.ml", line 144, characters 10-51
Findlib has been successfully loaded. Additional directives:
  #require "package";;      to load a package
  #list;;                   to list the available packages
  #camlp4o;;                to load camlp4 (standard syntax)
  #camlp4r;;                to load camlp4 (revised syntax)
  #predicates "p,q,...";;   to set these predicates
  Topfind.reset();;         to force that packages will be reloaded
  #thread;;                 to enable threads

Exception: (Failure "Expect_test_collector.set: already set").
Raised at file "pervasives.ml", line 32, characters 22-33
Called from file "src/time_ns.ml", line 1, characters 0-0
Called from file "toplevel/topdirs.ml", line 144, characters 10-51

Exception: (Failure "Expect_test_collector.set: already set").
File ".ocamlinit", line 1:
Error: Reference to undefined global `Core'
Raised at file "pervasives.ml", line 32, characters 22-33
Called from file "src/description.ml", line 1, characters 0-0
Called from file "toplevel/topdirs.ml", line 144, characters 10-51

Type #utop_help for help about using utop.

happens with the ocamlinit

(* Added by OPAM. *)
let () =
  try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
  with Not_found -> ()
;;

(* ## added by OPAM user-setup for ocamltop / base ## 3ec62baf6f9c219ae06d9814069da862 ## you can edit, but keep this line *)
#use "topfind";;
(* ## end of OPAM user-setup addition for ocamltop / base ## keep this line *)
#thread;;
#require "ppx_jane";;
#require "core.top";;
#require "async";;
#require "core_extended";;
open Core.Std;;

Any reason why this maybe happening with Ocaml 4.06 and core? Thank you!

xclerc commented 6 years ago

I was not able to reproduce the problem. With the provided .ocamlinit contents, I get a warning (Warning 3: deprecated: module Core.Std) but no exception.

Your problem might come from a particular combination of versions, could you share the versions of the various packages? (Then, it might be interesting to try to opam update/upgrade to see whether the latest versions exhibit the same problem.)

jeb2239 commented 6 years ago

These are the packages: I still get this error even after a fresh opam installation.

-> % opam list
# Installed packages for 4.06.0:
angstrom                      0.7.0  Parser combinators built for speed and memory-efficiency
async                        v0.9.0  Monadic concurrency library
async_extra                  v0.9.0  Monadic concurrency library
async_kernel                 v0.9.0  Monadic concurrency library
async_rpc_kernel             v0.9.0  Platform-independent core of Async RPC library
async_unix                   v0.9.1  Monadic concurrency library
base                         v0.9.4  Full standard library replacement for OCaml
base-bigarray                  base  Bigarray library distributed with the OCaml compiler
base-bytes                     base  Bytes library distributed with the OCaml compiler
base-threads                   base  Threads library distributed with the OCaml compiler
base-unix                      base  Unix library distributed with the OCaml compiler
bin_prot                     v0.9.2  A binary protocol generator
camomile                      0.8.7  A comprehensive Unicode library
conf-m4                           1  Virtual package relying on m4
configurator                 v0.9.1  Helper library for gathering system configuration
core                         v0.9.2  Industrial strength alternative to OCaml's standard library
core_kernel                  v0.9.1  Industrial strength alternative to OCaml's standard library
cppo                          1.6.0  Equivalent of the C preprocessor for OCaml programs
fieldslib                    v0.9.0  Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of 
jane-street-headers          v0.9.0  Jane Street C header files
jbuilder                 1.0+beta16  Fast, portable and opinionated build system
lambda-term                  1.12.0  Terminal manipulation library for OCaml
lwt                           3.2.0  Promises, concurrency, and parallelized I/O
lwt_react                     1.1.0  Helpers for using React with Lwt
num                             1.1  The legacy Num library for arbitrary-precision integer and rational arithmetic
ocaml-compiler-libs          v0.9.0  OCaml compiler libraries repackaged
ocaml-migrate-parsetree       1.0.7  Convert OCaml parsetrees between different versions 
ocamlbuild                   0.12.0  OCamlbuild is a build system with builtin rules to easily build most OCaml projects.
ocamlfind                   1.7.3-1  A library manager for OCaml
octavius                      1.2.0  Ocamldoc comment syntax parser
ppx_assert                   v0.9.0  Assert-like extension nodes that raise useful errors on failure
ppx_ast                      v0.9.2  OCaml AST used by Jane Street ppx rewriters
ppx_base                     v0.9.0  Base set of ppx rewriters
ppx_bench                    v0.9.1  Syntax extension for writing in-line benchmarks in ocaml code
ppx_bin_prot                 v0.9.0  Generation of bin_prot readers and writers from types
ppx_compare                  v0.9.0  Generation of comparison functions from types
ppx_core                     v0.9.3  Standard library for ppx rewriters
ppx_custom_printf            v0.9.0  Printf-style format-strings for user-defined string conversion
ppx_derivers                    1.0  Shared [@@deriving] plugin registry
ppx_driver                   v0.9.2  Feature-full driver for OCaml AST transformers
ppx_enumerate                v0.9.0  Generate a list containing all values of a finite type
ppx_expect                   v0.9.0  Cram like framework for OCaml
ppx_fail                     v0.9.0  Add location to calls to failwiths
ppx_fields_conv              v0.9.0  Generation of accessor and iteration functions for ocaml records
ppx_hash                     v0.9.0  A ppx rewriter that generates hash functions from type expressions and definitions
ppx_here                     v0.9.1  Expands [%here] into its location
ppx_inline_test              v0.9.2  Syntax extension for writing in-line tests in ocaml code
ppx_jane                     v0.9.0  Standard Jane Street ppx rewriters
ppx_js_style                 v0.9.0  Code style checker for Jane Street Packages
ppx_let                      v0.9.0  Monadic let-bindings
ppx_metaquot                 v0.9.0  Write OCaml AST fragment using OCaml syntax
ppx_optcomp                  v0.9.0  Optional compilation for OCaml
ppx_optional                 v0.9.0  Pattern matching on flat options
ppx_pipebang                 v0.9.0  A ppx rewriter that inlines reverse application operators `|>` and `|!`
ppx_sexp_conv                v0.9.0  Generation of S-expression conversion functions from type definitions
ppx_sexp_message             v0.9.0  A ppx rewriter for easy construction of s-expressions
ppx_sexp_value               v0.9.0  A ppx rewriter that simplifies building s-expressions from ocaml values
ppx_tools_versioned           5.0.1  A variant of ppx_tools based on ocaml-migrate-parsetree
ppx_traverse                 v0.9.0  Automatic generation of open-recursion classes
ppx_traverse_builtins        v0.9.0  Builtins for Ppx_traverse
ppx_type_conv                v0.9.1  Support Library for type-driven code generators
ppx_typerep_conv             v0.9.0  Generation of runtime types from type declarations
ppx_variants_conv            v0.9.0  Generation of accessor and iteration functions for ocaml variant types
re                            1.7.1  RE is a regular expression library for OCaml
react                         1.2.1  Declarative events and signals for OCaml
result                          1.2  Compatibility Result module
sexplib                      v0.9.3  Library for serializing OCaml values to and from S-expressions
spawn                        v0.9.0  Spawning sub-processes
stdio                        v0.9.1  Standard IO library for OCaml
topkg                         0.9.1  The transitory OCaml software packager
typerep                      v0.9.0  typerep is a library for runtime types.
utop                          2.0.2  Universal toplevel for OCaml
variantslib                  v0.9.0  Part of Jane Street's Core library
zed                             1.6  Abstract engine for text edition in OCaml

Additionally doing results in an error which never happened in previous versions.

utop # #require "async";;
Exception: (Failure "Expect_test_collector.set: already set").
Raised at file "pervasives.ml", line 32, characters 22-33
Called from file "src/time_ns.ml", line 1, characters 0-0
Called from file "toplevel/topdirs.ml", line 144, characters 10-51

Exception: (Failure "Expect_test_collector.set: already set").
Error: Reference to undefined global `Core'
hhugo commented 6 years ago

@jeb2239, can you retry after upgrading all janestreet packages to v0.10

hhugo commented 6 years ago

reopen if needed