)]}'
{
  "commit": "7ccfa79b883fc5ba5bd24ee88a8e5a455556d2dd",
  "tree": "39d9f2d0b8004ba317f6d0bfe948fe4140ae2ba7",
  "parents": [
    "ddc304d531896ececf437e2223f5dffe06be1232",
    "b3957f734332cc138d8c02d0395466d00f4920d1"
  ],
  "author": {
    "name": "Abhinav Gupta",
    "email": "abg@uber.com",
    "time": "Fri May 15 15:49:02 2020 -0700"
  },
  "committer": {
    "name": "Abhinav Gupta",
    "email": "abg@uber.com",
    "time": "Fri May 15 15:49:02 2020 -0700"
  },
  "message": "Generate all atomics automatically (#77)\n\n`gen-valuewrapper` is specialized to generating type-safe atomic\nwrappers around `atomic.Value`. This limitation is unnecessary. Given\nfunctions to convert an exposed type to the underlying type (referred to\nas \"packing\" here) and back (\"unpacking\"), we can generate wrappers\naround any backing atomic type.\n\nThis generalizes `valuewrapper` into an `atomicwrapper` implementing\nsaid functionality, and adding opt-in support for generating CAS, Swap,\nand JSON methods.\n\nWith this, we can automatically generate bool, float64, and\ntime.Duration atomic wrappers on top of Uint32, Uint64, and Int64\nrespectively, as well as their core functionality.\n",
  "tree_diff": []
}
