1. 12 Jan, 2024 1 commit
  2. 11 Jan, 2024 3 commits
  3. 10 Jan, 2024 3 commits
  4. 09 Jan, 2024 1 commit
  5. 05 Jan, 2024 1 commit
  6. 04 Jan, 2024 2 commits
    • Optimize integer-to-string conversions · d5a2cec0
      The updated code is designed to:
      - Be branch-predictor-friendly
      - Be cache-friendly
      - Minimize the lengths of critical paths
      - Minimize slow operations (particularly multiplications)
      - Minimize binary/codegen bloat
      
      The most notable performance trick here is perhaps the precomputation & caching of the number of digits, so that we can reuse/exploit it when writing the output.
      
      This precomputation of the exact length enables 2 further performance benefits:
      - It makes `StrCat` and `StrAppend` zero-copy when only integers are passed, by avoiding intermediate `AlphaNum` entirely in those cases. If needed in the future, we can probably also make many other mixtures of non-integer types zero-copy as well.
      - It avoids over-reservation of the string buffer, allowing for more strings to fit inside SSO, which will likely have further performance benefits.
      
      There is also a side benefit of preventing `FastIntToBuffer` from writing beyond the end of the buffer, which has caused buffer overflows in the past.
      
      The new code continues to use & extend some of the existing core tricks (such as the division-by-100 trick), as those are already efficient.
      
      PiperOrigin-RevId: 595785531
      Change-Id: Id6920e7e038fec10b2c45f213de75dc7e2cbddd1
      Abseil Team committed
    • Correct nullability annotations on MakeNan · ccf0c773
      Neither GCC nor Clang's __builtin_nan(), nor glibc's nan(), accept null pointers.
      
      PiperOrigin-RevId: 595767225
      Change-Id: I4cddd1cafd0c9e83a823ec68386f10ce077c6b4c
      Abseil Team committed
  7. 03 Jan, 2024 2 commits
  8. 02 Jan, 2024 3 commits
  9. 28 Dec, 2023 2 commits
  10. 27 Dec, 2023 2 commits
  11. 26 Dec, 2023 2 commits
  12. 21 Dec, 2023 2 commits
  13. 20 Dec, 2023 6 commits
  14. 19 Dec, 2023 5 commits
  15. 18 Dec, 2023 4 commits
  16. 15 Dec, 2023 1 commit
    • Remove nullability from Span::{pointer,iterator} · 27478af3
      These are in some sense correct (begin()/end() can be null for empty spans), but
      don't capture the critical contract that begin() is only null when end() is.
      This leads to foreach loops over spans being considered unsafe.
      
      Long-term we may want to express such constraints somehow, but for now giving
      these pointers unknown nullability is the best we can do.
      
      PiperOrigin-RevId: 591191038
      Change-Id: I1f02e068a445c0ca5996a9212477b64393ef4161
      Sam McCall committed