cppan
abseil-cpp
cppan | abseil-cpp | |
---|---|---|
1 | 65 | |
106 | 16,274 | |
0.0% | 0.6% | |
5.5 | 9.7 | |
over 1 year ago | about 3 hours ago | |
C++ | C++ | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
cppan
-
Which is your most loved feature of C++?
When I discovered vcpkg I waq very disappointed and started to look for alternatives. I found cppan (https://github.com/cppan/cppan) which was exactly what I was looking for (A bit like npm but for C++). It became sw and I don't really like that name but it's still the best thing I've found for handling dependencies on Windows.
abseil-cpp
-
C++: zero-cost static initialization
Looks similar to absl::NoDestructor
https://github.com/abseil/abseil-cpp/blob/master/absl/base/n...
Which is basically the only usage of std::launder I have seen
-
Show HN: CXXStateTree – A modern C++ library for hierarchical state machines
You'll see a fairly even split amongst S-tier, "possibly headed for standardization" level libraries. I'd say there's a skew for `#ifndef` in projects that are more "aspires to the standard library" and for `#pragma once` in projects that are more focused on like a very specific vertical.
`#pragma once` seems to be far preferred for internal code, there's an argument for being strictly conforming if you're putting out a library. I've converted stuff to `#ifndef` before sharing it, but I think heavy C++ people usually type `#pragma once` in the privacy of their own little repository.
- `spdlog`: `#pragma once` https://github.com/gabime/spdlog/blob/v1.x/include/spdlog/as...
- `absl`: `#ifndef` https://github.com/abseil/abseil-cpp/blob/master/absl/base/a...
- `zpp_bits`: `#ifndef` https://github.com/eyalz800/zpp_bits/blob/main/zpp_bits.h
- `stringzilla` `#ifndef` https://github.com/ashvardanian/StringZilla/blob/main/includ...
- Writing your own C++ standard library part 2
-
Matt Godbolt sold me on Rust (by showing me C++)
abseil's "StatusOr" is roughly like Rust's Result type, and is what is used inside Google's C++ codebases (where exceptions are mostly forbidden)
https://github.com/abseil/abseil-cpp/blob/master/absl/status...
- Writing your own C++ standard library from scratch
-
Don't "optimize" conditional moves in shaders with mix()+step()
Maybe you’d like ABSL_PREDICT macros?
https://github.com/abseil/abseil-cpp/blob/master/absl/base/o...
-
C++'s `Noexcept` Can (Sometimes) Help (Or Hurt) Performance
Their justification is here https://github.com/abseil/abseil-cpp/issues/720
However, I personally disagree with them since I think it's really important to have _some_ basic reproducibility for things like reproducing the results of a randomized test. In that case, I'm going to avoid changing as much as possible anyways.
-
Open Source C++ Stack
abseil.io
-
B-Trees Require Fewer Comparisons Than Balanced Binary Search Trees
From the looks of it Rust [1] uses a constant branching factor based on number of items whereas ABSEIL generally uses a target of 256 bytes for branching and fits however many elements fit within that. Rust’s approach seems to be more primitive as ABSEIL is optimizing for cache line usage (not sure why it’s several multiples of a cache line - maybe to help the prefetcher or to minimize cache line bouncing?)
[1] https://github.com/rust-lang/rust/blob/master/library/alloc/...
[2] https://github.com/abseil/abseil-cpp/blob/74f8c1eae915f90724...
[3] https://github.com/abseil/abseil-cpp/blob/74f8c1eae915f90724...
-
AI in Software Engineering at Google
From the screencast:
> implement also for Days
This fails to recognize that this is a bad feature that the Abseil library would explicitly reject (hence the existence of absl::CivilDay) [0], and instead perpetuates the oversimplification that 1 day is exactly 24 hours (which breaks at least twice every year due to DST).
Which is to say: it'll tell you how to do the thing you ask it to do, but will not tell you that it's a bad idea.
And, of course, that assumes that it even makes the change correctly in the first place (which is nowhere near guaranteed, in my experience). I have seen (and bug-reported!) cases where it incorrectly inverts conditionals, introduces inefficient or outright unsafe code, causes unintended side effects, perpetuates legacy (discouraged) patterns, and more.
It turns out that ML-generated code is only as good as its training data, and a lot of google3 does not adhere to current best practices (in part due to new library developments and adoption of new language versions, but there are also many corners of the codebase with, um, looser standards for code quality).
[0] https://github.com/abseil/abseil-cpp/blob/bde089f/absl/time/...
What are some alternatives?
cmake-cookbook - CMake Cookbook recipes.
Boost - Super-project for modularized Boost
cget - C++ package retrieval
Folly - An open-source C++ library developed and used at Facebook.
sw - Software Manager. Build System, Build System Generator and Package Manager. C/C++ and other languages. Tools and libraries for Software Management.
EASTL - Obsolete repo, please go to: https://github.com/electronicarts/EASTL