commit d837a42788ba591d5d791c3b686f2738e7a93562
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:   Fri Mar 6 15:23:13 2026 -0500

    bump version to 2.18.1

M	CMakeLists.txt
M	MODULE.bazel
M	NEWS
M	configure.ac
M	src/gperftools/tcmalloc.h

commit 56d6c8d984ea76d8300ccd117aee4b5ae0992620
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Mar 6 15:15:28 2026 -0500

    ppc64le: unbreak compilation

M	src/base/vdso_support.h

commit 6ed73507dd3970a123e267a50b3ee73392e3b053
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Jan 23 21:03:42 2026 -0500

    bump version to 2.18

M	CMakeLists.txt
M	MODULE.bazel
M	NEWS
M	configure.ac
M	src/gperftools/tcmalloc.h

commit 7c57c34a481270dc191445799527f5e45d94b66d
Author: google-labs-jules[bot]
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date:	Sat Jan 24 16:38:14 2026 +0000

    ci: ensure optional features are built and tested

    Add explicit execution of `tcmalloc_minimal_debug_unittest`,
    `tcmalloc_debug_unittest`, and `heap-profiler_unittest` to the CI
    workflow. This ensures that the minimal debug allocator, full debug
    allocator, and heap profiler are built and functional, preventing
    silent failures where these features might be disabled during
    configuration.

    [alkondratenko@gmail.com: updated ci.yml comments]
    Signed-off-by: Aliaksei Kandratsenka <alkondratenko@gmail.com>

M	.github/workflows/ci.yml

commit fc5faa41b913f9f77194a894524b3f535d6f4721
Author: google-labs-jules[bot]
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date:	Sat Jan 24 16:02:11 2026 +0000

    ci: verify that libprofiler is built and tested

    Manually execute getpc_test in test and test-i386 jobs to ensure that
    libprofiler (and its prerequisites) are correctly detected and
    built. We want to ensure that on common x86_64/Linux libprofiler is
    actually configured and built. That getpc_test is built and works is a
    simple "proxy" of that.

    This prevents regressions where configure script silently disables
    libprofiler due to missing dependencies or headers (like getpc.h).

    [alkondratenko@gmail.com: squashed commits and reformatted commit
    message]
    Signed-off-by: Aliaksei Kandratsenka <alkondratenko@gmail.com>

M	.github/workflows/ci.yml

commit d4ee34cf5f381bf3e8f17b556a712e373c84cf9c
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Jan 23 22:09:01 2026 -0500

    Revert "move .pc file generation from Makefile.am to configure.ac"

    This reverts commit add49c608e0a8d11a1350a2c0c9636fa2f236e9f.

    While the change is still the right change in general, it doesn't yet
    have correct interaction of which .pc files are produced versus
    various --enable-XYZ flags.

M	Makefile.am
M	configure.ac

commit e1f821e56f80ad63d37407267e0022b9ca07a458
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Jan 23 21:41:13 2026 -0500

    unbreak getpc detection during ./configure

    Recent "enable headers to be compiled standalone" change has added

     #include "config.h"

    to getpc.h. But this actually broke ./configure step that verifies
    that host system can extract instruction pointer from ucontext. This
    effectively disabled libprofiler compilation on autotools.

M	gen_compile_commands.rb
M	src/getpc.h

commit 0ebbb21812a0e792128b769a535aa981d9ca63a3
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Jan 23 19:43:03 2026 -0500

    bazel: bump googletest dependency to 1.17.0.bcr.2

    This fixes building with bazel 9.0

M	MODULE.bazel

commit f7c2a932a936af594258d32d04f69a723ae04a39
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Jan 23 16:47:35 2026 -0500

    win32:bazel: added experimental :tcmalloc_minimal_nopatch library

    This is useful on windows. This builds tcmalloc that only
    overrides (but not patches) C++ allocation functions. There is
    matching tcmalloc_bench_nopatch binary that demonstrates signifcant
    performance win of this approach. The downside is there is no speedup
    for C API (malloc/free etc).

M	BUILD.bazel
M	src/libc_override_redefine.h

commit 97008830337378a26547caffa4132ba1bcd3f22f
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Jan 23 11:53:49 2026 -0500

    win32: enable fast TLS on clang mingw

    llvm-mingw packages have clang that targets libc++ without any legacy
    stuff (not even winpthread) and that llvm is finally able to produce
    windows' native TLS access code.

