Folly VS learnxinyminutes-docs

Compare Folly vs learnxinyminutes-docs and see what are their differences.

Folly

An open-source C++ library developed and used at Facebook. (by facebook)

learnxinyminutes-docs

Code documentation written as code! How novel and totally my idea! (by adambard)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
Folly learnxinyminutes-docs
90 226
27,034 11,153
0.8% -
9.8 9.1
5 days ago 1 day ago
C++ JavaScript
Apache License 2.0 GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.

Folly

Posts with mentions or reviews of Folly. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-29.
  • Ask HN: How bad is the xz hack?
    1 project | news.ycombinator.com | 31 Mar 2024
    https://github.com/facebook/folly/commit/b1391e1c57be71c1e2a...
  • Backdoor in upstream xz/liblzma leading to SSH server compromise
    49 projects | news.ycombinator.com | 29 Mar 2024
    https://github.com/facebook/folly/pull/2153
  • A lock-free ring-buffer with contiguous reservations (2019)
    9 projects | news.ycombinator.com | 29 Feb 2024
    To set a HP on Linux, Folly just does a relaxed load of the src pointer, release store of the HP, compiler-only barrier, and acquire load. (This prevents the compiler from reordering the 2nd load before the store, right? But to my understanding does not prevent a hypothetical CPU reordering of the 2nd load before the store, which seems potentially problematic!)

    Then on the GC/reclaim side of things, after protected object pointers are stored, it does a more expensive barrier[0] before acquire-loading the HPs.

    I'll admit, I am not confident I understand why this works. I mean, even on x86, loads can be reordered before earlier program-order stores. So it seems like the 2nd check on the protection side could be ineffective. (The non-Linux portable version just uses an atomic_thread_fence SeqCst on both sides, which seems more obviously correct.) And if they don't need the 2nd load on Linux, I'm unclear on why they do it.

    [0]: https://github.com/facebook/folly/blob/main/folly/synchroniz...

    (This uses either mprotect to force a TLB flush in process-relevant CPUs, or the newer Linux membarrier syscall if available.)

  • Appending to an std:string character-by-character: how does the capacity grow?
    2 projects | news.ycombinator.com | 26 Oct 2023
    folly provides functions to resize std::string & std::vector without initialization [0].

    [0] https://github.com/facebook/folly/blob/3c8829785e3ce86cb821c...

  • Can anyone explain feedback of a HFT firm regarding implementation of SPSC lock-free ring-buffer queue?
    1 project | /r/highfreqtrading | 12 Jul 2023
    My implementation was quite similar to Boost's spsc_queue and Facebook's folly/ProducerConsumerQueue.h.
  • A Compressed Indexable Bitset
    6 projects | news.ycombinator.com | 1 Jul 2023
    > How is that relevant?

    Roaring bitmaps and similar data structures get their speed from decoding together consecutive groups of elements, so if you do sequential decoding or decode a large fraction of the list you get excellent performance.

    EF instead excels at random skipping, so if you visit a small fraction of the list you generally get better performance. This is why it works so well for inverted indexes, as generally the queries are very selective (otherwise why do you need an index?) and if you have good intersection algorithms you can skip a large fraction of documents.

    I didn't follow the rest of your comment, select is what EF is good at, every other data structure needs a lot more scanning once you land on the right chunk. With BMI2 you can also use the PDEP instruction to accelerate the final select on a 64-bit block: https://github.com/facebook/folly/blob/main/folly/experiment...

  • Defer for Shell
    1 project | news.ycombinator.com | 20 Jun 2023
    C++ with folly's SCOPE_EXIT {} construct:

    https://github.com/facebook/folly/blob/main/folly/ScopeGuard...

  • Is there any facebook/folly community for discussion and Q&A?
    1 project | /r/cpp | 19 Jun 2023
    Seems like github issues taking a long time to get any response: https://github.com/facebook/folly
  • How a Single Line of Code Made a 24-Core Server Slower Than a Laptop
    4 projects | news.ycombinator.com | 17 Jun 2023
    Can't speak for abseil and tbb, but in folly there are a few solutions for the common problem of sharing state between a writer that updates it very infrequently and concurrent readers that read it very frequently (typical use case is configs).

    The most performant solutions are RCU (https://github.com/facebook/folly/blob/main/folly/synchroniz...) and hazard pointers (https://github.com/facebook/folly/blob/main/folly/synchroniz...), but they're not quite as easy to use as a shared_ptr [1].

    Then there is simil-shared_ptr implemented with thread-local counters (https://github.com/facebook/folly/blob/main/folly/experiment...).

    If you absolutely need a std::shared_ptr (which can be the case if you're working with pre-existing interfaces) there is CoreCachedSharedPtr (https://github.com/facebook/folly/blob/main/folly/concurrenc...), which uses an aliasing trick to transparently maintain per-core reference counts, and scales linearly, but it works only when acquiring the shared_ptr, any subsequent copies of that would still cause contention if passed around in threads.

    [1] Google has a proposal to make a smart pointer based on RCU/hazptr, but I'm not a fan of it because generally RCU/hazptr guards need to be released in the same thread that acquired them, and hiding them in a freely movable object looks like a recipe for disaster to me, especially if paired with coroutines https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p05...

  • Ask HN: What are some of the most elegant codebases in your favorite language?
    37 projects | news.ycombinator.com | 17 Jun 2023
    Not sure if it's still the case but about 6 years ago Facebook's folly C++ library was something I'd point to for my junior engineers to get a sense of "good" C++ https://github.com/facebook/folly

learnxinyminutes-docs

Posts with mentions or reviews of learnxinyminutes-docs. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-26.
  • Scripts should be written using the project main language
    5 projects | news.ycombinator.com | 26 Mar 2024
    > Sure, maybe for some esoteric edge cases, but 5 mins on https://learnxinyminutes.com/ should get you 80% of the way there, and an afternoon looking at big projects or guidelines/examples should you another 18% of the way.

    Not for C++, and even for other languages, it's not the language that's hard, it's the idioms.

    Python written by experts can be well-nigh incomprehensible (you can save typing out exactly one line if you use list-comprehensions everywhere!).

    Someone who knows Javascript well still needs to know all the nooks and crannies of the popular frameworks.

    Java with the most popular frameworks (Spring/Boot/etc) can be impossible for a non-Java programmer to reason about (where's all this fucking magic coming from? Where is it documented? What are the other magic words I can put into comments?)

    C# is turning into a C++ wannabe as far as comprehension complexity goes.

    Right now, the quickest onboarding I've seen by far are Go codebases.

    The knowledge tree required to contribute to a codebase can exists on a Deep axis and a Wide axis. C++ goes Deep and Wide. Go and C are the only projects I've seen that goes neither deep nor wide.

  • 100+ FREE Resources Every Web Developer Must Try
    22 projects | dev.to | 26 Feb 2024
    Learn x in y minutes: Concise tutorials to learn various programming languages and tools quickly.
  • SQL for Data Scientists in 100 Queries
    5 projects | news.ycombinator.com | 6 Feb 2024
  • New GitHub Copilot Research Finds 'Downward Pressure on Code Quality'
    2 projects | news.ycombinator.com | 28 Jan 2024
    StackOverflow's making their own competing LLM for all this stuff.

    IMO, one of the biggest problems with the way people use LLMs right now, is that they're being treated as a single oracle: to know Java, it must be trained on examples of Java.

    It would be much better if their language comprehension abilities were kept separated from their knowledge (and there are development efforts in this direction), so in this example it would be trained to be able to be able to read a Java tutorial rather than by actually reading a Java tutorial, so when the overall system is asked to write something in Java, the language model within the system decides to do this by opening https://learnxinyminutes.com and combining the user query with the webpage.

    I think this will help make the models more compact, which is a benefit all by itself, but it would also mean that knowledge can be updated much more easily.

    Someone would have to actually do this in order to see if those benefits are worth the extra cost of having to load a potentially huge a tutorial into the context window, and likewise the extent to which a more compact training set makes the language comprehension worse.

  • Ask HN: Programming Courses for Experienced Coders?
    10 projects | news.ycombinator.com | 29 Dec 2023
    The project was created and is maintained by Adam Bard, but is open sourced with over 1.7k contributors since 2013

    https://github.com/adambard/learnxinyminutes-docs

  • Ask HN: How to learn to be a programmer in 20 years?
    1 project | news.ycombinator.com | 3 Oct 2023
    So you have studied programming for at least 5 years, what kinds of programs have you written? Apparently you have already applied your skills, since you have "created a good reputation among developers"? Why a time-frame of 20 years, why not 20 months or 20 weeks? Heck, you can learn a lot in even 20 days!

    Once you have learned a few languages, libraries and frameworks then learning new stuff becomes much easier. At that point I'd recommend to check the website https://learnxinyminutes.com. Meanwhile, continue asking questions here and elsewhere :)

    An other tip, if you are into computer science and algorithms stuff I recommend you try to solve problems which are posted at https://codegolf.stackexchange.com. You don't need to try solving them in less than X characters, but just to get them solved by any means necessary. And don't take too much bad influence from the posted solutions.

  • Lean 4.0.0, first official lean4 release
    10 projects | news.ycombinator.com | 7 Sep 2023
  • Learn X in Y Minutes
    1 project | news.ycombinator.com | 18 Aug 2023
  • how long will it take to learn JS?
    1 project | /r/learnprogramming | 29 Jun 2023
    If you want a brief overview, go to https://learnxinyminutes.com/ and look for Javascript. I guess it should be roughly the time it took to learn C++ or possibly less, but JS has its own quirks. Often learning a second language is difficult as the first.
  • Anyone got good resources for experienced devs that don't know front end?
    4 projects | /r/reactjs | 25 May 2023
    Very light compared to the other resources people have linked for you, but I love https://learnxinyminutes.com/

What are some alternatives?

When comparing Folly and learnxinyminutes-docs you can also consider the following projects:

abseil-cpp - Abseil Common Libraries (C++)

learn-x-by-doing-y - ๐Ÿ› ๏ธ Learn a technology X by doing a project - Search engine of project-based learning

Boost - Super-project for modularized Boost

the-road-to-learn-react - ๐Ÿ““The Road to learn React: Your journey to master plain yet pragmatic React.js

Seastar - High performance server-side application framework

materials - Bonus materials, exercises, and example projects for our Python tutorials

parallel-hashmap - A family of header-only, very fast and memory-friendly hashmap and btree containers.

You-Dont-Know-JS - A book series on JavaScript. @YDKJS on twitter.

EASTL - Obsolete repo, please go to: https://github.com/electronicarts/EASTL

tour_of_rust - A tour of rust's language features

OpenFrameworks - openFrameworks is a community-developed cross platform toolkit for creative coding in C++.

CppCoreGuidelines - The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++