)]}' { "log": [ { "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" }, { "commit": "b3957f734332cc138d8c02d0395466d00f4920d1", "tree": "39d9f2d0b8004ba317f6d0bfe948fe4140ae2ba7", "parents": [ "e63519f6ead569348d4203ec2db353ff878d57eb" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Thu May 14 16:22:24 2020 -0700" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Fri May 15 15:47:25 2020 -0700" }, "message": "duration: Generate with gen-atomicwrapper\n\nGenerate atomic.Duration with gen-valuewrapper by wrapping atomic.Int64.\nUse type casts to int64 and time.Duration as pack and unpack.\n" }, { "commit": "e63519f6ead569348d4203ec2db353ff878d57eb", "tree": "96fcbdd0550a81d67671623194f2cb97c445ebe9", "parents": [ "f455d48e53f0ee00b4ed494657bf2b43087f4e7c" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Thu May 14 16:18:15 2020 -0700" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Fri May 15 15:47:25 2020 -0700" }, "message": "float64: Generate with gen-atomicwrapper\n\nGenerate atomic.Float64 with gen-valuewrapper by wrapping atomic.Uint64,\nusing math.Float64bits and math.Float64frombits to pack and unpack\nfloat64 to uint64.\n" }, { "commit": "f455d48e53f0ee00b4ed494657bf2b43087f4e7c", "tree": "4c647acda84abe7796f90971ec15cf20566c2ee0", "parents": [ "af220de51287f80bfddb7ac53b59d290b9428e25" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Thu May 14 16:14:04 2020 -0700" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Fri May 15 15:47:25 2020 -0700" }, "message": "bool: Generate with gen-valuewrapper\n\nGenerate atomic.Bool with gen-valuewrapper by wrapping atomic.Uint32.\nCAS, Swap, and JSON implementations are generated automatically.\n" }, { "commit": "af220de51287f80bfddb7ac53b59d290b9428e25", "tree": "7f22331721698d60874c88e11771f6381a325088", "parents": [ "98666305b5011171baf5eb530e6551aa683d5d6b" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Thu May 14 15:34:20 2020 -0700" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Fri May 15 15:47:25 2020 -0700" }, "message": "Separate files for each atomic type\n\nAs in #73, separate each atomic type into its own file to ease review of\ntransition to generated code.\n\nAfter moving every atomic to its own file, the atomic.go file serves\nonly as documentation, so rename it to doc.go.\n" }, { "commit": "98666305b5011171baf5eb530e6551aa683d5d6b", "tree": "897489014e1ad398ad4a9d2003eff0935a7c6bae", "parents": [ "ddc304d531896ececf437e2223f5dffe06be1232" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Thu May 14 15:27:16 2020 -0700" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Fri May 15 15:47:21 2020 -0700" }, "message": "Generalize gen-valuewrapper into atomicwrapper\n\nvaluewrapper can be used only to generate atomic wrapper types for\ntypes which are stored as atomic.Value. This isn\u0027t necessary because the\nsame logic can be applied to atomic wrappers built on other types like\nDuration and Bool.\n\nGeneralize valuewrapper into atomicwrapper with support for optional\npack/unpack functions which handle conversion to/from `interface{}`.\nThis lets Error hook in and install the `storedError` struct (now called\n`packedError`) to avoid panics from nil storage or value type change.\n" }, { "commit": "ddc304d531896ececf437e2223f5dffe06be1232", "tree": "6880c418f495b08ac308624b3d32c9db1f919c8c", "parents": [ "982a2dde2368050e00c1a2c82cd36053fa9ccdde" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Thu May 14 16:26:08 2020 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Thu May 14 16:26:08 2020 -0700" }, "message": "Implement fmt.Stringer for atomic types (#76)\n\nAdd safe `String()` methods for atomic types that replicate the same\r\nbehavior as `fmt.Sprintf(\"%v\", x.Load())` without the allocations.\r\n\r\nAs with json.Marshaler/Unmarshaler, we\u0027ve omitted the `atomic.Value`\r\ntype for now.\r\n\r\nResolves #50" }, { "commit": "982a2dde2368050e00c1a2c82cd36053fa9ccdde", "tree": "9e7e3703055753d7255a3ed588552b432699ba7c", "parents": [ "5ed3279fd83d931a1563489a1aec336674f2da62" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue May 12 13:57:19 2020 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue May 12 13:57:19 2020 -0700" }, "message": "Disallow non-atomic comparisons of atomics (#74)\n\nIt is currently possible to make non-atomic comparisons of atomic\r\nvalues:\r\n\r\n x :\u003d atomic.NewInt32(1)\r\n y :\u003d atomic.NewInt32(1)\r\n fmt.Println(*x \u003d\u003d *y)\r\n\r\nThis is undesirable because it loads the value in a non-atomic way. The\r\ncorrect method is,\r\n\r\n x :\u003d atomic.NewInt32(1)\r\n y :\u003d atomic.NewInt32(1)\r\n fmt.Println(x.Load() \u003d\u003d y.Load())\r\n\r\nTo prevent this, disallow comparison of atomic values by embedding an\r\nuncomparable array into atomics. The empty array adds no runtime cost,\r\nand does not increase the in-memory size of the structs. Inspired by\r\n[go4.org/mem#RO][1].\r\n\r\n [1]: https://github.com/go4org/mem/blob/3dbcd07079b881f9bedb802b4099856c1e267fa1/mem.go#L42\r\n\r\nNote that the Value struct, which embeds `\"sync/atomic\".Value` was also\r\nchanged. This will break usages in the following form, but that\u0027s\r\nacceptable because unkeyed struct literals are among the exceptions\r\nstated in the [Go 1 compatibility expectations][2].\r\n\r\n import (\r\n syncatomic \"sync/atomic\"\r\n \"go.uber.org/atomic\"\r\n )\r\n\r\n atomic.Value{syncatomic.Value{..}}\r\n\r\n [2]: https://golang.org/doc/go1compat#expectations\r\n\r\nResolves #72" }, { "commit": "5ed3279fd83d931a1563489a1aec336674f2da62", "tree": "03605b06ccd43a75a86d754c4ec459bd280c724b", "parents": [ "8872e1c371be53b50838a80c63fdf49cec3650ad" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue May 12 13:49:16 2020 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue May 12 13:49:16 2020 -0700" }, "message": "Mark generated files as such (#75)\n\nGenerated files should contain the following comment in the first few\r\nlines for them to be considered generated by GitHub.\r\n\r\n Code generated by \u003cexecutable\u003e\r\n\r\nThe additional `@generated` tag does the same for Phabricator.\r\n" }, { "commit": "8872e1c371be53b50838a80c63fdf49cec3650ad", "tree": "7f9cd03c1df1aa5ce1a1d3b12db0ec9025ad6a24", "parents": [ "1b900bfc8ceff7d916b9136af2515035c6699d1f", "49e6584f112d31a14071e3bf6d968e8b1fefaf1e" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue May 12 11:53:27 2020 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue May 12 11:53:27 2020 -0700" }, "message": "Automatically generate integer and Value wrappers (#73)\n\nRather than hand-writing the atomic wrappers for integers and types\r\nwhich wrap `atomic.Value`, generate them automatically from shared\r\ntemplates. The generators are placed under `internal/gen-*` to avoid\r\nexternal usage.\r\n\r\nA new `make` target verifies that the code checked into the repository\r\nis always up-to-date." }, { "commit": "49e6584f112d31a14071e3bf6d968e8b1fefaf1e", "tree": "7f9cd03c1df1aa5ce1a1d3b12db0ec9025ad6a24", "parents": [ "08f23f163e588a6290e1bdfcd67679d64444d3ec" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon May 11 16:37:32 2020 -0700" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue May 12 11:30:23 2020 -0700" }, "message": "make: Ignore coverage for generator scripts\n" }, { "commit": "08f23f163e588a6290e1bdfcd67679d64444d3ec", "tree": "70f1ab24a45799ed6ac85f290308b0f873ca3fc0", "parents": [ "d9a13c26a5893b751120941fc2526047ff56b447" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon May 11 16:05:35 2020 -0700" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue May 12 11:30:18 2020 -0700" }, "message": "Generate atomic Value wrappers automatically\n\nRather than hand-writing wrappers around atomic.Value, generate them\nautomatically from the same template. The generator is at\ninternal/gen-valuewrapper. The generator correctly handles generating\nwrapper structs for nillable types.\n" }, { "commit": "d9a13c26a5893b751120941fc2526047ff56b447", "tree": "2fed900270e35a83d977d7077797b8e704f86a4b", "parents": [ "530718eef1aafd31ff587bc9c03d20dcf802ef14" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon May 11 14:47:57 2020 -0700" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue May 12 11:30:09 2020 -0700" }, "message": "Generate atomic integers automatically\n\nRather than hand-writing the atomic integers, generate them\nautomatically from the same template. The generator is at\ninternal/gen-atomicint.\n\nTo ensure these are never out of date, add another `make` target which\nverifies that the working tree is left unchanged after regenerating\ncode.\n" }, { "commit": "530718eef1aafd31ff587bc9c03d20dcf802ef14", "tree": "f3ab95ae9c02649089f8e3db6244ef407192576e", "parents": [ "1b900bfc8ceff7d916b9136af2515035c6699d1f" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon May 11 15:12:53 2020 -0700" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon May 11 16:15:06 2020 -0700" }, "message": "ints: Pull types into independent files\n\nIn anticipation of automatically generating these definitions, pull the\ndefinitions of the various integer types into their own files as well as\ntheir tests.\n\nThis will make it easier to review the changes when each of these files\nis generated independently and automatically.\n" }, { "commit": "1b900bfc8ceff7d916b9136af2515035c6699d1f", "tree": "bc6c14cb599a1802690753996e183ad98a56efaa", "parents": [ "fb0c2ade6437e33bd1476d4f0616cb67da4f51ee" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Mon May 11 14:48:55 2020 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon May 11 14:48:55 2020 -0700" }, "message": "Replace escaped strings with raw string literals (#71)\n\n" }, { "commit": "fb0c2ade6437e33bd1476d4f0616cb67da4f51ee", "tree": "f80a334746b7c95a587891ded0055c798da54b67", "parents": [ "7311447a2cf7e1d3e51e8e22cd5bf4ecae979665" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon May 11 14:40:09 2020 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon May 11 14:40:09 2020 -0700" }, "message": "string: Implement TextMarshaler, TextUnmarshaler (#70)\n\nSince String holds textual information, instead of implementing\r\njson.Marshaler and json.Unmarshaler, we should implement\r\nencoding.TextMarshaler and encoding.TextUnmarshaler on String.\r\n\r\nThis makes it encodable and decodable using a variety of formats\r\nincluding JSON, XML, YAML, and TOML.\r\n\r\n" }, { "commit": "7311447a2cf7e1d3e51e8e22cd5bf4ecae979665", "tree": "87fa6dc87f3f0af891d4cd320b44e76863d1e56a", "parents": [ "fcb7ed1e6974a07f858362d14a27fd8b44aea7d2" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon May 11 11:21:02 2020 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon May 11 11:21:02 2020 -0700" }, "message": "tests: Use subtests for JSON (#69)\n\nChange JSON marshaling and unmarshaling tests to use subtests for\r\ncleaner separation in output as well as for easier visual scanning." }, { "commit": "fcb7ed1e6974a07f858362d14a27fd8b44aea7d2", "tree": "efe923c1c119532c396fa2241e4243eb4a0bbfc5", "parents": [ "b2c105d12ef6919fdf9e32b217d66ffe86e6a6f6" ], "author": { "name": "Daniel Malmer", "email": "dmalmer@gmail.com", "time": "Sun May 10 10:17:21 2020 -0400" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Sun May 10 07:17:21 2020 -0700" }, "message": "Add JSON Marshal and Unmarshal (#68)\n\nSupport serializing and deserializing atomic objects to/from JSON using\r\nthe JSON representation of the underlying types. Without this,\r\nmarshaling returns `{}`.\r\n\r\nPer discussion in #68, `atomic.Value` does not yet implement support\r\nbecause there\u0027s an open question as to whether it should implement it\r\neven if the underlying type doesn\u0027t support JSON marshaling/\r\nunmarshaling.\r\n\r\nResolves #49 \r\n" }, { "commit": "b2c105d12ef6919fdf9e32b217d66ffe86e6a6f6", "tree": "a752bd01840c546fd54f78d79631b10512e9983b", "parents": [ "845920076a298bdb984fb0f1b86052e4ca0a281c" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon Feb 24 13:58:47 2020 -0800" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon Feb 24 13:58:47 2020 -0800" }, "message": "Back to development\n" }, { "commit": "845920076a298bdb984fb0f1b86052e4ca0a281c", "tree": "363febcdeb14c33ec01299e68562c12c816867a7", "parents": [ "9cf2b0ab39f48b4ce5688c345c52ba9ad57cb2d3" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon Feb 24 13:57:07 2020 -0800" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon Feb 24 13:57:07 2020 -0800" }, "message": "Preparing release v 1.6.0 (#66)\n\nThis releases v1.6.0." }, { "commit": "9cf2b0ab39f48b4ce5688c345c52ba9ad57cb2d3", "tree": "57bedcabd2ea1ccea542e1d2e8fd6e15e2626f25", "parents": [ "60aeda6ff1d5d5595e53aca47fbd7640f9faa684" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon Feb 24 13:51:01 2020 -0800" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon Feb 24 13:51:01 2020 -0800" }, "message": "Drop dependency on golang.org/x/{tools,lint} (#65)\n\nWe use `golang.org/x/{tools,lint}` for dev-time tooling only. We don\u0027t\r\nneed to declare it as a library dependency. This causes issues like\r\nhttps://github.com/uber-go/multierr/issues/35.\r\n\r\nThis change drops these depnedencies by renaming the tools.go so that\r\nthese are considered test dependencies only. `go mod vendor` does not\r\nconsider test dependencies.\r\n" }, { "commit": "60aeda6ff1d5d5595e53aca47fbd7640f9faa684", "tree": "454dd7347b0738d4e5f961f362d1ae034d438bfb", "parents": [ "40ae6a40a970ef4cdbffa7b24b280e316db8accc" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Tue Nov 19 13:35:34 2019 -0800" }, "committer": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Tue Nov 19 13:35:34 2019 -0800" }, "message": "Back to development\n" }, { "commit": "40ae6a40a970ef4cdbffa7b24b280e316db8accc", "tree": "0fb1896368f7af57a53ce718535479d829ddb4e5", "parents": [ "b99530f7f5dd8e90ff39dedf1cafb4c89d7a5778" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Tue Nov 19 13:33:40 2019 -0800" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue Nov 19 13:33:40 2019 -0800" }, "message": "Modify Bool to only use 1 or 0, rater than last bit (#62)\n\nMost methods of Bool currently rely on the last bit, but `CAS`\r\ngenerates the int value to match `old` based on the user\u0027s input\r\nand so it assumes the value is either `1` or `0`.\r\n\r\nThe only reason we relid on the last bit is that `Toggle` was\r\nimplemented using an atomic add. We can instead implement\r\n`Toggle` using a loop around `CAS`.\r\n\r\nFixes #61." }, { "commit": "b99530f7f5dd8e90ff39dedf1cafb4c89d7a5778", "tree": "160c9ae27bb78c290c7760e8e9a7e788271a168c", "parents": [ "fb77e1d7374710c62cb1dd8cf137415949bf7d19" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon Nov 04 15:54:56 2019 -0800" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon Nov 04 15:54:56 2019 -0800" }, "message": "README: Fix legacy import path instructions (#60)\n\nIn migrating to Go modules, we had to decide between the import paths\r\ngithub.com/uber-go/atomic and go.uber.org/atomic. We chose the latter.\r\n\r\nAs a result of this, users of the legacy import path would get an error\r\nmessage similar to the following:\r\n\r\n github.com/uber-go/atomic: github.com/uber-go/atomic@v1.5.0: parsing go.mod:\r\n module declares its path as: go.uber.org/atomic\r\n but was required as: github.com/uber-go/atomic\r\n\r\nWe suggested that users of the legacy import path add the following to\r\ntheir go.mod.\r\n\r\n replace github.com/uber-go/atomic \u003d\u003e go.uber.org/atomic v1.5.0\r\n\r\nThis is inaccurate and will result in the following error message:\r\n\r\n go.uber.org/atomic@v1.5.0 used for two different module paths\r\n (github.com/uber-go/atomic and go.uber.org/atomic)\r\n\r\nThis was not detected before because `go mod tidy` works fine with this\r\n`replace` directive. It fails only when it gets to `go build`.\r\n\r\nAfter digging into this more, per section 4.4 of the resolution section\r\nof [How can I resolve \"parsing go.mod: unexpected module path\" (..)][1],\r\nthe correct method of resolving this is to downgrade the legacy import\r\npath to a version prior to the use of Go modules.\r\n\r\n [1]: https://github.com/golang/go/wiki/Modules#how-can-i-resolve-parsing-gomod-unexpected-module-path-and-error-loading-module-requirements-errors-caused-by-a-mismatch-between-import-paths-vs-declared-module-identity\r\n\r\nSo the correct `replace` directive here would be,\r\n\r\n replace github.com/uber-go/atomic \u003d\u003e github.com/uber-go/atomic v1.4.0\r\n\r\nThis fix was verified both, locally and by @atibhav21 who first ran into\r\nthis." }, { "commit": "fb77e1d7374710c62cb1dd8cf137415949bf7d19", "tree": "3332eff03bf9220727b46e85b50914a28c6fdb86", "parents": [ "9dc4df04d0d1c39369750a9f6c32c39560672089" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue Oct 29 15:14:36 2019 -0700" }, "committer": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue Oct 29 15:14:36 2019 -0700" }, "message": "Back to development\n" }, { "commit": "9dc4df04d0d1c39369750a9f6c32c39560672089", "tree": "abb71ced3c705209b39414e62628ede3700e3b62", "parents": [ "473b9563f0a8a942bb1cbe81ed990abd41a3be2b" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue Oct 29 15:13:04 2019 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue Oct 29 15:13:04 2019 -0700" }, "message": "Preparing release v1.5.0 (#58)\n\n" }, { "commit": "473b9563f0a8a942bb1cbe81ed990abd41a3be2b", "tree": "395245c391cd91525c0050c7b48b8976e20dc417", "parents": [ "187d219e0c37dd5ba4f4dbadd4794275167b460d" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue Oct 29 15:04:38 2019 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue Oct 29 15:04:38 2019 -0700" }, "message": "Switch to Go modules (#56)\n\nThis switches atomic to Go modules. This has the effect of simplifying\r\nthe Makefile and the Travis build, as well as getting rid of the overly\r\ncomplicated coverage script we copied here.\r\n\r\nTools dependencies (currently only golint) were added to the tools.go.\r\n\r\nAs a result of this change, we no longer support the non-vanity import path\r\ngithub.com/uber-go/atomic. Users must use the vanity import path, or add a\r\n`replace` directive.\r\n\r\nSupersedes #40 " }, { "commit": "187d219e0c37dd5ba4f4dbadd4794275167b460d", "tree": "79f6480f84e503c6cee8dcaabd97c9154700421c", "parents": [ "ef0d20d85b01f4708a8085bca571838bf59a3f77" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Tue Oct 29 14:13:54 2019 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue Oct 29 14:13:54 2019 -0700" }, "message": "Add a CHANGELOG (#57)\n\nThis adds a CHANGELOG.md to the project, retroactively filling it up\r\nbased on https://github.com/uber-go/atomic/releases." }, { "commit": "ef0d20d85b01f4708a8085bca571838bf59a3f77", "tree": "436de2093c982a0644ccd3a3f8fbc18a634a5719", "parents": [ "df976f2515e274675050de7b3f42545de80594fd" ], "author": { "name": "Sergey Shepelev", "email": "temotor@gmail.com", "time": "Thu Aug 01 00:47:37 2019 +0500" }, "committer": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Wed Jul 31 12:47:37 2019 -0700" }, "message": "Fix typo in make lint rule (#55)\n\n" }, { "commit": "df976f2515e274675050de7b3f42545de80594fd", "tree": "ae2ae5d5ebe34d2f6c8d4239d6d1f5e84e53136f", "parents": [ "5a6ca662548f17725b236433764681f0f028bb38" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Wed May 01 13:56:49 2019 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Wed May 01 13:56:49 2019 -0700" }, "message": "Run lint on 1.12, remove pre-1.11 versions (#52)\n\nClean up the Makefile to use ./... instead of a packages variable.\r\n\r\nGolint checks vendor when used with \"./...\" so use `go list ./...`.\r\nThis lint check was previously not even running (PKGS was undefined)." }, { "commit": "5a6ca662548f17725b236433764681f0f028bb38", "tree": "c0add276f2c62672ca4864532273e2fe50fe3bd3", "parents": [ "5328d69c76a98d1d21c773653a5a78fa28d89921" ], "author": { "name": "Abhinav Gupta", "email": "abg@uber.com", "time": "Mon Apr 29 13:45:39 2019 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon Apr 29 13:45:39 2019 -0700" }, "message": "README: Switch to travis-ci.com for badge (#51)\n\n" }, { "commit": "5328d69c76a98d1d21c773653a5a78fa28d89921", "tree": "17ed744079a86b9091b2b71a5e0544827bb6f6ff", "parents": [ "8dc6146f7569370a472715e178d8ae31172ee6da" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Mon Feb 25 17:13:05 2019 -0800" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon Feb 25 17:13:05 2019 -0800" }, "message": "Simplify lint version select, control via .travis.yml (#46)\n\nThis is similar to tchannel, see\r\nhttps://github.com/uber/tchannel-go/pull/651\r\n\r\nand\r\nhttps://github.com/uber/tchannel-go/blob/dev/.travis.yml" }, { "commit": "8dc6146f7569370a472715e178d8ae31172ee6da", "tree": "f466256111d18df8771946d8612bcfa7531734c5", "parents": [ "bb9a8edc0f888f7dcda2e967c3409846a9d8475c" ], "author": { "name": "William Banfield", "email": "billybanfield@users.noreply.github.com", "time": "Thu Oct 18 17:50:23 2018 -0400" }, "committer": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Thu Oct 18 14:50:23 2018 -0700" }, "message": "switch hr to native markdown to render link (#43)\n\n" }, { "commit": "bb9a8edc0f888f7dcda2e967c3409846a9d8475c", "tree": "1300ec8be4b83fdaa621a60b9cf620fb2c036eaa", "parents": [ "ca680462431f8c7f96686d91b1d9e5203c4b075b" ], "author": { "name": "alexeypavlenko", "email": "alex.gripav@gmail.com", "time": "Thu Sep 27 19:07:59 2018 +0300" }, "committer": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Thu Sep 27 09:07:59 2018 -0700" }, "message": "Introduce an atomic type-safe wrapper around error type. (#42)\n\n" }, { "commit": "ca680462431f8c7f96686d91b1d9e5203c4b075b", "tree": "5367a33d45a23333dead53fc73180b6f00b06bb0", "parents": [ "1ea20fb1cbb1cc08cbd0d913a96dead89aa18289" ], "author": { "name": "Oleg Kovalov", "email": "iamolegkovalov@gmail.com", "time": "Mon Aug 06 06:53:14 2018 +0200" }, "committer": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Sun Aug 05 21:53:14 2018 -0700" }, "message": "Update Go versions on Travis (#41)\n\n" }, { "commit": "1ea20fb1cbb1cc08cbd0d913a96dead89aa18289", "tree": "bcb68c16491d1a51b71826ee38f4aef07fe32e9f", "parents": [ "8474b86a5a6f79c443ce4b2992817ff32cf208b8" ], "author": { "name": "Nathan Jordan", "email": "natedagreat27274@gmail.com", "time": "Tue May 01 10:38:09 2018 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue May 01 10:38:09 2018 -0700" }, "message": "add atomic duration type (#37)\n\nwrapper around existing `Int64` type for atomic operations on `time.Duration` values" }, { "commit": "8474b86a5a6f79c443ce4b2992817ff32cf208b8", "tree": "5eefc23fd2b014d54a2b69550e10e5cce3479816", "parents": [ "54e9e20165431ae155d56ca42d406b7a69fa7192" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Tue Nov 14 12:44:01 2017 -0800" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue Nov 14 12:44:01 2017 -0800" }, "message": "Add standard library atomic operations to benchmark (#35)\n\nCurrently, we only benchmark our custom atomic types, but don\u0027t\r\nbenchmark the standard library types. Add benchmarks for ints and uints\r\nthat the standard library supports." }, { "commit": "54e9e20165431ae155d56ca42d406b7a69fa7192", "tree": "cd024e7d7ea0ebdb0242fdfc14fa3fbd27b6ebe6", "parents": [ "0ee2c2d99502f0a552d9b2ee98f1f97fed196d48" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Tue Nov 14 11:42:34 2017 -0800" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue Nov 14 11:42:34 2017 -0800" }, "message": "Add parallel benchmarks (#34)\n\nAtomic operations tend to be fast when there\u0027s no contention but get a\r\nlot slower with contention, so add tests which run the same stress test\r\nin parallel." }, { "commit": "0ee2c2d99502f0a552d9b2ee98f1f97fed196d48", "tree": "0a701aa11202f5db05c4b8278d7c8f7cc725403d", "parents": [ "e81582a97d2dffa59c4cce87d076b4e372aeb62e" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Tue Nov 14 10:36:59 2017 -0800" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue Nov 14 10:36:59 2017 -0800" }, "message": "Concurrently modify same atomic in stress tests (#33)\n\nCurrently, the stress tests start multiple goroutines, but they all have\r\ntheir own local atomic, so they are not concurrently modifying the same\r\nvalues. Return a function which can be run concurrently to modify the\r\nsame atomic." }, { "commit": "e81582a97d2dffa59c4cce87d076b4e372aeb62e", "tree": "bf99499509711dc74f03325d69be2fd0b98a9687", "parents": [ "54f72d32435d760d5604f17a82e2435b28dc4ba5" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Tue Nov 14 08:16:11 2017 -0800" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue Nov 14 08:16:11 2017 -0800" }, "message": "Revert \"Optimization for String.Store(\"\")\" (#32)\n\nThis optimization causes data races since we\u0027re changing the value field\r\nwithout using atomics. E.g., a caller who has multiple goroutines\r\ncalling `Set(\"1\")` and `Set(\"\")` will race on the access to `s.v` since\r\none goroutine is trying to read it while the other sets it, neither\r\nusing atomic operations.\r\n\r\nThis reverts commit 16b44f14f0990d358f2ba3191ff8e7c44c9f0bef." }, { "commit": "54f72d32435d760d5604f17a82e2435b28dc4ba5", "tree": "c6104598d9c47a9d24afcec31dfc993f490efd2c", "parents": [ "70bd1261d36be490ebd22a62b385a3c5d23b6240" ], "author": { "name": "Grayson Koonce", "email": "grayson.koonce@gmail.com", "time": "Tue Aug 29 15:32:23 2017 -0700" }, "committer": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Tue Aug 29 15:32:23 2017 -0700" }, "message": "Test Go 1.9 (#31)\n\n" }, { "commit": "70bd1261d36be490ebd22a62b385a3c5d23b6240", "tree": "9f63778cd3bcf58068d7d756ec213bb839e15be0", "parents": [ "16b44f14f0990d358f2ba3191ff8e7c44c9f0bef" ], "author": { "name": "Bill Fumerola", "email": "billf@uber.com", "time": "Tue May 09 15:23:09 2017 -0700" }, "committer": { "name": "bill fumerola", "email": "billf@mu.org", "time": "Wed Jul 19 18:46:50 2017 -0400" }, "message": "Use stress tests for benchmarks\n" }, { "commit": "16b44f14f0990d358f2ba3191ff8e7c44c9f0bef", "tree": "659c6bab74ab898f2229840d69abc06a78a49b54", "parents": [ "0506d69f5564c56e25797bf7183c28921d4c6360" ], "author": { "name": "Bill Fumerola", "email": "billf@uber.com", "time": "Tue May 09 15:26:45 2017 -0700" }, "committer": { "name": "bill fumerola", "email": "billf@mu.org", "time": "Wed Jul 19 18:44:22 2017 -0400" }, "message": "Optimization for String.Store(\"\")\n" }, { "commit": "0506d69f5564c56e25797bf7183c28921d4c6360", "tree": "0ab2597a513800d3ab03d7b60d6cc6ac898cfb89", "parents": [ "3c3f2a99a14d91ec4b1b9f2b7658de4ba60c95cb" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Thu Jun 08 17:20:07 2017 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Thu Jun 08 17:20:07 2017 -0700" }, "message": "Add .codecov with status checking for 100% coverage (#30)\n\n" }, { "commit": "3c3f2a99a14d91ec4b1b9f2b7658de4ba60c95cb", "tree": "a14d6be361dac0d0f799b3d5aab139c8abfd1743", "parents": [ "d245187332942b75125245f28f56b7475d148183" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Thu Jun 08 16:17:25 2017 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Thu Jun 08 16:17:25 2017 -0700" }, "message": "Point coverage badge at codecov instead of coveralls" }, { "commit": "d245187332942b75125245f28f56b7475d148183", "tree": "89f6abf2ebf6889177e0db4ead1667d2a303c824", "parents": [ "908889c45e73bedd558e99819aea3be3503fc581" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Thu Jun 08 16:14:49 2017 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Thu Jun 08 16:14:49 2017 -0700" }, "message": "Try codecov instead of coveralls (#28)\n\n" }, { "commit": "908889c45e73bedd558e99819aea3be3503fc581", "tree": "392762ba6370247443b5fbd8fd9e4464b8f0b52f", "parents": [ "a85b15eff9f2092b1cf20d4fb804899dd0d5e422" ], "author": { "name": "Bill Fumerola", "email": "billf@uber.com", "time": "Tue May 09 15:51:15 2017 -0700" }, "committer": { "name": "bill fumerola", "email": "billf@mu.org", "time": "Wed May 24 19:49:27 2017 -0700" }, "message": "goreportcard badge\n" }, { "commit": "a85b15eff9f2092b1cf20d4fb804899dd0d5e422", "tree": "eab16ce99540730dd85416b7b9cc0ae5bfa57b44", "parents": [ "3f020e6d5d16c86f23454bf17d24724df80594bb" ], "author": { "name": "Bill Fumerola", "email": "billf@uber.com", "time": "Tue May 09 11:29:30 2017 -0700" }, "committer": { "name": "bill fumerola", "email": "billf@mu.org", "time": "Tue May 09 14:47:25 2017 -0700" }, "message": "Use our own Value for String\n" }, { "commit": "3f020e6d5d16c86f23454bf17d24724df80594bb", "tree": "fe29ff000f666bbfdb8ad3d8062c847976c87ef0", "parents": [ "1d7f075bbe2659dfefbcb41e135048f29da50547" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Tue May 09 12:57:10 2017 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue May 09 12:57:10 2017 -0700" }, "message": "Add Bool.CAS for compare-and-swap semantics (#23)\n\n" }, { "commit": "1d7f075bbe2659dfefbcb41e135048f29da50547", "tree": "ee44334f510c58f3372958715618318e6048c362", "parents": [ "4e336646b2ef9fc6e47be8e21594178f98e5ebcf" ], "author": { "name": "Oleg Kovalov", "email": "iamolegkovalov@gmail.com", "time": "Sun Apr 30 20:40:09 2017 +0300" }, "committer": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Sun Apr 30 10:40:09 2017 -0700" }, "message": "Update Travis to run Go 1.7 and 1.8 versions (#22)\n\n" }, { "commit": "4e336646b2ef9fc6e47be8e21594178f98e5ebcf", "tree": "6b378541dcfa1cae8c0b7bf8504320f3690f3d1a", "parents": [ "1dcf4eb48319b17edb44c44955ee2617ae4ee895" ], "author": { "name": "bill fumerola", "email": "billf@mu.org", "time": "Mon Apr 10 19:30:53 2017 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon Apr 10 19:30:53 2017 -0700" }, "message": "Shadow atomic.Value from sync/atomic (#19)\n\n" }, { "commit": "1dcf4eb48319b17edb44c44955ee2617ae4ee895", "tree": "e47418de44b7fbabadc0fdad999a1ea4327db970", "parents": [ "3b8db5e93c4c02efbc313e17b2e796b0914a01fb" ], "author": { "name": "bill fumerola", "email": "billf@mu.org", "time": "Mon Apr 10 17:14:58 2017 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon Apr 10 17:14:58 2017 -0700" }, "message": "Update lint-worthy version list (#20)\n\n" }, { "commit": "3b8db5e93c4c02efbc313e17b2e796b0914a01fb", "tree": "0cf095a2505f9931c6e8c615cdbfb40c8369e9ff", "parents": [ "74ca5ec650841aee9f289dce76e928313a37cbc6" ], "author": { "name": "Anton Tyurin", "email": "noxiouz@yandex.ru", "time": "Thu Dec 15 20:56:52 2016 +0100" }, "committer": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Thu Dec 15 11:56:52 2016 -0800" }, "message": "Implement Add/Sub for Float64 (#17)\n\nSigned-off-by: Anton Tiurin \u003cnoxiouz@yandex.ru\u003e" }, { "commit": "74ca5ec650841aee9f289dce76e928313a37cbc6", "tree": "f3fec4336e87886a4e5dc268f7852bf8eacce53a", "parents": [ "14746df0c213f3a48f7f64637c6981f9285005f3" ], "author": { "name": "Bill Fumerola", "email": "billf@uber.com", "time": "Tue Dec 13 10:45:32 2016 -0800" }, "committer": { "name": "bill fumerola", "email": "billf@mu.org", "time": "Wed Dec 14 13:12:48 2016 -0800" }, "message": "Add stress test for Float64\n" }, { "commit": "14746df0c213f3a48f7f64637c6981f9285005f3", "tree": "05992882a44ba86d001340216ecc647635cbc1ec", "parents": [ "9e99152552a6ce13fa3b2ce4a9c4fb117cca4506", "9058d5b913b0411a06e55509fbf0dcb1e3dd62dc" ], "author": { "name": "bill fumerola", "email": "billf@mu.org", "time": "Tue Dec 13 11:16:23 2016 -0800" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Tue Dec 13 11:16:23 2016 -0800" }, "message": "Merge pull request #16 from uber-go/refactor_stress\n\nRefactor stress tests and wait for the results" }, { "commit": "9058d5b913b0411a06e55509fbf0dcb1e3dd62dc", "tree": "05992882a44ba86d001340216ecc647635cbc1ec", "parents": [ "9e99152552a6ce13fa3b2ce4a9c4fb117cca4506" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Tue Dec 13 11:09:27 2016 -0800" }, "committer": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Tue Dec 13 11:10:34 2016 -0800" }, "message": "Refactor stress tests and wait for the results\n\nPreviously, we were not waiting for the spawned goroutines to end.\nRefactor the logic to use a common runStress that runs some function\nfrom multiple goroutines.\n" }, { "commit": "9e99152552a6ce13fa3b2ce4a9c4fb117cca4506", "tree": "6d82d8179a5e10e65f44be52dfe631f694fa1717", "parents": [ "0ab99594f786f555b22583d379c0c051e9350ccc" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Thu Oct 27 09:36:08 2016 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Thu Oct 27 09:36:08 2016 -0700" }, "message": "Fix Go tip errors with self-import (#14)\n\n" }, { "commit": "0ab99594f786f555b22583d379c0c051e9350ccc", "tree": "725eb404d1c3d91a53059fab52874163987d872d", "parents": [ "6c2817a9ef3b9315f7d237a652f2ab0dac2aee96" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Thu Oct 27 00:33:41 2016 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Thu Oct 27 00:33:41 2016 -0700" }, "message": "Use go.uber.org import path (#13)\n\n" }, { "commit": "6c2817a9ef3b9315f7d237a652f2ab0dac2aee96", "tree": "ea62c1a9d5720b0e6a09a0873543fd8ce90ef9b0", "parents": [ "0c9e689d64f004564b79d9a663634756df322902" ], "author": { "name": "Kunal Thakar", "email": "kunalt@gmail.com", "time": "Wed Oct 19 17:45:26 2016 -0700" }, "committer": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Wed Oct 19 17:45:26 2016 -0700" }, "message": "Atomic wrapper around float64 (#12)\n\n" }, { "commit": "0c9e689d64f004564b79d9a663634756df322902", "tree": "d373c6bc7112d7b4538e306fd671b125a67998ce", "parents": [ "16e575a521a0ca0828d222accaa6b59c0074a85f", "e59e67d981b9f1300e10a72bd0de1b3f150ff802" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Mon Jul 18 13:38:59 2016 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon Jul 18 13:38:59 2016 -0700" }, "message": "Merge pull request #10 from uber-go/unexport\n\nUse unexported field name instead of embedding" }, { "commit": "e59e67d981b9f1300e10a72bd0de1b3f150ff802", "tree": "d373c6bc7112d7b4538e306fd671b125a67998ce", "parents": [ "16e575a521a0ca0828d222accaa6b59c0074a85f" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Mon Jul 18 12:50:08 2016 -0700" }, "committer": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Mon Jul 18 12:50:08 2016 -0700" }, "message": "Use unexported field name instead of embedding\n\nUnexported field name means the methods on different types look\nmore similar (e.g., \u0026i.v instead of \u0026i.int32 or \u0026i.uint32).\n\nFor String, this is important since we don\u0027t want users to be\nable to access the underlying atomic.Value\n" }, { "commit": "16e575a521a0ca0828d222accaa6b59c0074a85f", "tree": "c483abfc2580db320b8826889b6103b5ce576639", "parents": [ "3725100ae41f2a0dfbb85d3694143aa2c090657e", "d938bba9065a590d68c7ae0767f31d1696dd35e7" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Mon Jul 18 11:25:57 2016 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Mon Jul 18 11:25:57 2016 -0700" }, "message": "Merge pull request #9 from uber-go/string_bug\n\nFix NewString disregarding the passed in string" }, { "commit": "d938bba9065a590d68c7ae0767f31d1696dd35e7", "tree": "c483abfc2580db320b8826889b6103b5ce576639", "parents": [ "3725100ae41f2a0dfbb85d3694143aa2c090657e" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Mon Jul 18 11:07:34 2016 -0700" }, "committer": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Mon Jul 18 11:07:34 2016 -0700" }, "message": "Fix NewString disregarding the passed in string\n" }, { "commit": "3725100ae41f2a0dfbb85d3694143aa2c090657e", "tree": "8c69cce66a2809dd1235562dde0b14939fd6d920", "parents": [ "e682c1008ac17bf26d2e4b5ad6cdd08520ed0b22", "fecc23564a2903196db4d58dd43a4b21711e74fc" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Sun Jul 17 23:05:33 2016 -0700" }, "committer": { "name": "GitHub", "email": "noreply@github.com", "time": "Sun Jul 17 23:05:33 2016 -0700" }, "message": "Merge pull request #8 from uber-go/string\n\nAdd String as a type-safe wrapper for atomic.Value" }, { "commit": "fecc23564a2903196db4d58dd43a4b21711e74fc", "tree": "8c69cce66a2809dd1235562dde0b14939fd6d920", "parents": [ "e682c1008ac17bf26d2e4b5ad6cdd08520ed0b22" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Sun Jul 17 12:43:23 2016 -0700" }, "committer": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Sun Jul 17 12:43:23 2016 -0700" }, "message": "Add String as a type-safe wrapper for atomic.Value\n" }, { "commit": "e682c1008ac17bf26d2e4b5ad6cdd08520ed0b22", "tree": "84632257caaa26cbac80df5fb2218cd2edd79e45", "parents": [ "b4ee65f3b3988930a77dacc319e5ff9a6f0e91c9" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Tue May 31 17:23:56 2016 -0700" }, "committer": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Tue May 31 17:23:56 2016 -0700" }, "message": "Fix glide.yaml and run glide up\n" }, { "commit": "b4ee65f3b3988930a77dacc319e5ff9a6f0e91c9", "tree": "249aa3f5f81408fc03017ddf40fa1b91373d7f41", "parents": [ "7afff28c37d544582bcf088ab443a62f590dfe6b" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Tue May 31 17:14:21 2016 -0700" }, "committer": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Tue May 31 17:14:21 2016 -0700" }, "message": "Use glide nv instead of novendor\n" }, { "commit": "7afff28c37d544582bcf088ab443a62f590dfe6b", "tree": "913594e805943fed983a144bc28b8aa80ed95938", "parents": [ "e1b75a466a74d5373afd99fe1655b9426a8231b2" ], "author": { "name": "Akshay Shah", "email": "akshay@akshayshah.org", "time": "Mon May 30 11:10:24 2016 -0700" }, "committer": { "name": "Akshay Shah", "email": "akshay@akshayshah.org", "time": "Mon May 30 11:10:24 2016 -0700" }, "message": "Add an atomic Boolean type (#4)\n\n* Add an atomic Boolean type\r\n\r\nFixes #2.\r\n\r\n* Feedback from CR\r\n\r\n- Rename Swap to Toggle\r\n- Add a more Swap-like Swap\r\n\r\n* Add boolToInt helper\r\n" }, { "commit": "e1b75a466a74d5373afd99fe1655b9426a8231b2", "tree": "b07e07907fdc1ac20240ea171fc78741be982ca7", "parents": [ "68f9c8c0d08307beb33611a9f58140620f644f1c" ], "author": { "name": "Akshay Shah", "email": "akshay@akshayshah.org", "time": "Sun May 29 20:54:38 2016 -0700" }, "committer": { "name": "Akshay Shah", "email": "akshay@akshayshah.org", "time": "Sun May 29 20:54:38 2016 -0700" }, "message": "Lint on Travis (#7)" }, { "commit": "68f9c8c0d08307beb33611a9f58140620f644f1c", "tree": "254777068b4a00621137df481bbee320188e791c", "parents": [ "2051a605b9eb9b6682a5b58f4f92ec8a4bfc3d61" ], "author": { "name": "Akshay Shah", "email": "akshay@akshayshah.org", "time": "Sun May 29 20:50:32 2016 -0700" }, "committer": { "name": "Akshay Shah", "email": "akshay@akshayshah.org", "time": "Sun May 29 20:50:32 2016 -0700" }, "message": "Add docs and linters before release (#6)\n\n* Add a lint target to Makefile\r\n\r\n* Add a README\r\n\r\n* Add a simple example\r\n\r\n* Add a PR template\r\n\r\n* Show off usable zero values\r\n" }, { "commit": "2051a605b9eb9b6682a5b58f4f92ec8a4bfc3d61", "tree": "4180202964cd33eb5cee469b19a75c11e6c028f6", "parents": [ "be53a1df0f99d625ab0a5926fdff0b0ebbeceb71" ], "author": { "name": "Akshay Shah", "email": "akshay@akshayshah.org", "time": "Sat May 28 22:54:33 2016 -0700" }, "committer": { "name": "Akshay Shah", "email": "akshay@akshayshah.org", "time": "Sat May 28 22:54:33 2016 -0700" }, "message": "Add a Sub method to atomics (#5)\n\n* Add a Sub method to atomics\r\n\r\nFixes #3.\r\n\r\n* Invert integer sign without multiplying\r\n" }, { "commit": "be53a1df0f99d625ab0a5926fdff0b0ebbeceb71", "tree": "8e5b8c9c51ed0046f0587ef1a104bd69933ec326", "parents": [ "d53d39b5b9a3ec628dc90a2daaef6475032b715d", "928a9d776b88c38e7f9972817ffcbd147b4d2753" ], "author": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Wed May 25 11:05:37 2016 -0700" }, "committer": { "name": "Prashant Varanasi", "email": "github@prashantv.com", "time": "Wed May 25 11:05:37 2016 -0700" }, "message": "Merge pull request #1 from uber-go/import\n\nImport atomic package" }, { "commit": "928a9d776b88c38e7f9972817ffcbd147b4d2753", "tree": "8e5b8c9c51ed0046f0587ef1a104bd69933ec326", "parents": [ "d53d39b5b9a3ec628dc90a2daaef6475032b715d" ], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Wed May 25 10:51:13 2016 -0700" }, "committer": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Wed May 25 11:04:20 2016 -0700" }, "message": "Import atomic package\n\nThe code is the same as github.com/uber/tchannel-go/atomic\n" }, { "commit": "d53d39b5b9a3ec628dc90a2daaef6475032b715d", "tree": "03ce0adaba067682efb8f7160b5f48bad0455dc8", "parents": [], "author": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Mon May 23 17:16:56 2016 -0700" }, "committer": { "name": "Prashant Varanasi", "email": "prashant@uber.com", "time": "Mon May 23 17:16:56 2016 -0700" }, "message": "Add Uber license\n" } ] }