M	src/thread_cache_ptr.h

commit 57d00eabd6ffa712fb71978d2ffa5da1ac1a7892
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Thu Jan 22 00:02:07 2026 -0500

    stacktrace: don't try to build generic_fp backtracer on windows

M	src/stacktrace.cc

commit c6bc8a8482f6ed64756c9f697576b92bbdc3271f
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Tue Jan 20 20:08:23 2026 -0500

    mass-applied fixes to trivial clangd warnings

M	src/base/generic_writer.h
M	src/base/low_level_alloc.cc
M	src/base/low_level_alloc.h
M	src/base/memmap.h
M	src/base/proc_maps_iterator.cc
M	src/base/proc_maps_iterator.h
M	src/base/spinlock.h
M	src/base/stl_allocator.h
M	src/base/sysinfo.cc
M	src/base/sysinfo.h
M	src/base/vdso_support.h
M	src/central_freelist.h
M	src/debugallocation.cc
M	src/emergency_malloc.cc
M	src/emergency_malloc.h
M	src/heap-profile-table.cc
M	src/heap-profile-table.h
M	src/heap-profiler.cc
M	src/internal_logging.cc
M	src/malloc_backtrace.h
M	src/malloc_extension.cc
M	src/malloc_hook-inl.h
M	src/malloc_hook.cc
M	src/maybe_emergency_malloc.h
M	src/memfs_malloc.cc
M	src/packed-cache-inl.h
M	src/page_heap.cc
M	src/profile-handler.cc
M	src/profile-handler.h
M	src/profiledata.cc
M	src/profiler.cc
M	src/span.cc
M	src/span.h
M	src/static_vars.cc
M	src/static_vars.h
M	src/system-alloc.cc
M	src/tcmalloc.cc
M	src/tests/check_address_test.cc
M	src/tests/malloc_extension_c_test.cc
M	src/tests/malloc_extension_test.cc
M	src/tests/malloc_hook_test.cc
M	src/tests/memalign_unittest.cc
M	src/tests/page_heap_test.cc
M	src/tests/profiledata_unittest.cc
M	src/tests/profiler_unittest.cc
M	src/tests/realloc_unittest.cc
M	src/tests/safe_strerror_test.cc
M	src/tests/sampler_test.cc
M	src/tests/stack_trace_table_test.cc
M	src/tests/stacktrace_unittest.cc
M	src/tests/system-alloc_unittest.cc
M	src/tests/tcmalloc_large_unittest.cc
M	src/tests/thread_dealloc_unittest.cc
M	src/thread_cache.cc
M	src/thread_cache.h
M	src/thread_cache_ptr.cc
M	vendor/libbacktrace-integration/backtrace-alloc.cc

commit 09ffe35c87c3275f8b61369ec63d8932761617c7
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Tue Jan 20 19:17:41 2026 -0500

    add basic support for compile_commands.json generation

A	.clangd
M	.gitignore
A	gen_compile_commands.rb

commit b6bf46606369c7ca801ba5300ded9f6eeb787cfd
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Tue Jan 20 19:00:50 2026 -0500

    enable a number of headers to be "compiled" standalone

    I.e. to enable clangd-ing them. This is just adding some missing
    includes that have been previously included in the whatever .h/.cc
    files included those headers.

M	src/check_address-inl.h
M	src/getpc.h
M	src/heap-profile-stats.h
M	src/libbacktrace_api.h
M	src/maybe_emergency_malloc.h

commit a29528dda654180907eb4569b36e34ecde34b3bd
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Jan 21 21:28:22 2026 -0500

    bazel: apply buildifier

M	BUILD.bazel

commit ea4debc9605397d5e74dfc26300315b1079fdca0
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Jan 21 21:20:36 2026 -0500

    bazel build: make it work with mingw

M	BUILD.bazel
M	MODULE.bazel
M	generic-config/config.h
M	src/base/threading.h

commit b4b616248ac11385ca1bff29a5184d17e3383e3a
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Jan 21 20:30:02 2026 -0500

    bazel: bump bazel deps

M	MODULE.bazel

commit 21930b536def6ac00d065bc4e2b31cf39cbd637b
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Jan 21 17:34:17 2026 -0500

    bazel windows: unbreak MallocExtension visibility

M	BUILD.bazel
M	generic-config/config.h

