{"push_id":1312540603,"size":22,"distinct_size":22,"ref":"refs/heads/master","head":"5d007d67e551e95155d77dae2cadc1b7495901a7","before":"c26e2e3ad819cdb17fd96111d6ba68703ce67c64","commits":[{"sha":"e9e8441ea9305165431941b3f6389c6026a17a72","author":{"name":"Ben Millwood","email":"15acbe9868698b7fdaa762f7fbe78703e0c87866@janestreet.com"},"message":"112.35.00\n\n- Sped up `bin_io` of `float array`.\n\n    `Bin_prot` already had special fast handling for `float array`'s but\n    `with bin_io` did not use it except for the special type\n    `float_array`.  Now, there is fast handling for `float array` and\n    its aliases, for example `price array` when `type price = float`.\n\n    - Changed `Size.bin_size_array`, `Write.bin_write_array` and\n      `Read.bin_read_array` short circuit to the fast path when it detects\n      that `float array` is handled.  Each of these functions receives\n      a function for handling array elements and short circuits when the\n      function for handling elements is equal to the function for handling\n      floats, using physical equality of closures.\n\n    - To cause short circuiting for aliases of `float`, changed `bin_io`\n      so that aliased `bin_io` functions are equal the the `bin_io`\n      functions of the original type.  That is an optimization for itself\n      regardless whether it's used for `float`.  Before this change, every\n      function generated for aliases were eta-expanded leading to\n      different closures at runtime for each type.\n\n    Short circuiting needs to apply to the handling function rather than\n    to the value at hand because:\n\n    * the value is available only in `size` and `write`, and we need\n      a way to make `read` work as well.\n\n    * even when the value is a float at runtime, the handling of\n      a specific float alias may have been overridden by a custom one.\n\n    Made a slight improvement to `bin_read_float_array`: since the array\n    is going to be filled with read values, there is no need to fill it\n    with `0.` after allocation:\n\n            let next = pos + size in\n            check_next buf next;\n        -|  let arr = Array.create len 0. in\n        +|  let arr = Array.make_float len in\n            unsafe_blit_buf_float_array buf arr ~src_pos:pos ~dst_pos:0 ~len;\n            pos_ref := next;\n\n    The difference in speed when optimal and non optimal way of handling\n    floats is used:\n\n    | Name                                       |    Time/Run |   mWd/Run | mjWd/Run |\n    |--------------------------------------------|-------------|-----------|----------|\n    | [bench.ml:float array] size    non optimal |  3_403.80ns | 2_000.00w |          |\n    | [bench.ml:float array] size    float_array |      5.55ns |           |          |\n    | [bench.ml:float array] size  Price.t array |      6.18ns |           |          |\n    | [bench.ml:float array] write   non optimal |  7_839.89ns | 2_000.00w |          |\n    | [bench.ml:float array] write   float_array |    292.42ns |           |          |\n    | [bench.ml:float array] write Price.t array |    293.16ns |           |          |\n    | [bench.ml:float array] read    non optimal |  9_665.06ns | 2_002.00w |   1.00kw |\n    | [bench.ml:float array] read    float_array |    461.01ns |     2.00w |   1.00kw |\n    | [bench.ml:float array] read  Price.t array |    449.43ns |     2.00w |   1.00kw |\n\n    There is no observed speed penalty for runtime check for short\n    circuiting.  The following benchmark shows the speed of handling\n    `int array` without and with the check:\n\n    | Name                                       |    Time/Run |   mWd/Run | mjWd/Run |\n    |--------------------------------------------|-------------|-----------|----------|\n    | [bench.ml:float array] int array  size     |  3_910.64ns |           |          |\n    | [bench.ml:float array] int array write     |  6_548.40ns |           |          |\n    | [bench.ml:float array] int array  read     | 14_928.11ns |     2.00w |   1.00kw |\n\n    | Name                                       |    Time/Run |   mWd/Run | mjWd/Run |\n    |--------------------------------------------|-------------|-----------|----------|\n    | [bench.ml:float array] int array  size     |  3_906.86ns |           |          |\n    | [bench.ml:float array] int array write     |  5_874.63ns |           |          |\n    | [bench.ml:float array] int array  read     | 14_225.06ns |     2.00w |   1.00kw |","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/e9e8441ea9305165431941b3f6389c6026a17a72"},{"sha":"6e1829688696cf06d02f5ab5c9ffd1020c20bc38","author":{"name":"Leo White","email":"fb4de4b57fc02e0c0780a9ccd72b1ae5344e47d3@cl.cam.ac.uk"},"message":"113.00.00\n\n- Switched build to use =config.h= rather than the command-line for\n  preprocessor variables.\n\n- Switched from `ARCH_SIXTYFOUR` to `JSC_ARCH_SIXTYFOUR`.\n\n- Fixed to support 32-bit integers, which are used in `js_of_ocaml`.\n\n    Do not make too many assumptions on integer size.\n    Integers are 32bit in Javascript.\n\n    Do not use the \"get_float_offset\" hack on 32bit\n    as it cannot be implemented in javascript.","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/6e1829688696cf06d02f5ab5c9ffd1020c20bc38"},{"sha":"780315bddc11fcd529c3c1a9182337683d987ebd","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"113.24.00","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/780315bddc11fcd529c3c1a9182337683d987ebd"},{"sha":"566c0b0d16dd11eeab2c085d2685e7a5bf8c709d","author":{"name":"Thomas Refis","email":"2d146de6142c751d6f0f336e5fdea2a2cd340821@gmail.com"},"message":"113.33.00","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/566c0b0d16dd11eeab2c085d2685e7a5bf8c709d"},{"sha":"8044afb2330e4e3b0002305c7588834c6569b6b8","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"113.33.03","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/8044afb2330e4e3b0002305c7588834c6569b6b8"},{"sha":"84fd25821cd30ba1165fc5ae51c47487d9327e6b","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"import #11","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/84fd25821cd30ba1165fc5ae51c47487d9327e6b"},{"sha":"ca2d498f44b3f62171f1e0cb9f6cee6dc992365e","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"fix call to `ocaml install.ml` in Makefile","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/ca2d498f44b3f62171f1e0cb9f6cee6dc992365e"},{"sha":"5fbbd2c9da0e3e9cd30795388739310530340f17","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"fix constraint in opam file","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/5fbbd2c9da0e3e9cd30795388739310530340f17"},{"sha":"37a2948f9fc3d6d8b8674137698dfc22b256e5e6","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"113.43+70","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/37a2948f9fc3d6d8b8674137698dfc22b256e5e6"},{"sha":"1aa79dec99c9b74aac8fee56f1d74188de3441a6","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"113.43+70","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/1aa79dec99c9b74aac8fee56f1d74188de3441a6"},{"sha":"e903e59407273a3e63e68fd722a17bb39b39b9d0","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"114.01+04","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/e903e59407273a3e63e68fd722a17bb39b39b9d0"},{"sha":"64b62877f482c06ffe6e9e5b7fd6e071bc418a63","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"114.02+05","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/64b62877f482c06ffe6e9e5b7fd6e071bc418a63"},{"sha":"83a238da7f45f6c4c6ebc82926913e47846a74ac","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"114.02+37","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/83a238da7f45f6c4c6ebc82926913e47846a74ac"},{"sha":"bf10e7094dc1f1a68d6329a739785200520a5b0d","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"114.03+54","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/bf10e7094dc1f1a68d6329a739785200520a5b0d"},{"sha":"48f6ce4abad2539cd384218bad35a2e8e09fdbd7","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"114.03+54","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/48f6ce4abad2539cd384218bad35a2e8e09fdbd7"},{"sha":"d75a4e56d0e560a562dc390f6e3faee794041246","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"114.04+57","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/d75a4e56d0e560a562dc390f6e3faee794041246"},{"sha":"8afc6e622a2b8bac296ad6e661ad3a2e51b6102c","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"114.05+21","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/8afc6e622a2b8bac296ad6e661ad3a2e51b6102c"},{"sha":"bba3aa9cdac5760fa6a8b1eb663cdb9a5ee7afbe","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"114.06+90","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/bba3aa9cdac5760fa6a8b1eb663cdb9a5ee7afbe"},{"sha":"0c67fbb66b22e2bafd1917f1528e1b0f897fe1f8","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"114.08+30","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/0c67fbb66b22e2bafd1917f1528e1b0f897fe1f8"},{"sha":"87e2078a6094c5ba77aa112fdb19aba0baeef6f9","author":{"name":"Jeremie Dimino","email":"b80aebb23478e83a6bff3e107c1e85d7585d3354@janestreet.com"},"message":"114.08+63","distinct":true,"url":"https://api.github.com/repos/mmottl/bin_prot/commits/87e2078a6094c5ba77aa112fdb19aba0baeef6f9"}]}
{"actor":{"display_login":"mmottl"}}