Stable Interface (v1.0)
Make the entire library
-safe-stringcompliant. This will involve introducing a
Bytesmodule, removing all direct mutation on strings from the
Stringmodule, and "re-typing" string values that require mutation to
Do not export the
\*\_intfmodules from Base. Instead, any signatures should be exported by the
Only expose the first-class module interface of
Hashtbl. Accompanying this should be cleanup of
Hashtbl_intf, moving anything that's still required in core_kernel to the appropriate files in that project.
Hashtbl.create (module String) ()by just
Hashtbl.create (module String)
Label one of the arguments of
Hashtbl_intf.merge_intoto indicate the flow of data.
Either.tas the return value for
Eliminate all uses of
Not_found, replacing them with descriptive error messages.
Move the various private modules to
cmpas the label for comparison functions throughout.
Sexp_conv's public interface. These values are hidden from the documentation so their removal won't be considered a breaking API change.
Do not expose the type equality
Int63_emul.W.t = int64.
Replace the exception thrown by
Float.of_stringwith a named exception that's more descriptive.
Hashabletoplevel module. This is a vestige of the previous
Setimplementations and is no longer needed.
Mapoperations that are effective NO-OPs return the same
Map.tthey were provided. Candidate operations include e.g
Simplify the implementation of
Option.value_exn, if possible.
Eliminate all instances of
Refactor common blit code in
Delete unused function aliases in
Sexp_conv.Exn_converterinto its own file, with only an alias in Sexp_conv, so that it doesn't get pulled unless used
Create a file with all the basic types and their associated combinators (
hash), and expose the declaration
Put all the exported private modules from
Decide on a better name for
Polymorphic_compare_intfcontains interface for comparison of non-polymorphic types, which is weird. Get rid of it and inline things in
hashtbl_of_sexpshouldn't live in Base.Sexp_conv since we have our own hash tables. Move it to sexplib
Hash_set.diff, use the size of each set to determine which to iterate over.
Ensure that the correct
comparefunction and other related functions are exported by all modules. These functions should not be derived from a functor application, in order to ensure proper inlining. Implementing this change should also include benchmarks to verify the initial result, and to maintain it on an ongoing basis. See
Lazy.compareby performing a
phys_equalcheck before forcing the lazy value. Note that this will also change the semantics of
compareand should be documented and rolled out with care.
Conduct a thorough performance review of the
Consolidate documentation the interface and implementation files related to the
Add documentation to the
Document properly how
String.unescape_genhandles malformed strings
Changes For The Distant Future
- Make the various comparison functions return an
Ordering.tinstead of an