commit b61b3c7f92c3f90edd3002a90d1950316299e54e
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Jan 21 15:57:35 2026 -0500

    bazel: apply buildifier

M	BUILD.bazel
M	MODULE.bazel

commit a07a64b9a926578102d8205145e81757b4c08853
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Jan 21 15:55:42 2026 -0500

    bazel: fix building on windows

M	BUILD.bazel

commit 868a588ad8afd5e6c9b795363a83fea282ecd491
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Tue Jan 20 12:12:35 2026 -0500

    unbreak interaction of realloc and free_sized

    Previous realloc implementation had somewhat "aggressive" logic of
    avoiding shrinking for reallocs up to half of the original size. It
    also had logic of "padding up" small realloc growths to at least 1.25x
    of original size.

    Neither of those behaviors is compatible with free_sized. I.e. when
    size hint is passed and used, we're expecting size hint to match
    actually used size class. If realloc kept the "old" chunk in up to 2x
    larger size class, clearly the hint won't match, which would cause
    hard to debug crashes.

    As part of the change we also clean up windows behavior of realloc-ing
    memory that was allocated by pre-patched runtime. Not that we expect
    this to actually happen, but since we have the code, lets give it a
    chance to work. We also add test coverage for this case. Kudos to
    Gemini for spotting the issue with my original attempt.

M	src/debugallocation.cc
M	src/tcmalloc.cc
M	src/testing_portal.h
M	src/tests/tcmalloc_unittest.cc

commit eaf625811e69cd2b5f9f96de1c0324c94f4f6a74
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Tue Jan 20 12:10:58 2026 -0500

    tcmalloc_unittest: parameterize ReallocTest

M	src/tests/tcmalloc_unittest.cc

commit c9643a3b563359680fc07cf32ec43c8e559ce3a4
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Tue Jan 20 12:12:32 2026 -0500

    tcmalloc_unittest: generalize and fix ReallocTest

    The test exercises the logic of "don't move allocation if change is
    small" but relies too much on implementation knowledge. We now
    explicitly exercise not moving only when old and new usable sizes are
    the same, which is the correct expectation in general.

M	src/tests/tcmalloc_unittest.cc

commit 386aa066e128262b957825b5a42aff57b4e9e88a
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Tue Jan 20 12:48:55 2026 -0500

    gitignore clangd cache directory

M	.gitignore

commit add49c608e0a8d11a1350a2c0c9636fa2f236e9f
Author: google-labs-jules[bot]
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date:	Tue Jan 20 05:00:35 2026 +0000

    move .pc file generation from Makefile.am to configure.ac

    This change moves the logic for generating pkg-config (.pc) files from
    Makefile.am to configure.ac using AC_CONFIG_COMMANDS. This ensures that
    these files are generated at configure time. The generation logic
    preserves
    the "echo" approach to maintain control over the output content and
    avoid standard template instantiation if it was desired to keep the
    script-like behavior.

    Also updated Makefile.am to remove the generation rules and moved
    the .pc files
    from CLEANFILES to DISTCLEANFILES so they are cleaned up by `make
    distclean`
    rather than `make clean`.

    [alkondratenko@gmail.com: made trivial comment update]
    Signed-off-by: Aliaksei Kandratsenka <alkondratenko@gmail.com>

M	Makefile.am
M	configure.ac

commit a4c7af0837c01add91ad4d2a94693113fd49f19b
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Dec 19 05:52:42 2025 -0500

    Unbreak compilation with 256k logical pages on 32-bit targets

    This fixes github issue #1626

M	src/packed-cache-inl.h

commit 46d65f8ddf358da110d270d65178ec04e49ba16a
Author: nia <nia@NetBSD.org>
Date:	Mon Nov 17 15:13:36 2025 +0100

    Recognize SPARCv9 cache line length

    Signed-off-by: Nia Alarie <nia@NetBSD.org>

M	src/base/basictypes.h

commit b19b00ca58863bdeda8293312dca2966c434604a
Author: Matthieu MOREL <matthieu.morel35@gmail.com>
Date:	Wed Nov 19 07:27:41 2025 +0100

    update BUILD.bazel and MODULE.bazel to load rules_cc

    This allows to be compatible with Bazel 9 constraints

    [alkondratenko@gmail.com: amended with case-sensitive sorting of
    gitignore-s]
    Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
    Signed-off-by: Aliaksei Kandratsenka <alkondratenko@gmail.com>

