gcpp
convey
gcpp | convey | |
---|---|---|
12 | 2 | |
912 | 330 | |
- | - | |
10.0 | 0.0 | |
about 5 years ago | almost 3 years ago | |
C++ | Rust | |
MIT License | MIT License |
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.
gcpp
- C++: Deferred_ptr, Deferred_heap, Deferred_allocator
-
What feature would you like to see in C++26?
static reflection and pattern-matching, as everyone is saying, but I'd also like to see a garbage-collecting smart-pointer in the standard library similar in design to Herb Sutter's deferred_ptr
-
Rust went from side project to world’s fastest growing language
There are definitely fringe edge cases where C++ can do things that Rust simply cannot, currently.
I'm thinking of things like Herb Sutter's deferred_heap (https://github.com/hsutter/gcpp) that give you GC-like abstraction. It's pretty cool that this is possible to write in vanilla C++ with decent ergonomics. I tried to make something similar awhile back and hit a wall in terms of making something that would be pleasant to use.
Rust has several on-going experiments with making a nice GC, along with good support for arenas. (If you can use arenas, they're great.)
-
Now the C++ removed garbage collector support, is it still possible the have a global garbage collector in a C++ application?
Check out this library: https://github.com/hsutter/gcpp
-
tracked_ptr - when shared_ptr is not enough
Hm, yeah, that's pretty unclear. My understanding is based off the link to Herb's proposal in the OP, which I understand this to be an evolution of.
-
What do you think will be the future direction for C++ evolution?
Re garbage collection: My understanding was that the standard API was intended for interop with managed languages, not for pure C++ code to use, although I could be mistaken. I don't think garbage collection is entirely a lost cause, for instance Herb Sutter's work, which I think he wants to integrate in Cppfront, would be a great way to do it. Imo, his garbage collection ([1] [2]) could be much better than D or Nim, because it has easily controllable performance characteristics. You don't pay for it if you won't use it, and it's unlikely that libraries you pull in would need it, which is imo what makes programming without the "optional" GC in D and Nim difficult.
- Any guesses as to how C++ will turn out w.r.t. garbage collection?
-
Why do people want a garbage collector in C++?
Herb Sutter
-
New "Java to C++" code converter tool for beginners
Something like gcpp would be quite nice. That and a intelligent scope detector could make use of isolated and local GC when it detects that some objects stays together and have similar lifetime.
convey
-
Rust went from side project to world’s fastest growing language
Few years back, Convey[1] has apparently outran HAProxy in an alleged benchmark by the author[2]. That's a one man project (now abandoned, sadly) outrunning a decade old product built by an enterprise company AND a big community AND spearheaded and designed by a data structure genius. Granted, only in one of many tricks HAProxy can pull, but still. Not a database but indeed a concurrent world-facing RealWork software. If true (didn't actually check myself), I'd say it fits your bill.
Personally, I read that as "can be as fast as, but without you having to be Willy Tarreau level genius" which is all I need.
It's easier/more-intuitive to do a lot of things in C++, but safe, high performing C++ is certainly harder than safe, high performing Rust for huge swaths of use-cases. Also, as has been mentioned, its type system that benefitted from the PL research since the 80s also allows for nicer expression of business logic. In particular, this means that in Rust, unlike C, Go, or even C++ in great part, you are not writing in the same low-level intricate language at every level of your stack i.e. it can be a nicer high-level experience the higher you go if you designed your lower tiers well.
And that last thing to me is the biggest advantage it has over the competition.
Off course, there is also the fact that juggling dependencies in a non-trivial C++ project was a nightmare until recently with vcpkg and it's manifest mode and that will take probably another decade to become commonplace in the ecosystem (if ever).
[1]: https://github.com/bparli/convey
-
What's everyone working on this week (23/2022)?
custom domain-specific load balancer based on convey code (https://github.com/bparli/convey)
What are some alternatives?
sgcl - Smart Garbage Collection Library for C++
getargs - A truly zero-cost argument parser for Rust
graph_ptr - A smart ptr implementation that can handle cycles, similar to herb sutter's deferred_ptr.
rust-beginner-projects - Rust projects for beginners to familiarise themselves with rust
pkg-fmt - Metadata to support C++ packaging
ergo - std-alternative prototyping / education library
cargo-script-mvs - Pre-RFC for merging cargo-script into cargo
NeatReflection - KISS C++20 Type Reflection using IFC files
carbon-lang - Carbon Language's main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)
wg-allocators - Home of the Allocators working group: Paving a path for a standard set of allocator traits to be used in collections!
rust - Empowering everyone to build reliable and efficient software.