janestreet / core_kernel Goto Github PK
View Code? Open in Web Editor NEWJane Street's standard library overlay (kernel)
License: MIT License
Jane Street's standard library overlay (kernel)
License: MIT License
I installed opam on Ubuntu 14.04(Mininet 2.1.0 on Ubuntu 14.04) on virtualbox, as the http://opam.ocaml.org/doc/Install.html requires:
1、add-apt-repository ppa:avsm/ppa
2、apt-get update
3、apt-get install ocaml ocaml-native-compilers camlp4-extra opam
4、opam init
5、opam install async
in the 5th step, async installation failed, it shows "the comilation of core_kernel.112.06.00 failed". following is the detail, how should i fix this problem?
1、add-apt-repository ppa:avsm/ppa
2、apt-get update
3、apt-get install ocaml ocaml-native-compilers camlp4-extra opam
4、opam init
5、opam install async
in the 5th step, async installation failed, it shows "the comilation of core_kernel.112.06.00 failed". following is the detail, how should i fix this problem?
=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following failed
A deeply uninteresting Bytes module was introduced in 112.35.00. It would be nice if the stdlib's version were exported as Caml.Bytes.
Apologies if this information is available elsewhere.
I'm interested in using the splittable_random functionality in a library.
https://github.com/janestreet/core_kernel/blob/114.04/src/splittable_random.ml
It'd be useful to have a fold_right2
function, as in the standard library
There are two identical definitions of Pack_signed_32_argument_out_of_range
, which breaks the build with ocaml trunk:
File "lib/binary_packing.ml", line 327, characters 0-63:
Error: Multiple definition of the extension constructor name Pack_signed_32_argument_out_of_range.
Names must be unique in a given structure or signature.
Diff is:
--- a/lib/binary_packing.ml
+++ b/lib/binary_packing.ml
@@ -324,7 +324,6 @@ let check_signed_32_in_range n =
raise (Pack_signed_32_argument_out_of_range n)
ENDIF
-exception Pack_signed_32_argument_out_of_range of int with sexp
let pack_signed_32_int ~byte_order ~buf ~pos n =
assert (Sys.word_size = 64);
check_signed_32_in_range n;
I've been migrating some list-processing code to use Core_kernel instead of the standard library and noticed that the documentation strings for the two libraries have somehow become interchanged. The standard library documentation for List.exists2
says:
Same as
List.exists
, but for a two-argument predicate. RaiseInvalid_argument
if the two lists have different lengths.
In fact, List.exists2
does not always raise Invalid_argument
if the two lists have different lengths:
# List.exists2 (>) [1; 2] [3; 1; 0];;
- : bool = true
On the other hand, the documentation for Core.Std.List.exists2_exn
says:
Same as
List.exists
, but for a two-argument predicate. RaiseInvalid_argument
if the end of one list is reached before the end of the other.
In fact, Core.Std.List.exists2_exn
can fail even if the predicate is satisfied (which should mean that the ends of the lists are not reached):
# Core_kernel.Std.List.exists2_exn ~f:(>) [1; 2] [3; 1; 0];;
Exception: Invalid_argument "length mismatch in exists2_exn: 2 <> 3 ".
I'd submit a pull request fixing the documentation (as for the standard library), but wonder if the implementation might be changed instead. It seems a bit inefficient to traverse both lists before starting when the function is supposed to be short-circuiting.
The rendered documentation for the result type [0] has some typos:
'a is a function's expected return type, and 'b is often an error message string.
The type parameters are not called 'a and 'b though, but 'ok and 'err.
[0] https://ocaml.janestreet.com/ocaml-core/latest/doc/core_kernel/Std/Result.mod/
I'm not sure whether this is because the fixes didn't land into the upstream yet or the failure that is detected by the NixOS CI is a new manifestation of the same bug. If it is already fixed, then can you please tell in which public version?
Core defines ident
function available in the global namespace, as a regular OCaml function not as an "%identity" primitive. As a result this doesn't allow certain kinds of optimization performed by a compiler, and may affect performance.
Fn.id
on the other hand is a primitive.
Is it intended? If not then I can provide a PR to fix this.
Core_kernel's META
file references unix
and pa_ounit
.
And among its dependencies, there a few more unix
requires:
for i in bin_prot variantslib sexplib fieldslib bigarray pa_ounit res ; do
cd ../$i ; pwd; cat META | grep unix ; cd - > /dev/null ;
done
OPAMROOT/4.00.1/lib/bin_prot
requires = "unix bigarray"
OPAMROOT/4.00.1/lib/variantslib
OPAMROOT/4.00.1/lib/sexplib
requires = "unix bigarray num"
OPAMROOT/4.00.1/lib/fieldslib
OPAMROOT/4.00.1/lib/bigarray
requires = "unix"
OPAMROOT/4.00.1/lib/pa_ounit
OPAMROOT/4.00.1/lib/res
So I removed unix
(and pa_onuit
) from all the META
files, and
then I got a linking error:
File "_none_", line 1:
Error: Error on dynamically loaded library:
OPAMROOT/4.00.1/lib/stublibs/dllcore_kernel_stubs.so:
OPAMROOT/4.00.1/lib/stublibs/dllcore_kernel_stubs.so:
undefined symbol: uerror
It seems to be (at least) in lib/channel_stubs.c:62.
Shouldn't the function Unpack_buffer.Unpack_one.create [1] be exposed if the default values in the documentation are to make sense [2]?
[1] https://github.com/janestreet/core_kernel/blob/master/src/unpack_buffer.ml#L23
[2] https://github.com/janestreet/core_kernel/blob/master/src/unpack_buffer.mli#L30
I'm trying to use core_kernel together with js_of_ocaml, but currently
there are few issues.
Core_kernel requires 32bit compiler
Although we should use 32bit compiler, OCaml's support for 32bit
compiler on 64bit architecture is very poor. I'm trying to add
support for 32bit compiler on OSX, but it is a hard task to me.
Core_kernel includes unit tests in its implementation
pa_ounit embeds unit tests as implementations so that unit tests
can be ran from command-line with special argument
inline-test-runner
. This is useful, but this also prevents
js_of_ocaml from doing dead-code-elimination. As a result,
js_of_ocaml outputs a huge JavaScript even though a source code is
tiny.
Here is an installation script of a customized core_kernel (named
core_kernel_js) that solves the issues above.
https://github.com/m2ym/core_kernel_js/blob/master/Makefile
What this script does are
ARCH_SIXTYFOUR
By this workaround, the following program becomes runnable even on
64bit architecture, though it is risky.
(* a.ml *)
open Core_kernel.Std
(* open Core_kernel_js.Std *)
let () =
let h = Int.Table.create ~size:32 () in
for i = 1 to 100 do
Hashtbl.set h i i
done;
Format.printf "%a@." Sexp.pp_hum (Int.Table.sexp_of_t sexp_of_int h)
Plus, thanks to dead-code-elimination, the size of JavaScript
generated by js_of_ocaml becomes reasonable and js_of_ocaml finishes
the job quickly. Here is a comparison.
core_kernel:
$ ocamlfind ocamlc -package core_kernel -linkpkg a.ml
$ time js_of_ocaml +weak.js core_kernel_runtime.js a.out
...
js_of_ocaml +weak.js core_kernel_runtime.js a.out 8.47s user 0.18s system 99% cpu 8.650 total
$ wc -c a.js
855567 a.js
core_kernel_js:
$ ocamlfind ocamlc -package core_kernel_js -linkpkg a.ml
$ time js_of_ocaml +weak.js core_kernel_runtime.js a.out
...
js_of_ocaml +weak.js core_kernel_runtime.js a.out 3.41s user 0.07s system 99% cpu 3.492 total
$ wc -c a.js
303229 a.js
It might be good if core_kernel has a compilation flag (something like
PREFER_THIRTYTWO_WORD_SIZE
) that tells compiler that users prefer
32bit word size even on 64bit architecture. This may encourage people
to adopt core_kernel for web-browser-based applications.
It must be great if pa_ounit and pa_bench have a compile-time/runtime
control flag that controls the generation of unit tests and benchmark
code. This may convince people that the adoption of core_kernel is
reasonable.
Hi all,
Attempting to install core_kernel via opam on the switch 4.03.0+32bit gives the following error
File "src/core_int63.ml", line 13, characters 42-216:
Error: Signature mismatch:
...
Values do not match:
val to_binable : Base__Int63_emul.t -> int64
is not included in
val to_binable : t -> Core_kernel.Core_int64.t
File "src/core_int63.ml", line 16, characters 8-18: Actual declaration
The actual type as written in core_int63.ml of to_binable
is Base.Int63.t
, which this file seems to be expecting to be Base__Int63_emul.t
. However, as far as I can gather, it is in fact Int63_backends.Dynamic.t
, as selected by this file because PORTABLE_INT63
is hardcoded to true in jbuilder.
Should these modules be nested?
https://github.com/janestreet/core_kernel/blob/master/src/or_error.ml#L45
My code using Let_syntax now looks like this:
let module Let_syntax = Or_error.Let_syntax.Let_syntax in
let%bind ...
Is this the intended usage?
Not when I first do ./configure --enable-tests
, either.
Tested by intentionally breaking a test (time_ns.ml:374
) and running ./configure --enable-tests; make clean; make test
I'm probably missing something, but perhaps that can be better documented? :)
$ opam install core --use-internal-solver
The following actions will be performed:
- install core_kernel v0.9.0 [required by core]
- install core v0.9.1
===== 2 to install =====
Do you want to continue ? [Y/n] y
=-=- Gathering sources =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[core] Archive in cache
[core_kernel] Archive in cache
=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[ERROR] The compilation of core_kernel failed at "jbuilder build -p core_kernel -j 4".
#=== ERROR while installing core_kernel.v0.9.0 ================================#
# opam-version 1.2.2
# os openbsd
# command jbuilder build -p core_kernel -j 4
# path /home/nullx002/.opam/4.04.1/build/core_kernel.v0.9.0
# compiler 4.04.1
# exit-code 1
# env-file /home/nullx002/.opam/4.04.1/build/core_kernel.v0.9.0/core_kernel-36008-5f1023.env
# stdout-file /home/nullx002/.opam/4.04.1/build/core_kernel.v0.9.0/core_kernel-36008-5f1023.out
# stderr-file /home/nullx002/.opam/4.04.1/build/core_kernel.v0.9.0/core_kernel-36008-5f1023.err
### stderr ###
# [...]
# ocamlopt src/config/discover.{cmx,o}
# ocamlopt src/config/discover.exe
# /usr/bin/ld: warning: creating a DT_TEXTREL in a shared object.
# discover src/config.h,src/rt-flags
# ocamlc src/bigstring_stubs.o (exit 2)
# (cd _build/default/src && /home/nullx002/.opam/4.04.1/bin/ocamlc.opt -g -I /home/nullx002/.opam/4.04.1/lib/base -I /home/nullx002/.opam/4.04.1/lib/base/caml -I /home/nullx002/.opam/4.04.1/lib/base/shadow_stdlib -I /home/nullx002/.opam/4.04.1/lib/bin_prot -I /home/nullx002/.opam/4.04.1/lib/bin_prot/shape -I /home/nullx002/.opam/4.04.1/lib/fieldslib -I /home/nullx002/.opam/4.04.1/lib/jane-street-headers -I /home/nullx002/.opam/4.04.1/lib/num -I /home/nullx002/.opam/4.04.1/lib/ocaml -I /home/nullx002/.opam/4.04.1/lib/ppx_assert/runtime-lib -I /home/nullx002/.opam/4.04.1/lib/ppx_bench/runtime-lib -I /home/nullx002/.opam/4.04.1/lib/ppx_compare/runtime-lib -I /home/nullx002/.opam/4.04.1/lib/ppx_expect/collector -I /home/nullx002/.opam/4.04.1/lib/ppx_expect/common -I /home/nullx002/.opam/4.04.1/lib/ppx_expect/config -I /home/nullx002/.opam/4.04.1/lib/ppx_hash/runtime-lib -I /home/nullx002/.opam/4.04.1/lib/ppx_inline_test/config -I /home/nullx002/.opam/4.04.1/lib/ppx_inline_test/runtime-lib -I /home/nullx002/.opam/4.04.1/lib/sexplib -I /home/nullx002/.opam/4.04.1/lib/sexplib/0 -I /home/nullx002/.opam/4.04.1/lib/stdio -I /home/nullx002/.opam/4.04.1/lib/typerep -I /home/nullx002/.opam/4.04.1/lib/variantslib -I ../base_for_tests/src -ccopt -g -ccopt -D_LARGEFILE64_SOURCE -ccopt -mpopcnt -o bigstring_stubs.o bigstring_stubs.c)
# cc1: error: unrecognized command line option "-mpopcnt"
# ocamlc src/bigstring_marshal_stubs.o (exit 2)
# (cd _build/default/src && /home/nullx002/.opam/4.04.1/bin/ocamlc.opt -g -I /home/nullx002/.opam/4.04.1/lib/base -I /home/nullx002/.opam/4.04.1/lib/base/caml -I /home/nullx002/.opam/4.04.1/lib/base/shadow_stdlib -I /home/nullx002/.opam/4.04.1/lib/bin_prot -I /home/nullx002/.opam/4.04.1/lib/bin_prot/shape -I /home/nullx002/.opam/4.04.1/lib/fieldslib -I /home/nullx002/.opam/4.04.1/lib/jane-street-headers -I /home/nullx002/.opam/4.04.1/lib/num -I /home/nullx002/.opam/4.04.1/lib/ocaml -I /home/nullx002/.opam/4.04.1/lib/ppx_assert/runtime-lib -I /home/nullx002/.opam/4.04.1/lib/ppx_bench/runtime-lib -I /home/nullx002/.opam/4.04.1/lib/ppx_compare/runtime-lib -I /home/nullx002/.opam/4.04.1/lib/ppx_expect/collector -I /home/nullx002/.opam/4.04.1/lib/ppx_expect/common -I /home/nullx002/.opam/4.04.1/lib/ppx_expect/config -I /home/nullx002/.opam/4.04.1/lib/ppx_hash/runtime-lib -I /home/nullx002/.opam/4.04.1/lib/ppx_inline_test/config -I /home/nullx002/.opam/4.04.1/lib/ppx_inline_test/runtime-lib -I /home/nullx002/.opam/4.04.1/lib/sexplib -I /home/nullx002/.opam/4.04.1/lib/sexplib/0 -I /home/nullx002/.opam/4.04.1/lib/stdio -I /home/nullx002/.opam/4.04.1/lib/typerep -I /home/nullx002/.opam/4.04.1/lib/variantslib -I ../base_for_tests/src -ccopt -g -ccopt -D_LARGEFILE64_SOURCE -ccopt -mpopcnt -o bigstring_marshal_stubs.o bigstring_marshal_stubs.c)
# cc1: error: unrecognized command line option "-mpopcnt"
=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following actions were aborted
- install core v0.9.1
The following actions failed
- install core_kernel v0.9.0
No changes have been performed
OCAML_TOPLEVEL_PATH=/home/nullx002/.opam/4.04.1/lib/toplevel
i think there is problem with gcc version available for compilation on bsd. i tried to set it to eg++ using export CXX=/usr/local/bin/eg++
but it fails with same mpopcnt error, used ktrace but still not able to find how opam uses gcc.
When I attempt to install from opam, I get the following error:
#=== ERROR while installing core_kernel.113.00.00 =============================#
# opam-version 1.2.2
# os cygwin
# command make
# path /home/crd/.opam/4.02.3/build/core_kernel.113.00.00
# compiler 4.02.3
# exit-code 2
# env-file /home/crd/.opam/4.02.3/build/core_kernel.113.00.00/core_kernel-8856-5f1023.en
v
# stdout-file /home/crd/.opam/4.02.3/build/core_kernel.113.00.00/core_kernel-8856-5f1023.ou
t
# stderr-file /home/crd/.opam/4.02.3/build/core_kernel.113.00.00/core_kernel-8856-5f1023.er
r
### stdout ###
# [...]
# /home/crd/.opam/4.02.3/bin/ocamlfind ocamlc -g -c src/bigstring_marshal_stubs.c
# mv bigstring_marshal_stubs.o src/bigstring_marshal_stubs.o
# /home/crd/.opam/4.02.3/bin/ocamlfind ocamlc -g -c src/bigstring_stubs.c
# + /home/crd/.opam/4.02.3/bin/ocamlfind ocamlc -g -c src/bigstring_stubs.c
# src/bigstring_stubs.c:34:24: fatal error: sys/endian.h: No such file or directory
# #include <sys/endian.h>
# ^
# compilation terminated.
# Command exited with code 2.
# Makefile:21: recipe for target 'build' failed
### stderr ###
# W: Cannot find source file matching module 'core_kernel' in library core_kernel
# E: Failure("Command ''/home/crd/.opam/4.02.3/bin/ocamlbuild' src/libcore_kernel_stubs.a src/dllcore_kernel_stubs.so src/core_kernel.cma src/core_kernel.cmxa src/core_kernel.a src/core_kernel.cmxs -use-ocamlfind -tag debug' terminated with error code 10")
# make: *** [build] Error 1
The following patch allows building:
--- src/bigstring_stubs.c.orig 2015-08-18 07:14:45.000000000 -0400
+++ src/bigstring_stubs.c 2016-01-15 21:01:17.687776600 -0500
@@ -29,6 +29,8 @@
#define bswap_16 swap16
#define bswap_32 swap32
#define bswap_64 swap64
+#elif __CYGWIN__
+#include <endian.h>
#else
#include <sys/types.h>
#include <sys/endian.h>
I haven't figured out what the correct way to apply this through opam is but I did manage to get core_kernel to install via opam through the hack of rerolling the tarball and changing checksum in the urls.txt file.
For example:
(executable
((name test)
(js_of_ocaml ((flags (:standard --opt 3 --pretty +weak.js))))
(libraries (js_of_ocaml core_kernel))))
With test.ml containing:
let _ = Core_kernel.Time.now ()
And building with jbuilder build test.bc.js
.
The generated test.bc.js
contains quite a few calls similar to the ones below:
test_unit
(_u4_,
_aCq_,
0,
_aCp_,
793,
4,
63,
function(param){return test(1,3609444,_aCo_)});
test_unit
(_u4_,
_auK_,
0,
_auJ_,
333,
4,
214,
function(param)
{return round_trip$0
(to_parts$1(create$31(0,0,[0,hr],0,0,0,0,0,0)))});
_avr_=caml_new_string(": <<test true 71 1666750235549516973L>>"),
_avt_=caml_new_string("src/time_ns.ml"),
_avu_=caml_new_string(": <<test true 4398 1232807081547132235L>>"),
_avw_=caml_new_string("src/time_ns.ml"),
_avx_=caml_new_string(": <<test false 702561 1233263206897519979L>>"),
_avz_=caml_new_string("src/time_ns.ml"),
Note that this is at the maximum optimisation level that jsoo supports (as far as I know). jsoo is able to remove the entire module if it isn't referenced (for example when test.ml is empty), but it doesn't seem to be able to remove the values exported for the inline tests.
Hi
Is this restriction correct? Previous versions are installable in newer OCaml versions.
Cheers,
Andre
The documentation says:
Raise [Failure "nth"] if the list is too short.
but the implementation raises Invalid_argument
, not Failure
:
# Core_kernel.Std.List.nth_exn [1] 2;;
Exception: Invalid_argument "List.nth_exn 2 called on list of length 1".
The documentation about negative arguments is wrong as well; it says
Raise [Invalid_argument "List.nth"] if [n] is negative.
but the actual argument to Invalid_argument
is more descriptive:
# Core_kernel.Std.List.nth_exn [1] (-1);;
Exception: Invalid_argument "List.nth_exn -1 called on list of length 1".
I installed opam on Ubuntu 14.04(Mininet 2.1.0 on Ubuntu 14.04) on virtualbox, as the http://opam.ocaml.org/doc/Install.html requires:
1、add-apt-repository ppa:avsm/ppa
2、apt-get update
3、apt-get install ocaml ocaml-native-compilers camlp4-extra opam
4、opam init
5、opam install async
in the 5th step, async installation failed, it shows "the comilation of core_kernel.112.06.00 failed". following is the detail, how should i fix this problem?
=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following failed
When building with trunk, there is a preprocessing error at the line:
type nonrec nobody = nobody with bin_io, compare, sexp
+ /opt/opam/4.03.0+flambda+5/bin/ocamlfind ocamldep -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -package variantslib.syntax -package variantslib -package unix -package typerep_lib.syntax -package typerep_lib -package sexplib.syntax -package sexplib -package pa_test.syntax -package pa_test -package pa_pipebang -package pa_ounit.syntax -package pa_ounit -package pa_bench.syntax -package pa_bench -package herelib.syntax -package herelib -package fieldslib.syntax -package fieldslib -package enumerate.syntax -package enumerate -package comparelib.syntax -package bin_prot.syntax -package bin_prot -package bigarray -ppopt -pa-ounit-lib -ppopt core_kernel -modules lib/perms.mli > lib/perms.mli.depends
File "lib/perms.mli", line 141, characters 4-8:
Parse error: [nonrec] expected after "type" (in [sig_item])
File "lib/perms.mli", line 1:
Error: Error while running external preprocessor
Command line: camlp4 '-I' '/opt/opam/4.03.0+flambda+5/lib/ocaml/camlp4' '-I' '/opt/opam/4.03.0+flambda+5/lib/type_conv' '-I' '/opt/opam/4.03.0+flambda+5/lib/variantslib' '-I' '/opt/opam/4.03.0+flambda+5/lib/variantslib' '-I' '/opt/opam/4.03.0+flambda+5/lib/typerep_lib' '-I' '/opt/opam/4.03.0+flambda+5/lib/ocaml' '-I' '/opt/opam/4.03.0+flambda+5/lib/ocaml' '-I' '/opt/opam/4.03.0+flambda+5/lib/sexplib' '-I' '/opt/opam/4.03.0+flambda+5/lib/sexplib' '-I' '/opt/opam/4.03.0+flambda+5/lib/comparelib' '-I' '/opt/opam/4.03.0+flambda+5/lib/comparelib' '-I' '/opt/opam/4.03.0+flambda+5/lib/pa_test' '-I' '/opt/opam/4.03.0+flambda+5/lib/pa_pipebang' '-I' '/opt/opam/4.03.0+flambda+5/lib/pa_ounit' '-I' '/opt/opam/4.03.0+flambda+5/lib/oUnit' '-I' '/opt/opam/4.03.0+flambda+5/lib/oUnit' '-I' '/opt/opam/4.03.0+flambda+5/lib/pa_ounit' '-I' '/opt/opam/4.03.0+flambda+5/lib/pa_bench' '-I' '/opt/opam/4.03.0+flambda+5/lib/herelib' '-I' '/opt/opam/4.03.0+flambda+5/lib/fieldslib' '-I' '/opt/opam/4.03.0+flambda+5/lib/fieldslib' '-I' '/opt/opam/4.03.0+flambda+5/lib/enumerate' '-I' '/opt/opam/4.03.0+flambda+5/lib/bin_prot' '-I' '/opt/opam/4.03.0+flambda+5/lib/bin_prot' '-parser' 'o' '-parser' 'op' '-printer' 'p' 'pa_type_conv.cma' 'variantslib.cma' 'pa_variants_conv.cma' 'typerep_syntax.cma' 'unix.cma' 'bigarray.cma' 'sexplib.cma' 'pa_sexp_conv.cma' 'comparelib.cma' 'pa_compare.cma' 'pa_test_syntax.cma' 'pa_pipebang.cma' 'pa_ounit_syntax.cma' 'oUnitAdvanced.cma' 'oUnit.cma' 'pa_ounit_lib.cma' 'pa_bench_syntax.cma' 'pa_herelib.cma' 'fieldslib.cma' 'pa_fields_conv.cma' 'enumerate.cma' 'bin_prot.cma' 'pa_bin_prot.cma' '-pa-ounit-lib' 'core_kernel' 'lib/perms.mli' > /tmp/ocamlpp0040ce
List.init
initializes lists in the opposite order of Array.init
, i.e. it will call the passed function f
with the highest number first. It would be nice to have the same order, but I don't have a problem with the current implementation per se. Using the "correct" order would either require reversing the result or unsafe list construction. But I think the initialization order should at least be documented so that users won't be surprised if their f
depends on the order of side effects.
Int32.of_int versions(option and exn) currently perform range check. Can the stdlib of_int be provided as unsafe_of_int for convenience without having to do local open? The range check really hits performance.
Hi. After installing 4.02 using opam I'm getting strange exception Invalid_argument Gc.finalise
. I'm using GNU/Linux but I'm not sure is it core_kernel's error or sexplib's one (gdb points on line where with sexp
syntax extension is used). Can anybody test it on your machine, please?
Demo project:
git clone https://github.com/Kakadu/core_kernel_4.02_test
On a clean 4.06.0+flamda switch:
#=== ERROR while installing core_kernel.v0.9.1 ================================#
# opam-version 1.2.2
# os linux
# command jbuilder build -p core_kernel -j 4
# path /home/fabian/.opam/4.06.0-test-core-kernel/build/core_kernel.v0.9.1
# compiler 4.06.0+flambda
# exit-code 1
# env-file /home/fabian/.opam/4.06.0-test-core-kernel/build/core_kernel.v0.9.1/core_kernel-14964-9f6e76.env
# stdout-file /home/fabian/.opam/4.06.0-test-core-kernel/build/core_kernel.v0.9.1/core_kernel-14964-9f6e76.out
# stderr-file /home/fabian/.opam/4.06.0-test-core-kernel/build/core_kernel.v0.9.1/core_kernel-14964-9f6e76.err
### stderr ###
# Unix.map_file raises Unix_error.
# [...]
# ocamlopt src/core_kernel__Bigsubstring.{cmx,o}
# ocamlopt src/core_kernel__Option_array.{cmx,o} (exit 2)
# (cd _build/default && /home/fabian/.opam/4.06.0-test-core-kernel/bin/ocamlopt.opt -w -40 -unsafe-string -g -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/base -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/base/caml -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/base/shadow_stdlib -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/bin_prot -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/bin_prot/shape -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/fieldslib -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/jane-street-headers -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/num -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/ocaml -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/ppx_assert/runtime-lib -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/ppx_bench/runtime-lib -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/ppx_compare/runtime-lib -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/ppx_expect/collector -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/ppx_expect/common -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/ppx_expect/config -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/ppx_hash/runtime-lib -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/ppx_inline_test/config -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/ppx_inline_test/runtime-lib -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/sexplib -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/sexplib/0 -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/stdio -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/typerep -I /home/fabian/.opam/4.06.0-test-core-kernel/lib/variantslib -I base_for_tests/src -no-alias-deps -I src -open Core_kernel__ -o src/core_kernel__Option_array.cmx -c -impl src/option_array.pp.ml)
# >> Fatal error: Assignment of a float to a specialised non-float array: (array.unsafe_set[int]<{src/option_array.ml:207,14-43;src/option_array.ml:145,21-79;src/uniform_array.ml:50,6-28;src/uniform_array.ml:33,27-66;src/obj_array.ml:79,4-74}>
# res/5490 i/5494
# obj/5504)
# Fatal error: exception Misc.Fatal_error
#
# Waiting for 3 jobs to finish.
In Base, collection modules such as Set
and Map
contain a functor M
which is useful for referring to the type of a collection produced by a comparator:
type 'a int_map = 'a Map.M(Int).t
However, this doesn't appear to be a part of the Core versions of Set
and Map
. It would be nice to have, especially now that Core is going in Base's direction of not requiring a new module for each key type.
Just started using Bigbuffer and bigstring and I quite like them. I have few questions/concerns that I note here to not forget them.
Bigbuffer.volatile_contents
is quite confusing. I would expect it to return a consistent subview of the underlying bigarray (with the right length), not the whole bigarray. I had to wrap it into something like Bigstring.sub_share ~len:(Bigbuffer.length b) (Bigbuffer.volatile_contents b)
;Bigbuffer.add_bigstring
. I had to do Bigbuffer.add_string (Bigstring.to_string s)
which means extra allocations;Bigstring.concat: t list -> t
;I installed opam on Ubuntu 14.04(Mininet 2.1.0 on Ubuntu 14.04) on virtualbox, as the http://opam.ocaml.org/doc/Install.html requires:
1、add-apt-repository ppa:avsm/ppa
2、apt-get update
3、apt-get install ocaml ocaml-native-compilers camlp4-extra opam
4、opam init
5、opam install async
in the 5th step, async installation failed, it shows "the comilation of core_kernel.112.06.00 failed". following is the detail, how should i fix this problem?
=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following failed
Latest commit 39d72cf fails to build:
$ jbuilder build-package core_kernel
File "src/jbuild", line 29, characters 3-14:
Error: Unknown field c_libraries
Also, this package and some others have multiple commits with the same comment "114.20+69". Is that simply an error?
Hi,
I was trying to install core_kernel
on my OpenBSD 6.1 box with OCaml 4.05.0 and got the following error:
$ opam install core_kernel --use-internal-solver [247/1940]
The following actions will be performed:
∗ install core_kernel v0.9.0
=-=- Gathering sources =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[ERROR] The compilation of core_kernel failed at "jbuilder build -p core_kernel -j 4".
#=== ERROR while installing core_kernel.v0.9.0 ================================#
# opam-version 1.2.2
# os openbsd
# command jbuilder build -p core_kernel -j 4
# path /home/wsg/.opam/4.05.0/build/core_kernel.v0.9.0
# compiler 4.05.0
# exit-code 1
# env-file /home/wsg/.opam/4.05.0/build/core_kernel.v0.9.0/core_kernel-79091-42bb52.env
# stdout-file /home/wsg/.opam/4.05.0/build/core_kernel.v0.9.0/core_kernel-79091-42bb52.out
# stderr-file /home/wsg/.opam/4.05.0/build/core_kernel.v0.9.0/core_kernel-79091-42bb52.err
### stderr ###
# [...]
# ocamlopt .ppx/ppx_base+ppx_inline_test+ppx_sexp_conv+ppx_sexp_message+ppx_driver.runner/ppx.exe
# ocamlc src/bigstring_marshal_stubs.o (exit 2)
# (cd _build/default/src && /home/wsg/.opam/4.05.0/bin/ocamlc.opt -g -I /home/wsg/.opam/4.05.0/lib/base -I /home/wsg/.opam/4.05.0/lib/base/caml -I /home/wsg/.opam/4.05.0/lib/base/shadow_stdlib $
I /home/wsg/.opam/4.05.0/lib/bin_prot -I /home/wsg/.opam/4.05.0/lib/bin_prot/shape -I /home/wsg/.opam/4.05.0/lib/fieldslib -I /home/wsg/.opam/4.05.0/lib/jane-street-headers -I /home/wsg/.opam/4$
05.0/lib/num -I /home/wsg/.opam/4.05.0/lib/ocaml -I /home/wsg/.opam/4.05.0/lib/ppx_assert/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_bench/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_compa$
e/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_expect/collector -I /home/wsg/.opam/4.05.0/lib/ppx_expect/common -I /home/wsg/.opam/4.05.0/lib/ppx_expect/config -I /home/wsg/.opam/4.05.0/lib/pp$
_hash/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_inline_test/config -I /home/wsg/.opam/4.05.0/lib/ppx_inline_test/runtime-lib -I /home/wsg/.opam/4.05.0/lib/sexplib -I /home/wsg/.opam/4.05.0/l
ib/sexplib/0 -I /home/wsg/.opam/4.05.0/lib/stdio -I /home/wsg/.opam/4.05.0/lib/typerep -I /home/wsg/.opam/4.05.0/lib/variantslib -I ../base_for_tests/src -ccopt -g -ccopt -D_LARGEFILE64_SOURCE -
ccopt -mpopcnt -o bigstring_marshal_stubs.o bigstring_marshal_stubs.c)
# cc1: error: unrecognized command line option "-mpopcnt"
# ocamlc src/bigstring_stubs.o (exit 2)
# (cd _build/default/src && /home/wsg/.opam/4.05.0/bin/ocamlc.opt -g -I /home/wsg/.opam/4.05.0/lib/base -I /home/wsg/.opam/4.05.0/lib/base/caml -I /home/wsg/.opam/4.05.0/lib/base/shadow_stdlib -
I /home/wsg/.opam/4.05.0/lib/bin_prot -I /home/wsg/.opam/4.05.0/lib/bin_prot/shape -I /home/wsg/.opam/4.05.0/lib/fieldslib -I /home/wsg/.opam/4.05.0/lib/jane-street-headers -I /home/wsg/.opam/4.
05.0/lib/num -I /home/wsg/.opam/4.05.0/lib/ocaml -I /home/wsg/.opam/4.05.0/lib/ppx_assert/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_bench/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_compar
e/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_expect/collector -I /home/wsg/.opam/4.05.0/lib/ppx_expect/common -I /home/wsg/.opam/4.05.0/lib/ppx_expect/config -I /home/wsg/.opam/4.05.0/lib/ppx
_hash/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_inline_test/config -I /home/wsg/.opam/4.05.0/lib/ppx_inline_test/runtime-lib -I /home/wsg/.opam/4.05.0/lib/sexplib -I /home/wsg/.opam/4.05.0/l
ib/sexplib/0 -I /home/wsg/.opam/4.05.0/lib/stdio -I /home/wsg/.opam/4.05.0/lib/typerep -I /home/wsg/.opam/4.05.0/lib/variantslib -I ../base_for_tests/src -ccopt -g -ccopt -D_LARGEFILE64_SOURCE -
ccopt -mpopcnt -o bigstring_stubs.o bigstring_stubs.c)
# cc1: error: unrecognized command line option "-mpopcnt"
# ocamlc src/core_array_stubs.o (exit 2)
# (cd _build/default/src && /home/wsg/.opam/4.05.0/bin/ocamlc.opt -g -I /home/wsg/.opam/4.05.0/lib/base -I /home/wsg/.opam/4.05.0/lib/base/caml -I /home/wsg/.opam/4.05.0/lib/base/shadow_stdlib -
I /home/wsg/.opam/4.05.0/lib/bin_prot -I /home/wsg/.opam/4.05.0/lib/bin_prot/shape -I /home/wsg/.opam/4.05.0/lib/fieldslib -I /home/wsg/.opam/4.05.0/lib/jane-street-headers -I /home/wsg/.opam/4.
05.0/lib/num -I /home/wsg/.opam/4.05.0/lib/ocaml -I /home/wsg/.opam/4.05.0/lib/ppx_assert/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_bench/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_compar
e/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_expect/collector -I /home/wsg/.opam/4.05.0/lib/ppx_expect/common -I /home/wsg/.opam/4.05.0/lib/ppx_expect/config -I /home/wsg/.opam/4.05.0/lib/ppx
_hash/runtime-lib -I /home/wsg/.opam/4.05.0/lib/ppx_inline_test/config -I /home/wsg/.opam/4.05.0/lib/ppx_inline_test/runtime-lib -I /home/wsg/.opam/4.05.0/lib/sexplib -I /home/wsg/.opam/4.05.0/l
ib/sexplib/0 -I /home/wsg/.opam/4.05.0/lib/stdio -I /home/wsg/.opam/4.05.0/lib/typerep -I /home/wsg/.opam/4.05.0/lib/variantslib -I ../base_for_tests/src -ccopt -g -ccopt -D_LARGEFILE64_SOURCE -
ccopt -mpopcnt -o core_array_stubs.o core_array_stubs.c)
# cc1: error: unrecognized command line option "-mpopcnt"
=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following actions failed
∗ install core_kernel v0.9.0
No changes have been performed
I pinned the package, edited src/jbuild
removing mention of -mpopcnt
and the installation succeeded. I don't know how essential this flag is, but a subsequent installation of core
on that machine seems to be working fine.
File "lib/pooled_hashtbl_unit_test.ml", line 56, characters 25-41:
Integer literal exceeds the range of representable integers of type int
Preprocessing error on file lib/pooled_hashtbl_unit_test.ml
https://github.com/janestreet/core_kernel/blob/master/lib/pooled_hashtbl_unit_test.ml#L56
Notably:
lib/pooled_hashtbl.ml: let unix_time_before = Unix.time () in
This forces the pack to depend on Unix even if only Core_kernel is linked. Most of the other references are just type-level (Unix.file_descr) and less bad since they dont introduce a cma/x dependency.
After moving to the new result type I have a strange behavior. Looks like the trick with namespace_wrappers
confused the typechecker:
The following program typechecks:
type ('a,'b) result = ('a,'b) Result.result = Ok of 'a | Error of 'b
type ab = [`a | `b]
type abc = [ab| `c]
let a : ab = `a
let x = Error a
let _ = (x :> ('a,abc) result)
But, if I will use core_kernel 113.33.01, then the program doesn't typecheck:
open Core_kernel.Std
type ab = [`a | `b]
type abc = [ab| `c]
let a : ab = `a
let x = Error a
let _ = (x :> ('a,abc) Result.t)
With the following error:
ocamlfind c -package core_kernel abc.ml
File "abc.ml", line 10, characters 9-10:
Error: This expression cannot be coerced to type
('a, abc) Core_kernel.Std.Result.t =
('a, abc) Result_lib.Result.result;
it has type
('a, ab) Core_kernel.Std._result = ('a, ab) Result_lib.Result.result
but is here used with type
('a, abc) Core_kernel.Std.Result.t =
('a, abc) Result_lib.Result.result
Type ab = [ `a | `b ] is not compatible with type
abc = [ `a | `b | `c ]
The first variant type does not allow tag(s) `c
At some point of time you stopped to install mli
files at all.
First of all, many people use mli
files as a documentation. Second, merlin
uses it to show documentation, for example C-c C-l
on List.filter
results in an error:
if: 'List.filter' seems to originate from 'Core_list' whose MLI file could not be found
Unix
is referenced from core_kernel.cmxa
- probably due to the Unix
references in src/time_ns.ml
?
# + touch src/core_kernel.mli ; if /home/jim/.opam/4.02.3/bin/ocamlfind ocamlopt -pack -g -annot -bin-annot -I src src/applicative_intf.cmx src/core_random.cmx src/array_permute.cmx src/stringable.cmx src/binable0.cmx src/caml.cmx src/commutative_group.cmx src/core_printf.cmx src/fn.cmx src/nothing0.cmx src/never_returns.cmx src/pretty_printer.cmx src/exn.cmx src/perms.cmx src/t.cmx src/with_return.cmx src/container.cmx src/monad.cmx src/stable_module_types.cmx src/stable_unit_test_intf.cmx src/result.cmx src/ordered_collection_common.cmx src/polymorphic_compare.cmx src/poly.cmx src/core_list.cmx src/applicative.cmx src/avltree.cmx src/binary_searchable_intf.cmx src/source_code_position0.cmx src/invariant_intf.cmx src/sexpable.cmx src/info.cmx src/error.cmx src/polymorphic_compare_intf.cmx src/int_replace_polymorphic_compare.cmx src/invariant.cmx src/or_error.cmx src/validate.cmx src/option.cmx src/binary_searchable.cmx src/blit_intf.cmx src/blit.cmx src/comparator.cmx src/sequence.cmx src/core_array.cmx src/core_map_intf.cmx src/core_map.cmx src/either_intf.cmx src/either.cmx src/core_set_intf.cmx src/core_set.cmx src/comparable_intf.cmx src/comparable.cmx src/core_hashtbl_intf.cmx src/int_pow2.cmx src/core_hashtbl.cmx src/union_find.cmx src/doubly_linked.cmx src/floatable.cmx src/hash_queue.cmx src/hash_set_intf.cmx src/hash_set.cmx src/hashable.cmx src/identifiable.cmx src/intable.cmx src/robustly_comparable.cmx src/interfaces.cmx src/bool.cmx src/staged.cmx src/common.cmx src/core_char.cmx src/core_field.cmx src/core_string.cmx src/hex_lexer.cmx src/int_intf.cmx src/word_size.cmx src/int_conversions.cmx src/core_sexp.cmx src/pow_overflow_bounds.cmx src/int_math.cmx src/core_int.cmx src/core_int32.cmx src/core_int63.cmx src/core_int64.cmx src/core_lazy.cmx src/core_nativeint.cmx src/core_queue.cmx src/float_intf.cmx src/float_robust_compare.cmx src/float.cmx src/linked_queue.cmx src/ordering.cmx src/ref.cmx src/unit.cmx src/std_internal.cmx src/backtrace.cmx src/bag.cmx src/byte_units.cmx src/heap_block.cmx src/core_gc.cmx src/bigstring.cmx src/bigbuffer_internal.cmx src/bigbuffer.cmx src/bigstring_marshal.cmx src/substring_intf.cmx src/make_substring.cmx src/bigsubstring.cmx src/binable.cmx src/binary_packing.cmx src/stable_unit_test.cmx src/blang.cmx src/equal.cmx src/bounded_int_table.cmx src/bucket.cmx src/constrained_float.cmx src/stack_intf.cmx src/core_stack.cmx src/linked_stack.cmx src/container_unit_tests.cmx src/core_arg.cmx src/core_bin_prot.cmx src/core_bytes.cmx src/core_printexc.cmx src/core_weak.cmx src/stable_internal.cmx src/stable_containers.cmx src/day_of_week.cmx src/debug.cmx src/decimal.cmx src/deque.cmx src/dequeue.cmx src/fdeque.cmx src/fheap.cmx src/flags_intf.cmx src/flags.cmx src/obj_array.cmx src/tuple_type_intf.cmx src/tuple_type.cmx src/flat_array.cmx src/flat_queue.cmx src/force_once.cmx src/fqueue.cmx src/heap_intf.cmx src/pool_intf.cmx src/pool.cmx src/heap.cmx src/hash_heap.cmx src/host_and_port.cmx src/in_channel.cmx src/int_set.cmx src/interned_string.cmx src/memo.cmx src/month.cmx src/no_polymorphic_compare.cmx src/nothing.cmx src/only_in_test.cmx src/out_channel.cmx src/percent.cmx src/pid.cmx src/pooled_hashtbl.cmx src/set_once.cmx src/source_code_position.cmx src/time_ns.cmx src/std_common.cmx src/string_id.cmx src/substring.cmx src/thread_safe_queue.cmx src/time_ns_alternate_sexp.cmx src/timing_wheel_intf.cmx src/validated_intf.cmx src/validated.cmx src/timing_wheel_ns.cmx src/tuple.cmx src/type_equal.cmx src/type_immediacy.cmx src/unique_id_intf.cmx src/unique_id.cmx src/univ.cmx src/univ_map_intf.cmx src/univ_map.cmx src/unpack_buffer.cmx src/std_kernel.cmx src/std.cmx src/core_map_unit_tests.cmx src/core_queue_debug.cmx src/core_queue_unit_tests.cmx src/core_set_unit_tests.cmx src/flat_array_debug.cmx src/flat_array_unit_tests.cmx src/flat_queue_debug.cmx src/flat_queue_unit_tests.cmx src/hashtbl_unit_tests.cmx src/pool_unit_tests.cmx src/pooled_hashtbl_unit_test.cmx src/stable.cmx src/stack_unit_tests.cmx src/timing_wheel_unit_tests.cmx src/timing_wheel_ns_unit_tests.cmx src/type_immediacy_conv_unit_tests.cmx src/type_immediacy_witness_unit_tests.cmx -o src/core_kernel.cmx ; then rm -f src/core_kernel.mli ; else rm -f src/core_kernel.mli ; exit 1; fi
# File "src/core_kernel.cmx", line 1:
# Error: I/O error: as -o '/tmp/camlCore_kernel__c67986.o' '/tmp/camlasma918b8.s': Cannot allocate memory
# Command exited with code 1.
# Makefile:21: recipe for target 'build' failed
### stderr ###
# W: Cannot find source file matching module 'check_caml_modify' in library check_caml_modify
# W: Cannot find source file matching module 'core_kernel' in library core_kernel
# E: Failure("Command ''/home/jim/.opam/4.02.3/bin/ocamlbuild' src/libcore_kernel_stubs.a src/dllcore_kernel_stubs.so src/core_kernel.cma src/core_kernel.cmxa src/core_kernel.a src/core_kernel.cmxs check_caml_modify/libcheck_caml_modify_stubs.a check_caml_modify/dllcheck_caml_modify_stubs.so check_caml_modify/check_caml_modify.cma check_caml_modify/check_caml_modify.cmxa check_caml_modify/check_caml_modify.a check_caml_modify/check_caml_modify.cmxs -use-ocamlfind -tag debug' terminated with error code 10")
# make: *** [build] Error 1
=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following actions failed
∗ install core_kernel 112.35.00
No changes have been performed
jim@jim-VirtualBox:~/project/Batsh$ uname -a
Linux jim-VirtualBox 3.19.0-28-generic #30-Ubuntu SMP Mon Aug 31 15:52:51 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Due to this issue that's been fixed in trunk OCaml:
http://caml.inria.fr/mantis/view.php?id=6517
This affects people using the latest 4.02.1 compiler in Fedora, too, as the patch has been backported (see Richard Jones's last comment).
Due to some errors while processing core_kernel.109.34.00, the following actions will NOT be proceeded:
==== ERROR [while installing core_kernel.109.34.00] ====
...[truncated]
| False
| And of 'a t * 'a t
| Or of 'a t * 'a t
| Not of 'a t
| If of 'a t * 'a t * 'a t
| Base of 'a
File "lib/blang.mli", line 143, characters 9-161: Expected declaration
File "lib/blang.mli", line 152, characters 11-35: Actual declaration
Their kinds differ.
Command exited with code 2.
E: Failure("Command ''/Users/barney/.opam/4.01.0dev+trunk/bin/ocamlbuild' lib/libcore_kernel_stubs.a lib/dllcore_kernel_stubs.so lib/core_kernel.cma lib/core_kernel.cmxa lib/core_kernel.a lib/core_kernel.cmxs -tag debug' terminated with error code 10")
make: *** [build] Error 1
For example, the documentation for List.iter2_exn says:
List.iter2_exn f [a1; ...; an] [b1; ...; bn]
calls in turn[f a1 b1; ...; f an bn]
.
whereas the implementation has the argument labeled (or last), not first.
Following what is said in the mli, I'm trying to do:
open Core_kernel.Std
module T = struct
include String
let module_name = "Node"
end
include T
include Identifiable.Make(T)
But I get:
Error: Multiple definition of the module name Replace_polymorphic_compare.
Names must be unique in a given structure or signature.
Is this expected ?
Are there any plans for core_kernel to use the result package as a dependency? As I gather most people do, I have a result type floating around in my libraries and I've slowly begun transitioning them to use the result package as a dependency. Having core and async use the same type would make life in a pre-4.03 world much easier.
utop # #require "result";;
utop # Result.Ok () = Pervasives.Ok ();;
- : bool = true
utop # #require "core_kernel";;
utop # Core_kernel.Core_result.Ok () = Pervasives.Ok ();;
Error: The constructor Pervasives.Ok belongs to the variant type result
but a constructor was expected belonging to the variant type
Core_kernel.Core_result.t = Result_lib.Result.result
I'm using 4.03.0 with:
core_kernel 113.33.01+4.03
result 1.2
4.03.0 switch
base-bigarray base root base-bytes base installed base-threads base root base-unix base root bin_prot 113.33.00+4.03 installed camomile 0.8.5 installed conf-m4 1 installed core_kernel 113.33.01+4.03 root cppo 1.3.2 installed fieldslib 113.24.00 installed lambda-term 1.10 installed lwt 2.5.2 installed menhir 20160526 root ocamlbuild 0.9.2 installed ocamlfind 1.6.2 installed ocp-ocamlres 0.3 root pprint 20140424 installed ppx_assert 113.33.00 installed ppx_bench 113.33.00+4.03 installed ppx_bin_prot 113.33.00+4.03 installed ppx_compare 113.33.00+4.03 installed ppx_core 113.33.01+4.03 installed ppx_custom_printf 113.33.00+4.03 installed ppx_deriving 3.3 root ppx_driver 113.33.01+4.03 installed ppx_enumerate 113.33.00+4.03 installed ppx_expect 113.33.01+4.03 installed ppx_fail 113.33.00+4.03 installed ppx_fields_conv 113.33.00+4.03 installed ppx_here 113.33.00 installed ppx_inline_test 113.33.00+4.03 installed ppx_jane 113.33.00 installed ppx_let 113.33.00+4.03 root ppx_optcomp 113.33.00+4.03 installed ppx_pipebang 113.33.00+4.03 installed ppx_sexp_conv 113.33.01+4.03 root ppx_sexp_message 113.33.00+4.03 installed ppx_sexp_value 113.33.00+4.03 installed ppx_tools 5.0+4.03.0 installed ppx_type_conv 113.33.01+4.03 root ppx_typerep_conv 113.33.00+4.03 installed ppx_variants_conv 113.33.00+4.03 installed re 1.6.1 installed react 1.2.0 installed result 1.2 installed sexplib 113.33.00+4.03 installed typerep 113.24.00 installed utop 1.19.2 root variantslib 113.24.00 installed zed 1.4 installed
I installed opam on Ubuntu 14.04(Mininet 2.1.0 on Ubuntu 14.04) on virtualbox, as the http://opam.ocaml.org/doc/Install.html requires:
1、add-apt-repository ppa:avsm/ppa
2、apt-get update
3、apt-get install ocaml ocaml-native-compilers camlp4-extra opam
4、opam init
5、opam install async
in the 5th step, async installation failed, it shows "the comilation of core_kernel.112.06.00 failed". following is the detail, how should i fix this problem?
#=== ERROR while installing core_kernel.112.06.00 =============================#
opam-version 1.2.0
os linux
command make
path /home/mininet/.opam/system/build/core_kernel.112.06.00
compiler system (4.02.1)
exit-code 2
env-file /home/mininet/.opam/system/build/core_kernel.112.06.00/core_kernel-15383-a00279.env
stdout-file /home/mininet/.opam/system/build/core_kernel.112.06.00/core_kernel-15383-a00279.out
stderr-file /home/mininet/.opam/system/build/core_kernel.112.06.00/core_kernel-15383-a00279.err
stdout
...[truncated]
/home/mininet/.opam/system/bin/ocamlfind ocamldep -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -package variantslib.syntax -package variantslib -package unix -package typerep_lib.syntax -package typerep_lib -package sexplib.syntax -package sexplib -package pa_test.syntax -package pa_test -package pa_pipebang -package pa_ounit.syntax -package pa_ounit -package pa_bench.syntax -package pa_bench -package herelib.syntax -package herelib -package fieldslib.syntax -package fieldslib -package enumerate.syntax -package enumerate -package comparelib.syntax -package bin_prot.syntax -package bin_prot -package bigarray -ppopt -pa-ounit-lib -ppopt core_kernel -modules lib/flat_queue_unit_tests.ml > lib/flat_queue_unit_tests.ml.depends
/home/mininet/.opam/system/bin/ocamlfind ocamldep -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -package variantslib.syntax -package variantslib -package unix -package typerep_lib.syntax -package typerep_lib -package sexplib.syntax -package sexplib -package pa_test.syntax -package pa_test -package pa_pipebang -package pa_ounit.syntax -package pa_ounit -package pa_bench.syntax -package pa_bench -package herelib.syntax -package herelib -package fieldslib.syntax -package fieldslib -package enumerate.syntax -package enumerate -package comparelib.syntax -package bin_prot.syntax -package bin_prot -package bigarray -ppopt -pa-ounit-lib -ppopt core_kernel -modules lib/float.ml > lib/float.ml.depends
+ /home/mininet/.opam/system/bin/ocamlfind ocamldep -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -package variantslib.syntax -package variantslib -package unix -package typerep_lib.syntax -package typerep_lib -package sexplib.syntax -package sexplib -package pa_test.syntax -package pa_test -package pa_pipebang -package pa_ounit.syntax -package pa_ounit -package pa_bench.syntax -package pa_bench -package herelib.syntax -package herelib -package fieldslib.syntax -package fieldslib -package enumerate.syntax -package enumerate -package comparelib.syntax -package bin_prot.syntax -package bin_prot -package bigarray -ppopt -pa-ounit-lib -ppopt core_kernel -modules lib/float.ml > lib/float.ml.depends
File "lib/float.ml", line 985, characters 46-58:
Integer literal exceeds the range of representable integers of type int
File "lib/float.ml", line 1:
Error: Error while running external preprocessor
Command line: camlp4 '-I' '/usr/lib/ocaml/camlp4' '-I' '/home/mininet/.opam/system/lib/type_conv' '-I' '/home/mininet/.opam/system/lib/variantslib' '-I' '/home/mininet/.opam/system/lib/variantslib' '-I' '/home/mininet/.opam/system/lib/typerep_lib' '-I' '/usr/lib/ocaml' '-I' '/usr/lib/ocaml' '-I' '/home/mininet/.opam/system/lib/sexplib' '-I' '/home/mininet/.opam/system/lib/sexplib' '-I' '/home/mininet/.opam/system/lib/comparelib' '-I' '/home/mininet/.opam/system/lib/comparelib' '-I' '/home/mininet/.opam/system/lib/pa_test' '-I' '/home/mininet/.opam/system/lib/pa_pipebang' '-I' '/home/mininet/.opam/system/lib/pa_ounit' '-I' '/home/mininet/.opam/system/lib/oUnit' '-I' '/home/mininet/.opam/system/lib/oUnit' '-I' '/home/mininet/.opam/system/lib/pa_ounit' '-I' '/home/mininet/.opam/system/lib/pa_bench' '-I' '/home/mininet/.opam/system/lib/herelib' '-I' '/home/mininet/.opam/system/lib/fieldslib' '-I' '/home/mininet/.opam/system/lib/fieldslib' '-I' '/home/mininet/.opam/system/lib/enumerate' '-I' '/home/mininet/.opam/system/lib/bin_prot' '-I' '/home/mininet/.opam/system/lib/bin_prot' '-parser' 'o' '-parser' 'op' '-printer' 'p' 'pa_type_conv.cma' 'variantslib.cma' 'pa_variants_conv.cma' 'typerep_syntax.cma' 'unix.cma' 'bigarray.cma' 'sexplib.cma' 'pa_sexp_conv.cma' 'comparelib.cma' 'pa_compare.cma' 'pa_test_syntax.cma' 'pa_pipebang.cma' 'pa_ounit_syntax.cma' 'oUnitAdvanced.cma' 'oUnit.cma' 'pa_ounit_lib.cma' 'pa_bench_syntax.cma' 'pa_herelib.cma' 'fieldslib.cma' 'pa_fields_conv.cma' 'enumerate.cma' 'bin_prot.cma' 'pa_bin_prot.cma' '-pa-ounit-lib' 'core_kernel' 'lib/float.ml' > /tmp/ocamlpp28df8d
#
Command exited with code 2.
stderr
W: Cannot find source file matching module 'check_caml_modify' in library check_caml_modify
W: Cannot find source file matching module 'core_kernel' in library core_kernel
E: Failure("Command ''/usr/bin/ocamlbuild' lib/libcore_kernel_stubs.a lib/dllcore_kernel_stubs.so lib/core_kernel.cma lib/core_kernel.cmxa lib/core_kernel.a lib/core_kernel.cmxs check_caml_modify/libcheck_caml_modify_stubs.a check_caml_modify/dllcheck_caml_modify_stubs.so check_caml_modify/check_caml_modify.cma check_caml_modify/check_caml_modify.cmxa check_caml_modify/check_caml_modify.a check_ca...[truncated]
make: *** [build] Error 1
=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following failed
install core_kernel.112.06.00 Due to the errors, the following have been cancelled
install async_extra.112.06.00
install async.112.06.00
install core.112.06.01
install async_kernel.112.06.00
install async_unix.112.06.00
mininet@mininet-vm:~$
The program prints "ERROR" instead of "OK".
It prints "OK", as expected, if you remove open Core_kernel.Std
or build native version of the program.
Reproducible on both Mac OS X 10.10 and CentOS 7.
airbook:bug stas$ ocamlc -version
4.02.1
airbook:bug stas$ opam list | grep core
core 112.24.00 Industrial strength alternative to OCaml's standar
core_extended 112.24.00 Extra components that are not as closely vetted or
core_kernel 112.24.00 Industrial strength alternative to OCaml's standar
airbook:bug stas$ cat _tags
true: package(core_kernel)
true: thread,debug,annot
true: bin_annot
airbook:bug stas$ cat bug.ml
open Core_kernel.Std
let _ =
let cont = ref (fun x -> Printf.printf "ERROR\n"; x) in
(cont := (fun x -> Printf.printf "OK\n"; x); ())
|> !cont
airbook:bug stas$ ocamlbuild -use-ocamlfind bug.byte && ./bug.byte
Finished, 3 targets (3 cached) in 00:00:00.
ERROR
airbook:bug stas$
Hello. opam install core
fails with this error:
[ERROR] The compilation of core_kernel failed at "jbuilder build -p core_kernel
-j 4".
#=== ERROR while installing core_kernel.v0.9.1 ================================#
# opam-version 1.2.2
# os linux
# command jbuilder build -p core_kernel -j 4
# path /home/dev/.opam/4.06.0/build/core_kernel.v0.9.1
# compiler 4.06.0
# exit-code 1
# env-file /home/dev/.opam/4.06.0/build/core_kernel.v0.9.1/core_kernel-7-0f9439.env
# stdout-file /home/dev/.opam/4.06.0/build/core_kernel.v0.9.1/core_kernel-7-0f9439.out
# stderr-file /home/dev/.opam/4.06.0/build/core_kernel.v0.9.1/core_kernel-7-0f9439.err
### stderr ###
# [...]
# ocamlopt src/config/discover.exe
# discover src/config.h,src/rt-flags
# ocamlc src/bigstring_stubs.o (exit 2)
# (cd _build/default/src && /home/dev/.opam/4.06.0/bin/ocamlc.opt -g -I /home/dev/.opam/4.06.0/lib/base -I /home/dev/.opam/4.06.0/lib/base/caml -I /home/dev/.opam/4.06.0/lib/base/shadow_stdlib -I /home/dev/.opam/4.06.0/lib/bin_prot -I /home/dev/.opam/4.06.0/lib/bin_prot/shape -I /home/dev/.opam/4.06.0/lib/fieldslib -I /home/dev/.opam/4.06.0/lib/jane-street-headers -I /home/dev/.opam/4.06.0/lib/num -I /home/dev/.opam/4.06.0/lib/ocaml -I /home/dev/.opam/4.06.0/lib/ppx_assert/runtime-lib -I /home/dev/.opam/4.06.0/lib/ppx_bench/runtime-lib -I /home/dev/.opam/4.06.0/lib/ppx_compare/runtime-lib -I /home/dev/.opam/4.06.0/lib/ppx_expect/collector -I /home/dev/.opam/4.06.0/lib/ppx_expect/common -I /home/dev/.opam/4.06.0/lib/ppx_expect/config -I /home/dev/.opam/4.06.0/lib/ppx_hash/runtime-lib -I /home/dev/.opam/4.06.0/lib/ppx_inline_test/config -I /home/dev/.opam/4.06.0/lib/ppx_inline_test/runtime-lib -I /home/dev/.opam/4.06.0/lib/sexplib -I /home/dev/.opam/4.06.0/lib/sexplib/0 -I /home/dev/.opam/4.06.0/lib/stdio -I /home/dev/.opam/4.06.0/lib/typerep -I /home/dev/.opam/4.06.0/lib/variantslib -I ../base_for_tests/src -ccopt -g -ccopt -D_LARGEFILE64_SOURCE -ccopt -mpopcnt -o bigstring_stubs.o bigstring_stubs.c)
# gcc: error: unrecognized command line option '-mpopcnt'
# ocamlc src/bigstring_marshal_stubs.o (exit 2)
# (cd _build/default/src && /home/dev/.opam/4.06.0/bin/ocamlc.opt -g -I /home/dev/.opam/4.06.0/lib/base -I /home/dev/.opam/4.06.0/lib/base/caml -I /home/dev/.opam/4.06.0/lib/base/shadow_stdlib -I /home/dev/.opam/4.06.0/lib/bin_prot -I /home/dev/.opam/4.06.0/lib/bin_prot/shape -I /home/dev/.opam/4.06.0/lib/fieldslib -I /home/dev/.opam/4.06.0/lib/jane-street-headers -I /home/dev/.opam/4.06.0/lib/num -I /home/dev/.opam/4.06.0/lib/ocaml -I /home/dev/.opam/4.06.0/lib/ppx_assert/runtime-lib -I /home/dev/.opam/4.06.0/lib/ppx_bench/runtime-lib -I /home/dev/.opam/4.06.0/lib/ppx_compare/runtime-lib -I /home/dev/.opam/4.06.0/lib/ppx_expect/collector -I /home/dev/.opam/4.06.0/lib/ppx_expect/common -I /home/dev/.opam/4.06.0/lib/ppx_expect/config -I /home/dev/.opam/4.06.0/lib/ppx_hash/runtime-lib -I /home/dev/.opam/4.06.0/lib/ppx_inline_test/config -I /home/dev/.opam/4.06.0/lib/ppx_inline_test/runtime-lib -I /home/dev/.opam/4.06.0/lib/sexplib -I /home/dev/.opam/4.06.0/lib/sexplib/0 -I /home/dev/.opam/4.06.0/lib/stdio -I /home/dev/.opam/4.06.0/lib/typerep -I /home/dev/.opam/4.06.0/lib/variantslib -I ../base_for_tests/src -ccopt -g -ccopt -D_LARGEFILE64_SOURCE -ccopt -mpopcnt -o bigstring_marshal_stubs.o bigstring_marshal_stubs.c)
# gcc: error: unrecognized command line option '-mpopcnt'
#
# Waiting for 2 jobs to finish.
installing core_kernel from sources via opam takes really too long.
There are a number of functions missing from Binary_packing. E.g. I have to do pack_signed_32 ~byte_order:
Big_endian`, which the documentation suggests is up to 3 times slower than a 32 bit _big_endian function. Given that there is a pack_signed_64_big_endian, I see no reason why there shouldn't be one for 32 bit. I'm aware that there is a pack_unsigned_32_int_big_endian (I want unsigned, but for fixed width 32 bit, signed works as well), but I'd like to be portable to 32 bit platforms, where int is signed 31 bit.
Related to: ocaml/opam-repository#2764
I have the same problem, but it is independent of the opam package, building it manually fails for the same reason.
The 64-bit version does compile and the test case don't report anything suspicious. But I cannot build core_kernel, if i use a 32-bit version of ocaml (tested with 4.02.0 from opam / i686 linux kernel)
Circular dependencies: "lib/hashable.cmo" already seen in
[ "lib/identifiable.cmo"; "lib/core_char.cmo"; "lib/core_string.cmo";
"lib/int_conversions.cmo"; "lib/invariant_intf.cmo"; "lib/invariant.cmo";
"lib/debug.cmo"; "lib/core_field.cmo"; "lib/pool.cmo";
"lib/pooled_hashtbl.cmo"; "lib/hash_set_intf.cmo"; "lib/hash_set.cmo";
"lib/hash_queue.cmo"; "lib/int_pow2.cmo"; "lib/core_hashtbl_intf.cmo";
"lib/core_hashtbl.cmo"; "lib/hashable.cmo"; "lib/core_set_intf.cmo";
"lib/core_set.cmo"; "lib/core_map_intf.cmo"; "lib/core_map.cmo";
"lib/comparator.cmo"; "lib/comparable_intf.cmo"; "lib/comparable.cmo";
"lib/bool.cmo"; "lib/std_internal.cmo"; "lib/sequence.cmo";
"lib/blit_intf.cmo"; "lib/blit.cmo"; "lib/polymorphic_compare_intf.cmo";
"lib/int_replace_polymorphic_compare.cmo";
"lib/binary_searchable_intf.cmo"; "lib/binary_searchable.cmo";
"lib/core_array.cmo"; "lib/union_find.cmo"; "lib/doubly_linked.cmo";
"lib/bag.cmo"; "lib/or_error.cmo"; "lib/validate.cmo";
"lib/source_code_position0.cmo"; "lib/polymorphic_compare.cmo";
"lib/poly.cmo"; "lib/stable_unit_test_intf.cmo"; "lib/result.cmo";
"lib/ordered_collection_common.cmo"; "lib/monad.cmo"; "lib/caml.cmo";
"lib/core_list.cmo"; "lib/stringable.cmo"; "lib/binable0.cmo";
"lib/info.cmo"; "lib/error.cmo";
"raise_without_backtrace/raise_without_backtrace.cmo";
"lib/pretty_printer.cmo"; "lib/nothing0.cmo"; "lib/never_returns.cmo";
"lib/fn.cmo"; "lib/exn.cmo"; "lib/with_return.cmo"; "lib/t.cmo";
"lib/core_printf.cmo"; "lib/perms.cmo"; "lib/container.cmo";
"lib/commutative_group.cmo"; "lib/option.cmo"; "lib/avltree.cmo";
"lib/core_random.cmo"; "lib/array_permute.cmo" ]
Compilation unsuccessful after building 649 targets (0 cached) in 00:04:16.
E: Failure("Command ''/home/fdopen/.opam/4.02.0/bin/ocamlbuild' check_caml_modify/libcheck_caml_modify_stubs.a check_caml_modify/dllcheck_caml_modify_stubs.so check_caml_modify/check_caml_modify.cma check_caml_modify/check_caml_modify.cmxa check_caml_modify/check_caml_modify.a check_caml_modify/check_caml_modify.cmxs raise_without_backtrace/raise_without_backtrace.cma raise_without_backtrace/raise_without_backtrace.cmxa raise_without_backtrace/raise_without_backtrace.a raise_without_backtrace/raise_without_backtrace.cmxs lib/libcore_kernel_stubs.a lib/dllcore_kernel_stubs.so lib/core_kernel.cma lib/core_kernel.cmxa lib/core_kernel.a lib/core_kernel.cmxs -use-ocamlfind -tag debug' terminated with error code 9")
I installed opam on Ubuntu 14.04(Mininet 2.1.0 on Ubuntu 14.04) on virtualbox, as thehttp://opam.ocaml.org/doc/Install.html requires:
1、add-apt-repository ppa:avsm/ppa
2、apt-get update
3、apt-get install ocaml ocaml-native-compilers camlp4-extra opam
4、opam init
5、opam install async
in the 5th step, async installation failed, it shows "the comilation of core_kernel.112.06.00 failed". following is the detail, how should i fix this problem?
opam-version 1.2.0
os linux
command make
path /home/mininet/.opam/system/build/core_kernel.112.06.00
compiler system (4.02.1)
exit-code 2
env-file /home/mininet/.opam/system/build/core_kernel.112.06.00/core_kernel-15383-a00279.env
stdout-file /home/mininet/.opam/system/build/core_kernel.112.06.00/core_kernel-15383-a00279.out
stderr-file /home/mininet/.opam/system/build/core_kernel.112.06.00/core_kernel-15383-a00279.err
stdout
...[truncated]
/home/mininet/.opam/system/bin/ocamlfind ocamldep -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -package variantslib.syntax -package variantslib -package unix -package typerep_lib.syntax -package typerep_lib -package sexplib.syntax -package sexplib -package pa_test.syntax -package pa_test -package pa_pipebang -package pa_ounit.syntax -package pa_ounit -package pa_bench.syntax -package pa_bench -package herelib.syntax -package herelib -package fieldslib.syntax -package fieldslib -package enumerate.syntax -package enumerate -package comparelib.syntax -package bin_prot.syntax -package bin_prot -package bigarray -ppopt -pa-ounit-lib -ppopt core_kernel -modules lib/flat_queue_unit_tests.ml > lib/flat_queue_unit_tests.ml.depends
/home/mininet/.opam/system/bin/ocamlfind ocamldep -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -syntax camlp4o -package variantslib.syntax -package variantslib -package unix -package typerep_lib.syntax -package typerep_lib -package sexplib.syntax -package sexplib -package pa_test.syntax -package pa_test -package pa_pipebang -package pa_ounit.syntax -package pa_ounit -package pa_bench.syntax -package pa_bench -package herelib.syntax -package herelib -package fieldslib.syntax -package fieldslib -package enumerate.syntax -package enumerate -package comparelib.syntax -package bin_prot.syntax -package bin_prot -package bigarray -ppopt -pa-ounit-lib -ppopt core_kernel -modules lib/float.ml > lib/float.ml.depends
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.