M	.gitignore
M	BUILD.bazel
M	MODULE.bazel

commit 119136d3c3c985fa45f5c8d95b1cf496659615dc
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Oct 10 11:27:41 2025 +0100

    profile-handler_unittest: add noexcept to operators new/delete

    This fixes (justified) warning that modern GCCs were giving for the
    mismatch of declared and defined operators new/delete.

M	src/tests/profile-handler_unittest.cc

commit f9fb817bef1a17a401ca5ca605fec4627a4a6736
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Tue Oct 7 15:36:15 2025 +0100

    unbreak infinite loop under valgrind more robustly

    See discussion in https://github.com/gperftools/gperftools/issues/1615

    This change avoids the issue even if we're unable to detect valgrind
    presence.

M	src/malloc_extension.cc
M	src/tcmalloc.cc
M	src/thread_cache.h

commit 65b4ea10e1bb212f86cc15a7b14087ebf7f70298
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Tue Oct 7 15:01:18 2025 +0100

    avoid infinite loop in MallocExtension::instance under valgrind

    See https://github.com/gperftools/gperftools/issues/1615 and
    referenced valgrind ticket for the discussion.

M	src/malloc_extension.cc

commit 80cdbea9a9be8d0541a162cb6bc9d2119c34d913
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Mon Aug 18 13:05:15 2025 -0400

    bump vendor/libbacktrace to latest

M	vendor/README.vendor
M	vendor/libbacktrace/atomic.c
M	vendor/libbacktrace/configure
M	vendor/libbacktrace/configure.ac
M	vendor/libbacktrace/elf.c
M	vendor/libbacktrace/fileline.c
M	vendor/libbacktrace/pecoff.c

commit 10de695865b23e124b14fab4d95e7185ae4cc16c
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Mon Aug 18 12:51:34 2025 -0400

    bump vendor/googletest to latest

