)]}'
{
  "commit": "e2098bc92a8540e133b11207ed1f1abfca57724c",
  "tree": "8c9ecc3255646e4627600f85d8f815ea64bbb979",
  "parents": [
    "dfd36a751b7e78882411353a28ccfc3cc7a2d1b1"
  ],
  "author": {
    "name": "Jan Wassenberg",
    "email": "janwas@google.com",
    "time": "Wed Feb 22 18:15:27 2017 +0100"
  },
  "committer": {
    "name": "Jan Wassenberg",
    "email": "janwas@google.com",
    "time": "Wed Feb 22 18:15:27 2017 +0100"
  },
  "message": "2x faster HHCat buffering; add support for arm/ppc; target-specific test and measurement; namespaces to avoid ODR violation; shared padding/Load3 code; variadic args for Run; simpler byte swapping; separate robust_statistics header; avoid overriding CXXFLAGS; add auto-dependency; simplify c binding; threaded test; simplify CPU detection; hide nanobenchmark implementation; improved vector\u003c-\u003eintrinsic conversion\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bc9f88dfafb6d1e04146dfdda7d8ae5c613fb2c7",
      "old_mode": 33188,
      "old_path": "Makefile",
      "new_id": "de631a380ef29a30a52560ba4627835734e346a8",
      "new_mode": 33188,
      "new_path": "Makefile"
    },
    {
      "type": "modify",
      "old_id": "53c5d2d395b5fb8eec9c7866d278bcf8bd39aab5",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "2d311c66c1083c3b2eb42a28c4c04b7e6deff013",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "modify",
      "old_id": "ed100e40be6c5b890669b8419fd217deb676e89c",
      "old_mode": 33188,
      "old_path": "highwayhash/arch_specific.cc",
      "new_id": "1ab839f58b7435d061155353177c3f509194c3b9",
      "new_mode": 33188,
      "new_path": "highwayhash/arch_specific.cc"
    },
    {
      "type": "modify",
      "old_id": "a7778673e049137bdae58c0041560abb471cf907",
      "old_mode": 33188,
      "old_path": "highwayhash/arch_specific.h",
      "new_id": "76981665dc1bdbb90571c0be8571b09a4dcd232f",
      "new_mode": 33188,
      "new_path": "highwayhash/arch_specific.h"
    },
    {
      "type": "modify",
      "old_id": "03c3e0bba736b36e2163be1dd90e83db4da938af",
      "old_mode": 33188,
      "old_path": "highwayhash/benchmark.cc",
      "new_id": "828a2be52e31cf9696e5d60a93ea4e89eb75e9ab",
      "new_mode": 33188,
      "new_path": "highwayhash/benchmark.cc"
    },
    {
      "type": "modify",
      "old_id": "416a891859d49fee3a68dec1bcea33e89f785ffa",
      "old_mode": 33188,
      "old_path": "highwayhash/c_bindings.cc",
      "new_id": "7e0488fb46a26c82ca9210f0f4d1b4f11946d8af",
      "new_mode": 33188,
      "new_path": "highwayhash/c_bindings.cc"
    },
    {
      "type": "modify",
      "old_id": "92182240f2a6a06d6af3ac0bbc9a9940c45184f8",
      "old_mode": 33188,
      "old_path": "highwayhash/c_bindings.h",
      "new_id": "7d52de7d752e82057b902b0df19a2ef350674641",
      "new_mode": 33188,
      "new_path": "highwayhash/c_bindings.h"
    },
    {
      "type": "modify",
      "old_id": "c78ba494aebd289c52654573ea4ec4e6b711e611",
      "old_mode": 33188,
      "old_path": "highwayhash/compiler_specific.h",
      "new_id": "3c25dd60917de6319650762899f578489f800c4a",
      "new_mode": 33188,
      "new_path": "highwayhash/compiler_specific.h"
    },
    {
      "type": "modify",
      "old_id": "087abf7d6b18f359ee9408590783c6a9430c57a7",
      "old_mode": 33188,
      "old_path": "highwayhash/data_parallel.h",
      "new_id": "89977d0a9fed245528d393378954b8c65ee2248b",
      "new_mode": 33188,
      "new_path": "highwayhash/data_parallel.h"
    },
    {
      "type": "modify",
      "old_id": "7e3b32abd5afb5c1392884637a10124dee34e31c",
      "old_mode": 33188,
      "old_path": "highwayhash/data_parallel_benchmark.cc",
      "new_id": "ddc88b067fb356d0114da009003b8b048b954837",
      "new_mode": 33188,
      "new_path": "highwayhash/data_parallel_benchmark.cc"
    },
    {
      "type": "modify",
      "old_id": "105d7365827bf4176e432421a8c26260d37ff6d7",
      "old_mode": 33188,
      "old_path": "highwayhash/data_parallel_test.cc",
      "new_id": "2728b7d3ad4f27e09aaac196827a3202d234cb4a",
      "new_mode": 33188,
      "new_path": "highwayhash/data_parallel_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d2e108dd75d1b340090f98e6187f8e3d8fb098bb",
      "new_mode": 33188,
      "new_path": "highwayhash/endianess.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "587e3c5985627f7b9c84014058e0dc2030816092",
      "new_mode": 33188,
      "new_path": "highwayhash/example.cc"
    },
    {
      "type": "modify",
      "old_id": "8ad1f025b17d39f1f7735e110cc0e78bf8e40bfc",
      "old_mode": 33188,
      "old_path": "highwayhash/hh_avx2.cc",
      "new_id": "3549460c932e22b6a962b935bdf37d7193ad83d2",
      "new_mode": 33188,
      "new_path": "highwayhash/hh_avx2.cc"
    },
    {
      "type": "modify",
      "old_id": "466a397449327f28c1d074f0cc8782fe0a4da6d8",
      "old_mode": 33188,
      "old_path": "highwayhash/hh_avx2.h",
      "new_id": "aecbdafe1f9056526f829682e8e30fbcaf0ff401",
      "new_mode": 33188,
      "new_path": "highwayhash/hh_avx2.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6827d9b804eb0ae4fead494bcf533d227e041341",
      "new_mode": 33188,
      "new_path": "highwayhash/hh_buffer.h"
    },
    {
      "type": "modify",
      "old_id": "8d8bbcc6ca944add8178e506a28e107248e62771",
      "old_mode": 33188,
      "old_path": "highwayhash/hh_portable.cc",
      "new_id": "8e4c90258b2362cfeac5cd7d53c942216b1411e0",
      "new_mode": 33188,
      "new_path": "highwayhash/hh_portable.cc"
    },
    {
      "type": "modify",
      "old_id": "667c0824c77388ff3d9b6a5820f64be95d220d83",
      "old_mode": 33188,
      "old_path": "highwayhash/hh_portable.h",
      "new_id": "84a17be1b0183626816f50b897abdd4f9b2bb1da",
      "new_mode": 33188,
      "new_path": "highwayhash/hh_portable.h"
    },
    {
      "type": "modify",
      "old_id": "b73845cc5db29ec3f759820b2077c775fa71380b",
      "old_mode": 33188,
      "old_path": "highwayhash/hh_sse41.cc",
      "new_id": "f414b6787b91aeb4193e5f47036610ec3e992cc4",
      "new_mode": 33188,
      "new_path": "highwayhash/hh_sse41.cc"
    },
    {
      "type": "modify",
      "old_id": "5df5722fdd05bba5f0b32689848d97893443da91",
      "old_mode": 33188,
      "old_path": "highwayhash/hh_sse41.h",
      "new_id": "e8ae957205415ac270947d40626c2c25547a36f6",
      "new_mode": 33188,
      "new_path": "highwayhash/hh_sse41.h"
    },
    {
      "type": "modify",
      "old_id": "9fe712815c9796fc964ff87cd501384a34251fd9",
      "old_mode": 33188,
      "old_path": "highwayhash/hh_types.h",
      "new_id": "8ff0f8e8a784edbe4eb672524758d74871bc46e6",
      "new_mode": 33188,
      "new_path": "highwayhash/hh_types.h"
    },
    {
      "type": "modify",
      "old_id": "0703d3b00aae268cbf534571ca652c8b1ba3d544",
      "old_mode": 33188,
      "old_path": "highwayhash/highwayhash.h",
      "new_id": "82aa4a5ad0706ec82c537f0d06aee383a6c64ff1",
      "new_mode": 33188,
      "new_path": "highwayhash/highwayhash.h"
    },
    {
      "type": "modify",
      "old_id": "4affa983e315883346e1a1b52384d01ba58bc6de",
      "old_mode": 33188,
      "old_path": "highwayhash/highwayhash_target.cc",
      "new_id": "6bc913dd203b56fd8db92884c04c2f75954468ff",
      "new_mode": 33188,
      "new_path": "highwayhash/highwayhash_target.cc"
    },
    {
      "type": "modify",
      "old_id": "3f7c2975492b84c3bd84f37c9d5ec1581e9722b6",
      "old_mode": 33188,
      "old_path": "highwayhash/highwayhash_target.h",
      "new_id": "2d9ed1e88c6f253e1fb6b3610126b3902457449d",
      "new_mode": 33188,
      "new_path": "highwayhash/highwayhash_target.h"
    },
    {
      "type": "modify",
      "old_id": "6bdede72d39a23bb2ed80359ca6d078cfbabb503",
      "old_mode": 33188,
      "old_path": "highwayhash/highwayhash_test.cc",
      "new_id": "b0f8b8871236da7aae5931bd767df2d736ed2c80",
      "new_mode": 33188,
      "new_path": "highwayhash/highwayhash_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6bb60b9894a12a9cf717a3e516f30ebc93a8ea2e",
      "new_mode": 33188,
      "new_path": "highwayhash/highwayhash_test_avx2.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "67213e5e671b5d2407009d72e4bc89f53fcd3b0a",
      "new_mode": 33188,
      "new_path": "highwayhash/highwayhash_test_portable.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5e7da27648cde3140e743c8b4589572cdc76cb15",
      "new_mode": 33188,
      "new_path": "highwayhash/highwayhash_test_sse41.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f5d10d513794657fd966f312f18c7337447867ab",
      "new_mode": 33188,
      "new_path": "highwayhash/highwayhash_test_target.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "78f6d36ad8e49c57cb9917bb3f9a08e89ab29a2d",
      "new_mode": 33188,
      "new_path": "highwayhash/highwayhash_test_target.h"
    },
    {
      "type": "modify",
      "old_id": "514bf31337af4ca101a0add2e165c1080f8d385d",
      "old_mode": 33188,
      "old_path": "highwayhash/instruction_sets.cc",
      "new_id": "a02e1f81d912bc606b6c75248d9e2f4f359742ec",
      "new_mode": 33188,
      "new_path": "highwayhash/instruction_sets.cc"
    },
    {
      "type": "modify",
      "old_id": "60ba1a12b2dc641ff4e413f486b07e8fad92d41e",
      "old_mode": 33188,
      "old_path": "highwayhash/instruction_sets.h",
      "new_id": "88bc1bc374a73f7742e3a38b6522a138a7d6f38a",
      "new_mode": 33188,
      "new_path": "highwayhash/instruction_sets.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3ff1bbde700f378ef600b2ff5d34d71fac0e5f99",
      "new_mode": 33188,
      "new_path": "highwayhash/load3.h"
    },
    {
      "type": "modify",
      "old_id": "38aa4ba923c361da0f80f749e9dbc49786087fcb",
      "old_mode": 33188,
      "old_path": "highwayhash/nanobenchmark.cc",
      "new_id": "f0ba6ad35bcba1a01340a3c789f5cd9a41c8933b",
      "new_mode": 33188,
      "new_path": "highwayhash/nanobenchmark.cc"
    },
    {
      "type": "modify",
      "old_id": "9789c7bb12bd13fcf213bf8f45c5721101cbd6bc",
      "old_mode": 33188,
      "old_path": "highwayhash/nanobenchmark.h",
      "new_id": "ecd51d5bb5a326a4b2297377a226958472cdf2b2",
      "new_mode": 33188,
      "new_path": "highwayhash/nanobenchmark.h"
    },
    {
      "type": "modify",
      "old_id": "296fc1cd4320c3c94dd522f8ff627d17b5a791a4",
      "old_mode": 33188,
      "old_path": "highwayhash/nanobenchmark_example.cc",
      "new_id": "d95acf144a07f316e5b3df49d41976c45828e676",
      "new_mode": 33188,
      "new_path": "highwayhash/nanobenchmark_example.cc"
    },
    {
      "type": "modify",
      "old_id": "7b11a5e7e45494d166fcbe3be5fc30fe39fa3715",
      "old_mode": 33188,
      "old_path": "highwayhash/os_specific.cc",
      "new_id": "9364b320798300b8b0fe2aa09b46af0548f8db22",
      "new_mode": 33188,
      "new_path": "highwayhash/os_specific.cc"
    },
    {
      "type": "modify",
      "old_id": "50b8ffdce7d933599c9326dc11fe1df2269db8c5",
      "old_mode": 33188,
      "old_path": "highwayhash/os_specific.h",
      "new_id": "46f3c3e3ef8999ea97b43f2a019e5f0cd7fb5cc2",
      "new_mode": 33188,
      "new_path": "highwayhash/os_specific.h"
    },
    {
      "type": "modify",
      "old_id": "e1bd4df2c8a39e00c087ed6f97721eb4feb34547",
      "old_mode": 33188,
      "old_path": "highwayhash/profiler.h",
      "new_id": "e22d972ab2590d7fa9bfb07140cf9aedd84bde85",
      "new_mode": 33188,
      "new_path": "highwayhash/profiler.h"
    },
    {
      "type": "modify",
      "old_id": "01c2f9e3d580191db3ff8dca3ed5cadf1c86be73",
      "old_mode": 33188,
      "old_path": "highwayhash/profiler_example.cc",
      "new_id": "999cc4581f85ab92af2e2b30bcda9c18c61c9c66",
      "new_mode": 33188,
      "new_path": "highwayhash/profiler_example.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bbcbbfae2752aab01234a160fa18b9f564f3636e",
      "new_mode": 33188,
      "new_path": "highwayhash/robust_statistics.h"
    },
    {
      "type": "modify",
      "old_id": "320ad0a3eec6785a11258886dcdf80af746a5da0",
      "old_mode": 33188,
      "old_path": "highwayhash/scalar.h",
      "new_id": "05705ebf52fa0617e479d966b73e3461b8ec9208",
      "new_mode": 33188,
      "new_path": "highwayhash/scalar.h"
    },
    {
      "type": "modify",
      "old_id": "031ebbdbd7e5d669c069dd7de5605c2cf16c635a",
      "old_mode": 33188,
      "old_path": "highwayhash/scalar_sip_tree_hash.h",
      "new_id": "2f79f3a01071bbaf1921f2bb2ec19a4e17e6afca",
      "new_mode": 33188,
      "new_path": "highwayhash/scalar_sip_tree_hash.h"
    },
    {
      "type": "modify",
      "old_id": "0ffcb646f69ba670e7a3d5e90dc668d553cdc43e",
      "old_mode": 33188,
      "old_path": "highwayhash/sip_hash.h",
      "new_id": "eebe3dc9447d7558d0dba5f7baa6f64b5ab68621",
      "new_mode": 33188,
      "new_path": "highwayhash/sip_hash.h"
    },
    {
      "type": "modify",
      "old_id": "b3b5c453be189fb0d87a0c21f2e74192c2904d31",
      "old_mode": 33188,
      "old_path": "highwayhash/sip_hash_test.cc",
      "new_id": "a77239ea7cbe460f15253f0603223ffb5e26d2f1",
      "new_mode": 33188,
      "new_path": "highwayhash/sip_hash_test.cc"
    },
    {
      "type": "modify",
      "old_id": "dc7ad950c5093083d2357394d70fe36b53b390fe",
      "old_mode": 33188,
      "old_path": "highwayhash/sip_tree_hash.cc",
      "new_id": "59568f15d0135eead85b33eb415bd47bab1ccf4e",
      "new_mode": 33188,
      "new_path": "highwayhash/sip_tree_hash.cc"
    },
    {
      "type": "modify",
      "old_id": "38cae7e9a0507e45e583a55bb42f1ac08b3ec2d1",
      "old_mode": 33188,
      "old_path": "highwayhash/sip_tree_hash.h",
      "new_id": "ee5a42340e26b593e768e8ca36c2867c2350a411",
      "new_mode": 33188,
      "new_path": "highwayhash/sip_tree_hash.h"
    },
    {
      "type": "delete",
      "old_id": "5cd716437738064480b6940d568be7eeb3eb17c6",
      "old_mode": 33188,
      "old_path": "highwayhash/targets.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "e2b795e3ea1956349bab37e730733e9e7f1ed779",
      "old_mode": 33188,
      "old_path": "highwayhash/tsc_timer.h",
      "new_id": "4a88c0f8e682ee9bd9ebb056c59c3d52b9a2eb54",
      "new_mode": 33188,
      "new_path": "highwayhash/tsc_timer.h"
    },
    {
      "type": "modify",
      "old_id": "2114cedc45058116b917c254220270135fc65759",
      "old_mode": 33188,
      "old_path": "highwayhash/vector128.h",
      "new_id": "2c22925bd932949f3b26a544a62c6f4364208063",
      "new_mode": 33188,
      "new_path": "highwayhash/vector128.h"
    },
    {
      "type": "modify",
      "old_id": "965c5a2a7b9191b9c222f5b1deca100174769408",
      "old_mode": 33188,
      "old_path": "highwayhash/vector256.h",
      "new_id": "c508816e5965adf4856613effb50abeffd0e8c3b",
      "new_mode": 33188,
      "new_path": "highwayhash/vector256.h"
    },
    {
      "type": "modify",
      "old_id": "d632740a8d684e31ef2d612c5a36f6586c40b3be",
      "old_mode": 33188,
      "old_path": "highwayhash/vector_test.cc",
      "new_id": "d9f02567bed0be13ca209ad4f95d589a55dd8743",
      "new_mode": 33188,
      "new_path": "highwayhash/vector_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e5bdb332cdd42c5fbe44c929ff1c28e86ae04528",
      "new_mode": 33188,
      "new_path": "highwayhash/vector_test_avx2.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "638f69d488a1da64a7333b6b7686601d3490e74d",
      "new_mode": 33188,
      "new_path": "highwayhash/vector_test_portable.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9addafff89cdf63c95336f4d6850c6656a5828ee",
      "new_mode": 33188,
      "new_path": "highwayhash/vector_test_sse41.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c9371dedd664d821335da1a21f4bed3c47e74065",
      "new_mode": 33188,
      "new_path": "highwayhash/vector_test_target.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f9310d4de83eb1016105f5f281a158ab501e736e",
      "new_mode": 33188,
      "new_path": "highwayhash/vector_test_target.h"
    }
  ]
}
