{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":116150035,"defaultBranch":"master","name":"riegeli","ownerLogin":"google","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-01-03T15:05:56.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1342004?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1515580644.0","currentOid":""},"activityList":{"items":[{"before":"f319a291a4a0b17d9c672213d72821ab5cd38c7c","after":"57f7fb093cb2a436b8edab61236800c27cfc361a","ref":"refs/heads/master","pushedAt":"2024-06-17T10:51:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Rename `AnyDependency` to `Any`, `AnyDependencyRef` to `AnyRef`, and\n`AnyDependencyInitializer` to `AnyInitializer`.\n\nIn contrast to `Dependency`, `AnyDependency` is often\nused in function signatures. It deserves a more ergonomic name.\n\nPiperOrigin-RevId: 643948884","shortMessageHtmlLink":"Rename AnyDependency to Any, AnyDependencyRef to AnyRef, and"}},{"before":"c2a7c7cffeaa81fc232bd612fa8d4c0421e75ace","after":"f319a291a4a0b17d9c672213d72821ab5cd38c7c","ref":"refs/heads/master","pushedAt":"2024-06-17T09:49:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Clarify that `{{,Intrusive}SharedPtr,{,Sized}SharedBuffer}::IsUnique()` return\n`false` if there is no object.\n\nRemove handling of `buffer_ == nullptr` in `SharedBuffer::mutable_data()`.\nThis is excluded by the precondition.\n\nCosmetics in `SharedBuffer` constructor: use initialization instead of\n`Reset()`.\n\nPiperOrigin-RevId: 643929600","shortMessageHtmlLink":"Clarify that `{{,Intrusive}SharedPtr,{,Sized}SharedBuffer}::IsUnique(…"}},{"before":"5b4c3f0f281f3782c6e5d306b09f21ea4800fe8b","after":"c2a7c7cffeaa81fc232bd612fa8d4c0421e75ace","ref":"refs/heads/master","pushedAt":"2024-06-14T14:21:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Cosmetic changes in `SharedPtr` implementation.\n\nPiperOrigin-RevId: 643336889","shortMessageHtmlLink":"Cosmetic changes in SharedPtr implementation."}},{"before":"bc7dc6f3c9670817157fd76f885d831d4f6d2305","after":"5b4c3f0f281f3782c6e5d306b09f21ea4800fe8b","ref":"refs/heads/master","pushedAt":"2024-06-14T10:30:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Remove an unused parameter of `ChainReader::Mover` constructor.\n\nMark a conditionally unused parameter of `CordReader::Mover` with\n`ABSL_ATTRIBUTE_UNUSED`.\n\n`MovingDependency` accepts constructor with or without the parameter.\n\nPiperOrigin-RevId: 643292528","shortMessageHtmlLink":"Remove an unused parameter of ChainReader::Mover constructor."}},{"before":"f97a8a64d1580e8fb590d6b0d657301ce9b3c195","after":"bc7dc6f3c9670817157fd76f885d831d4f6d2305","ref":"refs/heads/master","pushedAt":"2024-06-14T10:29:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Add aliases of `AnyDependency` instantiated with common non-pointer handle\ntypes, with suitable default inline space:\n\n* `AnyFd`\n* `AnyCFile`\n* `AnyDigester`\n\nPiperOrigin-RevId: 643290491","shortMessageHtmlLink":"Add aliases of AnyDependency instantiated with common non-pointer h…"}},{"before":"7031c0b5a6c94a588a603663c3e47036026a3019","after":"f97a8a64d1580e8fb590d6b0d657301ce9b3c195","ref":"refs/heads/master","pushedAt":"2024-06-12T19:26:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Make `RegisterSubobjectsIs{Good,Trivial}` members of `MemoryEstimator`.\nThis allows to use them from a templated `RiegeliRegisterSubobjects()` which\ndoes not bring a dependency on `riegeli::MemoryEstimator`.\n\nChange `MemoryEstimator::RegisterSubobjectsOfElements()` to an overload of\n`MemoryEstimator::RegiterSubobjects()` with a pair of iterators. This will be\nuseful for implementing `RiegeliRegisterSubobjects()` for containers.\n\nPiperOrigin-RevId: 642614304","shortMessageHtmlLink":"Make RegisterSubobjectsIs{Good,Trivial} members of MemoryEstimator."}},{"before":"92b296381d250e681924d37d6acc093a05c19d17","after":"7031c0b5a6c94a588a603663c3e47036026a3019","ref":"refs/heads/master","pushedAt":"2024-06-12T07:58:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Generalize `SharedPtr::Reset()` optimization of assigning in place if the\nobject is unique, from the argument of just `Initializer` to other cases\nwhen the argument can be used to construct exactly `T`, e.g. `T` itself or\n`MakerTypeFor`.\n\nThese cases fell into the overload for subtypes, which was a better match than\n`Initializer` because it does not need converting an argument.\n\nA possible fix is to ensure that subtypes are proper subtypes. This avoids any\npotential for ambiguity: exact matches of the type are handled by converting to\n`Initializer`.\n\nAlso, introduce a private type trait to make it obvious that `ResetImpl()`\noverloads are mutually exclusive.\n\nPiperOrigin-RevId: 642529998","shortMessageHtmlLink":"Generalize SharedPtr<T>::Reset() optimization of assigning in place…"}},{"before":"d2b5457dbe8dc5150d5ff5685e40e979df89cfa9","after":"92b296381d250e681924d37d6acc093a05c19d17","ref":"refs/heads/master","pushedAt":"2024-06-12T00:02:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Improve detection of \"/proc\", \"/sys\", \"/dev/cgroup\" etc. files which claim to\nhave zero size but have non-empty contents when read.\n\nInstead of trying to recognize them by filenames, which is brittle, if the\nreported size is 0 and the current position is 0, read something to the buffer.\nIf that succeeds, assume that this is one of these unusual files, and disable\nrandom access together with caching the size.\n\nIf the `growing_source` option is `true`, check the size again, because another\nexplanation is that the file could have grown, in which case random access is\nfine (and the size is not cached in this case anyway).\n\nThis can now be applied also to `IStreamReader` which does not know about\nfilenames.\n\nThis should be reasonably cheap: for regular files it involves extra work only\nfor empty files, and trying to read an empty file does not need to bring file\ncontents.\n\nDisable checking of the filename in `Writer` classes. It is not that important\nbecause the size is not cached in this case, and these files are rarely written\nto anyway.\n\nSome \"/sys\" files claim to have the size of 4096. They are no longer excluded\nfrom random access and caching the size, which is fine in practice as long as\nreal contents are not larger than the claimed size.\n\nCosmetics: when checking the size requires seeking to the end, avoid the syscall\nof seeking back if the target position already matches the end position.\nPiperOrigin-RevId: 642438458","shortMessageHtmlLink":"Improve detection of \"/proc\", \"/sys\", \"/dev/cgroup\" etc. files which …"}},{"before":"bb038c1ff6bbe1aaebf747c55b1e5ada34aefad5","after":"d2b5457dbe8dc5150d5ff5685e40e979df89cfa9","ref":"refs/heads/master","pushedAt":"2024-06-11T09:27:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Cosmetics:\n\n* When verifying the postcondition that reading/writing functions did not\n read/write more than requested, check exactly against what was requested,\n rather than against a potentially greater value.\n\n* Rely on a condition which was asserted before.\n\nPiperOrigin-RevId: 642192963","shortMessageHtmlLink":"Cosmetics:"}},{"before":"46b62bfb67ac58faa8777c7f28a2eeb646c919aa","after":"bb038c1ff6bbe1aaebf747c55b1e5ada34aefad5","ref":"refs/heads/master","pushedAt":"2024-06-10T14:40:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"When limiting the length to read/write to the range of a type in a third-party\nAPI, round the limit to a power of 2, for better alignment of operations.\n\nPiperOrigin-RevId: 641897809","shortMessageHtmlLink":"When limiting the length to read/write to the range of a type in a th…"}},{"before":"e530e7fa655c02016ce631c6d7a45ba54652cdc9","after":"46b62bfb67ac58faa8777c7f28a2eeb646c919aa","ref":"refs/heads/master","pushedAt":"2024-06-10T08:19:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Optimize `Chain::Flatten()` in case there is more than one block but the first\nand/or the last block is empty. There might be no need to rewrite the contents\nin this case.\n\nMore than one adjacent empty blocks are impossible due to invariants.\n\nPiperOrigin-RevId: 641817983","shortMessageHtmlLink":"Optimize Chain::Flatten() in case there is more than one block but …"}},{"before":"f8ea4cd19de6eb48067035d20e8c5f8401bb65f5","after":"e530e7fa655c02016ce631c6d7a45ba54652cdc9","ref":"refs/heads/master","pushedAt":"2024-06-10T08:11:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Update the comment about wasteful blocks to match the current definition.\n\nPiperOrigin-RevId: 641816342","shortMessageHtmlLink":"Update the comment about wasteful blocks to match the current definit…"}},{"before":"973b6f07de44d53f8b4f664909a95b1e56685e61","after":"f8ea4cd19de6eb48067035d20e8c5f8401bb65f5","ref":"refs/heads/master","pushedAt":"2024-06-10T08:11:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Fix a typo in a comment.\n\nPiperOrigin-RevId: 641816275","shortMessageHtmlLink":"Fix a typo in a comment."}},{"before":"70cd50c8aeaa463b1614139de5ce95a73005215a","after":"973b6f07de44d53f8b4f664909a95b1e56685e61","ref":"refs/heads/master","pushedAt":"2024-06-06T11:13:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Utilize features of newer versions of Abseil and Protobuf:\n\n* Use `absl::Cord::GetCustomAppendBuffer()` unconditionally.\n\n* Override `ZeroCopyInputStream::ReadCord()` and\n `ZeroCopyOutputStream::WriteCord()`.\n\nAlso, use `absl::CordBuffer` in `SerializeToCord()`. It was already available\nbefore and was not utilized by mistake.\n\nPiperOrigin-RevId: 640848110","shortMessageHtmlLink":"Utilize features of newer versions of Abseil and Protobuf:"}},{"before":"914e276f53b9c3b18528cbf8908f1ff92310195e","after":"70cd50c8aeaa463b1614139de5ce95a73005215a","ref":"refs/heads/master","pushedAt":"2024-06-06T09:24:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Fix `Initializer::ConstReference()`, `MakerType::{,Const}Reference()`,\nand indirectly `MakerTypeFor::{,Const}Reference()` in compilers which\ndo not implement http://wg21.link/cwg2352, e.g. clang < 10. gcc < 10, when the\nreference can bind to the argument without creating a temporary, but when this\ninvolves qualifier conversions.\n\nFor example `riegeli::Maker(ptr)::ConstReference()` given `T* ptr`.\nThis involves converting `T*&` to `const T* const&`. The code used to assume\nthat since `T**` is convertible to `const T* const*`, the corresponding\nconversion of references is done without creating a temporary, but only CWG2352\nactually promised that.\n\nImplementing reference covnersion without relying on CWG2352 requires converting\nin pointer space and then dereferencing.\n\nCosmetics:\n\n* Remove a cast in `Initializer::ConstReference()` when `T` is itself\n a reference. Creating a named local variable is enough to convert the rvalue\n reference to lvalue reference when needed.\n\n* Remove redundant namespace qualifications of `CanBindTo`.\n\nPiperOrigin-RevId: 640824224","shortMessageHtmlLink":"Fix Initializer<T>::ConstReference(), `MakerType::{,Const}Reference…"}},{"before":"43effad1b5a33a075b69b4d791b2c909fd9b9aa2","after":"914e276f53b9c3b18528cbf8908f1ff92310195e","ref":"refs/heads/master","pushedAt":"2024-06-05T17:40:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Remove `riegeli/records:records_metadata_py_pb2`.\n\n`python/riegeli/records:records_metadata_py_pb2` is used in Python instead.\n\nPiperOrigin-RevId: 640573053","shortMessageHtmlLink":"Remove riegeli/records:records_metadata_py_pb2."}},{"before":"d3b2c5ddf0b966199a5fcc24f4437fbc1afe1b6e","after":"43effad1b5a33a075b69b4d791b2c909fd9b9aa2","ref":"refs/heads/master","pushedAt":"2024-06-05T13:47:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Implement moving `{Linear,Chunked}SortedStringSet::Builder` explicitly instead\nof defaulting.\n\nThis makes the moved-from state satisfy the invariants, and this fixes gcc\nwarnings about `noexcept` inferred from the definition not matching the declared\none.\n\nPiperOrigin-RevId: 640507172","shortMessageHtmlLink":"Implement moving {Linear,Chunked}SortedStringSet::Builder explicitl…"}},{"before":"09b8c79977691aa95e5fb9108eaa44892725c8e0","after":"d3b2c5ddf0b966199a5fcc24f4437fbc1afe1b6e","ref":"refs/heads/master","pushedAt":"2024-06-05T11:57:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Migrate to MODULE.bazel (Bzlmod)\n\nEnable Bzlmod for managing dependencies: https://bazel.build/external/migration.\nThe WORKSPACE model is no longer supported for Riegeli itself, although\ndepending on Riegeli libraries from WORKSPACE should continue to work for some\ntime.\n\nTensorFlow does not support Bzlmod yet, and thus Riegeli/TensorFlow bindings are\ncurrently broken.\n\nUpdate expected versions of Protobuf and Abseil. Updating the Protobuf\ndependency is long overdue, with the code already requiring v22+, and waiting\nfor improvements from newer Protobuf versions like Cord support. Also, current\nversions of TensorFlow require a newer Protobuf.\n\nGet CRC32 implementation from Abseil, given that its required version already\nprovides it, instead of importing a separate library.\n\nGet Python rules from @rules_python instead of using bazel builtins, including\ngetting py_proto_library from there instead of from @com_google_protobuf. This\nfixes building records_metadata_py_pb2, which became incompatible with newer\nProtobuf versions because it uses descriptor.proto.\n\nCloses https://github.com/google/riegeli/pull/30\n\nPiperOrigin-RevId: 640484551","shortMessageHtmlLink":"Migrate to MODULE.bazel (Bzlmod)"}},{"before":"4072cc5687836db157a38db8b39af2299b090d30","after":"09b8c79977691aa95e5fb9108eaa44892725c8e0","ref":"refs/heads/master","pushedAt":"2024-06-04T15:08:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Fix compatibility with protobuf v26+: migrate from deprecated `AddError()` to\n`RecordError()` also in text parser’s `ErrorCollector`.\n\nPiperOrigin-RevId: 640152285","shortMessageHtmlLink":"Fix compatibility with protobuf v26+: migrate from deprecated `AddErr…"}},{"before":"b686f6e18ae1431946581bbdfb7c136fc18f5b92","after":"4072cc5687836db157a38db8b39af2299b090d30","ref":"refs/heads/master","pushedAt":"2024-06-04T08:44:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Fix a bug in `Chain::Reset()` overloads: before calling `Initialize()` (which\nmight call `Initialize(string_view)` which assumes a pristine `Chain` and might\ncopy short data directly to the `Chain`), ensure that the block pointer array is\nnot being used by calling `EnsureHasHere()`.\n\nThe symptom of the bug is a very likely crash as short data are reinterpreted as\na pointer to the array of block pointers.\n\nPiperOrigin-RevId: 640067501","shortMessageHtmlLink":"Fix a bug in Chain::Reset() overloads: before calling `Initialize()…"}},{"before":"15923d86939bf95cd0530bfa57cc4bbfcb61f444","after":"b686f6e18ae1431946581bbdfb7c136fc18f5b92","ref":"refs/heads/master","pushedAt":"2024-06-03T15:26:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Do not open `namespace std`. It is not necessary to open a namespace for\nspecializing a class there.\n\nThe current namespace must be outside it though.\n\nPiperOrigin-RevId: 639784754","shortMessageHtmlLink":"Do not open namespace std. It is not necessary to open a namespace for"}},{"before":"423292cc2b1aa8615cf1942cf36abb6734e0693a","after":"15923d86939bf95cd0530bfa57cc4bbfcb61f444","ref":"refs/heads/master","pushedAt":"2024-06-03T12:14:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Improve compatibility with BCR\n\nPiperOrigin-RevId: 639741905","shortMessageHtmlLink":"Improve compatibility with BCR"}},{"before":"236a1d8b808c616e3354e88a00143c418ae27731","after":"423292cc2b1aa8615cf1942cf36abb6734e0693a","ref":"refs/heads/master","pushedAt":"2024-06-03T11:25:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Cosmetics:\n\n* Consistently use `that` instead of `other` as the name of the rhs of\n copy/move constructor/assignment.\n\n* Simplify names of private functions to which friend functions redirect\n by removing `Impl` suffixes and `Absl` prefixes.\n\n* Call `riegeli::Compare()` with namespace qualification. This is needed for\n the above, and in general this prevents ADL surprises.\n\n In fact all calls to namespace-level functions with parameters which might\n involve user-defined types should be qualified, unless ADL is intentional.\n This is not yet consistently applied.\n\n* Do not inline the default `RiegeliDumpStructure()` (espressed as for\n `const void*` instead of templated `const T*`) and\n `RiegeliDumpStructure(const std::string*)`.\n\n* Unify comments at `RiegeliRegisterSubobjects()` and `RiegeliDumpStructure()`.\n\n* Consistently omit braces in loops which fit in one line, not only in\n conditionals.\n\nPiperOrigin-RevId: 639730768","shortMessageHtmlLink":"Cosmetics:"}},{"before":"b38e715cddedb24ef9712250ebe4e98436501e83","after":"236a1d8b808c616e3354e88a00143c418ae27731","ref":"refs/heads/master","pushedAt":"2024-06-03T09:47:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"- Also set C++17 in `--host_cxxopt`\n- Add `.gitignore` to avoid accidentally committing Bazel output files\n\nPiperOrigin-RevId: 639708171","shortMessageHtmlLink":"- Also set C++17 in --host_cxxopt"}},{"before":"41212f86cebca7a217c21c6cf9ab914477e9c6d1","after":"b38e715cddedb24ef9712250ebe4e98436501e83","ref":"refs/heads/master","pushedAt":"2024-06-03T09:28:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Use more `IntrusiveSharedPtr` instead of `Chain::RawBlock*`.\n\nLet `{Set,Pop}{Front,Back}()` return the old block pointer as\n`IntrusiveSharedPtr`.\n\nLet `Chain::RawBlock::Copy()` never drop ownership of the caller. This is now\nhandled when the caller gets removed from the block pointer array.\n\nChange `Chain::{Append,Prepend}RawBlock()` to unconditionally take ownership.\nThis makes the API simpler. It is more common when they use the block anyway,\nso only rarely this causes an extra `Ref()` and `Unref()` pair, and if the block\nturns out to ont be rewritten, this is expensive anyway.\n\nPiperOrigin-RevId: 639694350","shortMessageHtmlLink":"Use more IntrusiveSharedPtr<Chain::RawBlock> instead of `Chain::Raw…"}},{"before":"2f8cfbba6df017fd0d355aa4fdb84b525173b6d1","after":"41212f86cebca7a217c21c6cf9ab914477e9c6d1","ref":"refs/heads/master","pushedAt":"2024-06-03T06:42:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Optimize `Chain` converting constructors, `Reset()`, and converting operators\nby specializing code which would have resulted from appending in common cases\n(empty destination, short or flat source etc.).\n\nOptimize `Reader::Read(Chain&)` by utilizing the new fact that\n`Reset(string_view)` can be faster than `Clear()` with `Append(string_view)`.\n\nRemove private `Chain::{Append,Prepend}RawBlock()` with a `ref_block` functor.\nThey were used for `ChainBlock` which no longer exists. Instead, add `ownership`\ntemplate parameter to them.\n\nOptimize `Chain` methods which append/prepend a single external block by using\nlow level `Chain::ExternalMethodsFor::NewBlock()` with\n`Chain::{Append,Prepend}RawBlock()` instead of public `Chain::FromExternal()`\nwith `Chain::{Append,Prepend}()`.\n\nRemove redundant `RIEGELI_CHECK()` for size overflow where the code below checks\nthe size anyway.\n\nWhen converting `absl::Cord` to `Chain`, increase `InlinedVector` inline size\nfrom 4 to 16. We should afford 256 bytes of the stack.\n\nBe less crazy about inlining.\n\nCosmetics:\n* Update `size_` before block pointers.\n* Remove redundant template parameters from `ExternalMethodsFor::NewBlock()`.\n* Remove redundant `Chain::` qualifications.\nPiperOrigin-RevId: 639666855","shortMessageHtmlLink":"Optimize Chain converting constructors, Reset(), and converting o…"}},{"before":"f93d9f2ae5ffc1c704abe83ec96b277a53e5a71e","after":"2f8cfbba6df017fd0d355aa4fdb84b525173b6d1","ref":"refs/heads/master","pushedAt":"2024-05-31T16:25:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Migrate from AddError() to RecordError()\n\nIn Protobuf v22 RecordError() has been introduced and AddError() deprecated.\nIn Protobuf v26 AddError() has been removed.\n\nPiperOrigin-RevId: 639057502","shortMessageHtmlLink":"Migrate from AddError() to RecordError()"}},{"before":"b92772a938146c58b39ae8bda3ca2f978ab01631","after":"f93d9f2ae5ffc1c704abe83ec96b277a53e5a71e","ref":"refs/heads/master","pushedAt":"2024-05-30T12:55:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Rename internal `ReferenceStorage` to public `TemporaryStorage`.\nIt will have more usages.\n\nTweak its API:\n\n* Make a specialization for reference types which works like others.\n* Let `emplace()` return the reference to the constructed object, so that\n often it does not need to have `operator*` used immediately afterwards.\n* Add SFINAE constraint to `emplace()`.\n* Let `operator*` have four overloads like in `std::optional`.\n\nPiperOrigin-RevId: 638621376","shortMessageHtmlLink":"Rename internal ReferenceStorage to public TemporaryStorage."}},{"before":"94fa65ce804a7f0c8dddbc407486dfce81a162c9","after":"b92772a938146c58b39ae8bda3ca2f978ab01631","ref":"refs/heads/master","pushedAt":"2024-05-27T06:30:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Add `{MakerType,MakerTypeFor,Initializer}::ConstReference()`.\n\nIt can avoid moving the object in more cases than `Reference()`, namely when the\nconstructor argument was a const lvalue reference to a compatible type.\n\nFix a typo in the variant for `!__cpp_aggregate_bases`.\n\nPolish comments.\n\nPiperOrigin-RevId: 637539030","shortMessageHtmlLink":"Add {MakerType,MakerTypeFor,Initializer}::ConstReference()."}},{"before":"63cbfe7894e86b6aaf5642b38f16c02b31e615b8","after":"94fa65ce804a7f0c8dddbc407486dfce81a162c9","ref":"refs/heads/master","pushedAt":"2024-05-24T13:19:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"QrczakMK","name":"Marcin Kowalczyk","path":"/QrczakMK","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8471716?s=80&v=4"},"commit":{"message":"Pass `Chain::Options` by value instead of by reference. It is cheap.\n\nPiperOrigin-RevId: 636895381","shortMessageHtmlLink":"Pass Chain::Options by value instead of by reference. It is cheap."}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEZ0OxZAA","startCursor":null,"endCursor":null}},"title":"Activity · google/riegeli"}