M	vendor/README.vendor
M	vendor/googletest/BUILD.bazel
M	vendor/googletest/CMakeLists.txt
M	vendor/googletest/MODULE.bazel
M	vendor/googletest/README.md
M	vendor/googletest/WORKSPACE
M	vendor/googletest/ci/linux-presubmit.sh
M	vendor/googletest/ci/macos-presubmit.sh
M	vendor/googletest/ci/windows-presubmit.bat
M	vendor/googletest/docs/_layouts/default.html
M	vendor/googletest/docs/advanced.md
M	vendor/googletest/docs/faq.md
M	vendor/googletest/docs/gmock_cook_book.md
M	vendor/googletest/docs/primer.md
M	vendor/googletest/docs/quickstart-bazel.md
M	vendor/googletest/docs/quickstart-cmake.md
M	vendor/googletest/docs/reference/actions.md
M	vendor/googletest/docs/reference/assertions.md
M	vendor/googletest/docs/reference/matchers.md
M	vendor/googletest/docs/reference/testing.md
M	vendor/googletest/fake_fuchsia_sdk.bzl
M	vendor/googletest/googlemock/include/gmock/gmock-actions.h
M	vendor/googletest/googlemock/include/gmock/gmock-matchers.h
M	vendor/googletest/googlemock/include/gmock/gmock-more-actions.h
M
vendor/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h
M	vendor/googletest/googlemock/include/gmock/internal/gmock-port.h
M	vendor/googletest/googlemock/src/gmock-spec-builders.cc
M	vendor/googletest/googlemock/test/gmock-actions_test.cc
M	vendor/googletest/googlemock/test/gmock-function-mocker_test.cc
M	vendor/googletest/googlemock/test/gmock-matchers-arithmetic_test.cc
M
vendor/googletest/googlemock/test/gmock-matchers-comparisons_test.cc
M	vendor/googletest/googlemock/test/gmock-matchers-containers_test.cc
M	vendor/googletest/googlemock/test/gmock-matchers-misc_test.cc
M	vendor/googletest/googlemock/test/gmock-more-actions_test.cc
M	vendor/googletest/googlemock/test/gmock-spec-builders_test.cc
M	vendor/googletest/googlemock/test/gmock_output_test_golden.txt
M	vendor/googletest/googletest/CMakeLists.txt
M	vendor/googletest/googletest/README.md
M	vendor/googletest/googletest/cmake/internal_utils.cmake
M	vendor/googletest/googletest/include/gtest/gtest-assertion-result.h
M	vendor/googletest/googletest/include/gtest/gtest-matchers.h
M	vendor/googletest/googletest/include/gtest/gtest-param-test.h
M	vendor/googletest/googletest/include/gtest/gtest-printers.h
M	vendor/googletest/googletest/include/gtest/gtest-typed-test.h
M	vendor/googletest/googletest/include/gtest/gtest.h
M
vendor/googletest/googletest/include/gtest/internal/gtest-internal.h
M
vendor/googletest/googletest/include/gtest/internal/gtest-param-util.h
M	vendor/googletest/googletest/include/gtest/internal/gtest-port.h
M	vendor/googletest/googletest/src/gtest-internal-inl.h
M	vendor/googletest/googletest/src/gtest-printers.cc
M	vendor/googletest/googletest/src/gtest.cc
M	vendor/googletest/googletest/test/BUILD.bazel
M	vendor/googletest/googletest/test/googletest-color-test.py
M	vendor/googletest/googletest/test/googletest-death-test-test.cc
C080
vendor/googletest/googletest/test/googletest-setuptestsuite-test_.cc
vendor/googletest/googletest/test/googletest-fail-if-no-test-linked-test-with-disabled-test_.cc
C080
vendor/googletest/googletest/test/googletest-setuptestsuite-test_.cc
vendor/googletest/googletest/test/googletest-fail-if-no-test-linked-test-with-enabled-test_.cc
A
vendor/googletest/googletest/test/googletest-fail-if-no-test-linked-test.py
A
vendor/googletest/googletest/test/googletest-fail-if-no-test-selected-test.py
M	vendor/googletest/googletest/test/googletest-filter-unittest.py
M
vendor/googletest/googletest/test/googletest-json-output-unittest.py
M
vendor/googletest/googletest/test/googletest-output-test-golden-lin.txt
M	vendor/googletest/googletest/test/googletest-param-test-test.cc
M	vendor/googletest/googletest/test/googletest-printers-test.cc
M
vendor/googletest/googletest/test/googletest-setuptestsuite-test_.cc
M	vendor/googletest/googletest/test/gtest_unittest.cc
M	vendor/googletest/googletest/test/gtest_xml_output_unittest.py
M	vendor/googletest/googletest/test/gtest_xml_output_unittest_.cc
M	vendor/googletest/googletest_deps.bzl

commit d6da0feefd74b7f5a362ea40c1709a7e3cb8645c
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Sat Aug 16 22:29:01 2025 -0400

    profiler_unittest: workaround netbsd issue

M	src/tests/profiler_unittest.sh

commit eb1d6df1f6c84dba81a224f3f05de07a1b2c4572
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Sat Aug 16 22:33:47 2025 -0400

    profiler_unittest: ensure enough profiler ticks in right context

    I.e. so that we count ticks after lock is taken.

M	src/tests/profiler_unittest.cc

commit 386a09dfded781ad639bf723a1527ee0d3750fbf
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Sat Aug 16 12:16:53 2025 -0400

    profiler_unittest: cleaned up and fixed

    This includes dropping unnecessary "multiplicity" (i.e. we had
    profiler{1,2,3,4}_unittest binaries). Apparently attempt was made to
    test with/without threads and with different linking options. But
    threads are "always on" nowadays and those were not really different
    linking options (at least with current-day libtool).

    Another issue was that modern pprof outputs units of time (so 530ms
    instead of 530) which confused expr thingy that we use in our shell
    script. This is now fixed (by cutting ms suffix via sed).

M	.gitignore
M	CMakeLists.txt
M	Makefile.am
M	src/tests/profiler_unittest.cc
M	src/tests/profiler_unittest.sh
M	src/tests/testutil.cc

commit 1ba782bb8dde56a9695dd70640e2f8f55c7548d9
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Sat Aug 16 11:55:03 2025 -0400

    include valgrind/valgrind.h header when it is available

    So that runtime valgrind detection logic can work whenever people's
    machines have valgrind installed.

    Resolves github issue #1589

M	src/base/dynamic_annotations.cc

commit 4c19cf45a603c017061fd2092dc3170ef1c8aa29
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Aug 13 18:28:59 2025 -0400

    GetUniquePathFromEnv: set CPUPROFILE_USE_PID for the children

    We had this very kludgy behavior of marking "we're child" by setting
    7th bit of first character of CPUPROFILE (or HEAPPROFILE) environment
    variable. Not only it breaks on non-ascii filenames (rare, but not
    impossible), it also breaks some (arguably, wrong) programming
    envivonments that want environment variables to be utf-8. See github
    issues #1044 and #1603

    Lets fix it by actually adding CPUPROFILE_USE_PID environment
    variable. Doing this without recursing back into malloc is actually
    not hard (at least on UNIXy systems). We just update environ directly.

M	src/base/sysinfo.cc
M	src/base/sysinfo.h
M	src/tests/unique_path_unittest.cc

commit cfa59eab3f690ccb18fe977b3b04f6b0f9d8ad6b
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Aug 13 18:05:02 2025 -0400

    move memmap.h under src/base/

M	src/base/low_level_alloc.cc
R100	src/memmap.h	src/base/memmap.h
M	src/emergency_malloc.cc

commit 50638ad0cae3f582a98922331a380b568f028fff
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Aug 13 17:48:09 2025 -0400

    make GetenvBeforeMain simply use normal getenv

    It is actually okay to call very early (with notable exception of
    windows, so we keep part of the madness).

    With this we can also amputate totally unneccessary __environ
    thingy. Hard to say if it was ever necessary, but as far as my code
    archeology goes, using regular getenv (or environ) should have been
    safe since long ago.

M	CMakeLists.txt
M	cmake/config.h.in
M	configure.ac
M	generic-config/config.h
M	src/base/sysinfo.cc
M	vsprojects/include/config.h

commit 15195ef357395041c63ec05ddc39cfedb341670b
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Aug 13 17:38:12 2025 -0400

    pull declaration of environ variable into separate header

    GNU libc declares it in headers, but POSIX standard says it is to be
    declared by the users. And BSDs follow it to the letter not having it
    in their system headers.

A	src/base/environ.h
M	src/base/sysinfo.cc
M	src/tests/tcmalloc_unittest.cc

commit d9a5d38e5cd1c5d50c77d6bcff707d040c43e4de
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Aug 15 13:32:29 2025 -0400

    bump version to 2.17.2

M	CMakeLists.txt
M	MODULE.bazel
M	NEWS
M	configure.ac
M	src/gperftools/tcmalloc.h

commit 1b4eb9fb1180b2e20254b764e9da03a0bd0f47e7
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Aug 15 13:33:26 2025 -0400

    add BUILD.bazel to automake's EXTRA_DIST

M	Makefile.am

commit 86f938ab093a949d5a683905d706cb26a1a9c849
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Thu Aug 14 18:26:09 2025 -0400

    proc_maps_iterator: unbreak reading /proc/self/maps

    I recently added wrong code that attempted to detect and handle too
    long lines. But this code was never actually tested.

    On NetBSD PATH_MAX is relatively short, just 1k bytes and we're
    actually able to hit that (wrong) check. So we failed
    proc_maps_iterator_test there.

    This commit extracts ForEachLine logic into separate header, adds
    tests, exercises all cases and actually fixes the "line is too long"
    case.

M	.gitignore
M	CMakeLists.txt
M	Makefile.am
A	src/base/for_each_line.h
M	src/base/proc_maps_iterator.cc
A	src/tests/for_each_line_test.cc

commit 377e15e62598eb36c7068cb7f5476c4ab582de2d
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Aug 15 13:03:44 2025 -0400

    bazel: rename BUILD -> BUILD.bazel

    Some filesystems are case-insensitive and people commonly prefer
    build/ as a directory for out-of-tree builds (e.g. with cmake).

R100	BUILD	BUILD.bazel

commit a726aebea95f473e0e8008922c78acd424af9dbb
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Fri Aug 15 12:55:14 2025 -0400

    proc_maps_iterator_test: put variable to .data, not .bss

    On FreeBSDs we used PHDRs to synthesize mappings, but PHDRs don't
    cover .bss. I am not sure how the test passed previously, but I see it
    fail at least now on FreeBSD 13. Putting variable into .data section,
    by initializing it, should make test more robust.

M	src/tests/proc_maps_iterator_test.cc

commit c80a9a6b7d678e11be5df5113aa73f687ea381a9
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Thu Aug 14 15:48:10 2025 -0400

    tcmalloc_unittest: un-flake the large allocs release test

    FreeBSD mmap sys-allocator is behaving "randomly" enough that old
    logic wasn't triggering the right sequences of addresses.

    So I had to rework the test a bit to actually ensure that we're
    allocating used/free addressess one exactly after the other.

    I also previously added stupid duplicate release rate reset, which was
    already there, but I was somehow blind enough not to spot it just 1
    line below! So this is removed.

    And this entire test is now separate function with hopefully helpful
    comments about what we're trying to achieve.

    Updates github #1604 and #1574

M	src/tests/page_heap_test.cc
M	src/tests/tcmalloc_unittest.cc

commit 94fb7079614bcefff23be52b4988c2381a9c31bc
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Aug 13 15:37:07 2025 -0400

    bump version to 2.17.1

M	CMakeLists.txt
M	MODULE.bazel
M	NEWS
M	configure.ac
M	src/gperftools/tcmalloc.h

commit 2d277134c4b5c56d1c2912330aa44160af52aadf
Author: graysky <therealgraysky AT proton DOT me>
Date:	Thu Aug 7 02:35:01 2025 -0400

    stacktrace_libgcc-inl.h: fix build for some ARM toolchains

    On OpenWrt when bulding for arm_cortex-a15_neon-vpfv4 or
    arm_cortex-a9_vfpv3-d16, the build errors out due to an undefined
    symbol
    _URC_NORMAL_STOP. This usually happens when the required header
    (typically <unwind.h>) is not included, or the toolchain's unwind
    implementation does not provide this definition.

    Error:
    src/stacktrace_libgcc-inl.h: In function '_Unwind_Reason_Code
    libgcc_backtrace_helper(_Unwind_Context*, void*)':
    src/stacktrace_libgcc-inl.h:69:12: error: '_URC_NORMAL_STOP' was
    not declared in this scope
       69 |	return _URC_NORMAL_STOP;
	  |

    A work-around is to use URC_END_OF_STACK.

    Signed-off-by: graysky <therealgraysky AT proton DOT me>

M	src/stacktrace_libgcc-inl.h

commit 742e4e29c497a2780a4e7d02516b8c5e80978abd
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Mon Aug 4 20:25:44 2025 +0100

    bump version to 2.17

M	CMakeLists.txt
M	MODULE.bazel
M	NEWS
M	configure.ac
M	src/gperftools/tcmalloc.h

commit 32f11cb4b777880f7ecff3edcb5bc04fd6f1dff1
Author: Jackie Cui <cui_jc@163.com>
Date:	Sat Jul 26 17:41:42 2025 +0800

    preferring normal spans to returned spans in PageHeap::AllocLarge

    Signed-off-by: Aliaksei Kandratsenka <alkondratenko@gmail.com>
    [alkondratenko@gmail.com: unflaked the test change]

M	src/page_heap.cc
M	src/tests/page_heap_test.cc
M	src/tests/tcmalloc_unittest.cc

commit 6b63d71bf5b7bf4023f2361c1a6a7346db466b1e
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Sun Aug 3 20:00:02 2025 +0100

    tcmalloc_unittest: disable "normal" release in ReleaseToSystem test

    It could potentially flake the test.

M	src/tests/tcmalloc_unittest.cc

commit 940be25e1c5d12d776654670c38a994b2053da0c
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Sat Aug 2 14:14:27 2025 -0400

    bazel:mark gtest dependency as development

M	MODULE.bazel

commit 338e906eaec5cd136f392fe81d533935aafb0777
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Mon Jul 21 20:48:21 2025 -0400

    proc_maps_iterator: refactor and fix

    There was really annoying clang warning (and IMHO bogus too) about
    unused StringToInteger specialization. We also got github issue #1600
    about slightly incorrect proc maps-like line formatting. Somehow I
    also left some TODOs and diagnostic codes. So this code needed some
    cleanup.

    I also noticed that Linux kernel actually uses unsigned numbers for
    inodes, so there is really no need to do parsing of int64_t-s.

M	src/base/proc_maps_iterator.cc
M	src/base/proc_maps_iterator.h

commit 25234ef72d914c1ad43cde7726cccbf8f39c9169
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Mon Jul 21 20:04:44 2025 -0400

    Revert "[proc_maps_iterator]: fix annoying clang warning"

    I don't really understand how, but some apple's clang thing fails on
    this code.

    This reverts commit a798cd37e26587f7bff72ecf1a4ea0bef1e3bae4.

M	src/base/proc_maps_iterator.cc

commit a798cd37e26587f7bff72ecf1a4ea0bef1e3bae4
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Mon Jul 21 19:02:13 2025 -0400

    [proc_maps_iterator]: fix annoying clang warning

    Looks like clang has some kind of heuristic detects unused template
    specialications defined in .cc file (not .h, because unused
    specializations are common). So lets avoid this warning by using
    C++-17 if-constexpr feature.

M	src/base/proc_maps_iterator.cc

commit 2b001ca54536a5272e12debc73ea5b901e65861c
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Mon Jul 21 18:45:49 2025 -0400

    ppc: drop unused stacktrace_powerpc-inl.h header

    When we merged 75b65f96b0bb44d70e0a461a03a3f8c928390283 which split
    original frame-poiner-ful PPC backtracer, we somehow failed to delete
    the original. All those years it was lying there unused.

D	src/stacktrace_powerpc-inl.h

commit a0c62293af4de2ecdeaa5e2d3ec4d8dd9da43dd6
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Mon Jul 21 18:41:03 2025 -0400

    ppc: implement a way to disable compilation of ppc backtracer

    Looks like at least on musl there are some issues with some ucontext
    defines. So lets at least make it possible to build stuff.

    See github issue #1602

M	src/stacktrace.cc

commit 15d5e70ca74c77b688871f8a79ea72a057547879
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Thu Jun 5 12:32:00 2025 -0400

    osx:heap-profiler_unittest: workaround failure to hide _tc_newarray

    Recent pprof update fixed another issue in leading underscore handling
    on OSX, but that somehow broke built-in filtering out of tcmalloc
    symbols. So for now lets manually hide tc_newarray there while
    investigating proper fix upstream.

    pprof reference: https://github.com/google/pprof/pull/939

M	src/tests/heap-profiler_unittest.sh

commit 6e09b8446e69dcbb205274681298058372651f1a
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Apr 30 17:07:05 2025 -0400

    [stacktrace-libgcc] stop backtracing when reaching limit

    Sometimes we deal with very deeply recursive functions. In this case
    capturing backtraces via "libgcc" method was very slow as we
    "unwinded" every stack frame, much beyond what depth we're willing to
    actually capture. So lets fix it and stop when at the limit.

M	src/stacktrace_libgcc-inl.h

commit b2231683cc01ffbf090555f0e532c638b341e63c
Author: Salvatore Dipietro <dipiets@amazon.com>
Date:	Tue May 13 16:47:47 2025 -0700

    Adding 'sb' instruction to spin_delay() for ARM v8.5 onward

M	src/base/spinlock.cc

commit 83edb60836d87cf1b406e8846b9059c03031e8f5
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Sun Feb 16 19:38:45 2025 -0500

    bump version to 2.17rc

M	CMakeLists.txt
M	MODULE.bazel
M	NEWS
M	configure.ac
M	src/gperftools/tcmalloc.h

commit 23268e84bc6e7c9af96e5cba7ef9a0b2e7f3a6e2
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Thu Mar 6 16:57:00 2025 -0500

    tcmalloc_unittest: fix exit status propagation for sub-process tests

M	src/tests/tcmalloc_unittest.cc

commit 5591bfd83ce77d7da0c74860e0f4a7f8ee8519db
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Wed Mar 5 21:13:20 2025 -0500

    ensure that heap-profiler_debug_unittest runs matching binary

M	src/tests/heap-profiler_unittest.sh

commit a81b2ebbc2cec046aed5d571cdc783c49b48843a
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Mon Feb 17 11:49:39 2025 -0500

    put ATTRIBUTE_NOINLINE before function to unbreak MSVC

M	src/tcmalloc.cc

commit 9d40fae04162f993d8be6b8955074b7097f8dd32
Author: Aliaksei Kandratsenka <alkondratenko@gmail.com>
Date:	Mon Feb 17 10:16:35 2025 -0500

    amputate all the ATTRIBUTE_SECTION stuff

    It was used to implement GetCallerStackTrace feature where it would
    skip frames up to and including first call to tcmalloc functions. But
    it was ~always ELF-specific and required gcc extensions. For some time
    we also supported OSX with this feature but, Apple broke it
    semi-recently.

