Folly VS Windows Terminal

Compare Folly vs Windows Terminal and see what are their differences.

Folly

An open-source C++ library developed and used at Facebook. (by facebook)
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 Windows Terminal
90 506
27,072 93,467
1.0% 0.6%
9.8 9.7
4 days ago 5 days ago
C++ C++
Apache License 2.0 MIT License
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

Windows Terminal

Posts with mentions or reviews of Windows Terminal. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-12.
  • Deleting Software I Wrote Upon Leaving Employment of a Company
    1 project | news.ycombinator.com | 15 Mar 2024
    > convince management of the value

    This presupposes that such convincing is even possible. Many, many companies have leadership that are simply terrible at identifying value. If you've never been part of a majority of developers advocating for, if not outright begging for, some huge ROI initiative to get the green light, you are very fortunate.

    There are great counterexamples, like Valve, which is known for giving developers an extreme degree of autonomy, and they benefit greatly from that approach. For each Valve, though, there are dozens of companies that manage to succeed despite themselves.

    Take Microsoft, for example. One tiny, yet representative, example: the way the Windows Terminal team handled a suggestion from Casey Muratori to take their software from abysmally slow to lightning fast:

    https://github.com/microsoft/terminal/issues/10362

    A quote from one of the Terminal developers, dismissing the suggestion:

    > I believe what you’re doing is describing something that might be considered an entire doctoral research project in performant terminal emulation as “extremely simple” somewhat combatively…

    Just how difficult was such an endeavor in actuality? Well, given that Casey implemented his own terminal emulator from scratch and incorporated the functionality he was proposing in a mere weekend... not a whole lot. Relatively minor effort for a huge return on investment. It took Casey explaining the concepts, then providing a working proof of concept, and finally a bunch of backlash online towards the Terminal team to get them to do the right thing for themselves and their users.

  • A glimpse into the universe where Windows died with the 1980s
    2 projects | news.ycombinator.com | 12 Mar 2024
    At this point ConHost.exe is open source [0] so it is maybe not a stretch to expect Microsoft to open source CMD.EXE at some point.

    Though with PowerShell being cross-platform and already open source, I personally don't think there's enough to gain in some sort of better open source CMD.EXE fork. I'd be interested in being proved wrong on that, but I'm also happy enough with PowerShell these days I'm not in a hurry to return to CMD.EXE.

    [0] https://github.com/microsoft/terminal/tree/main/src/host

  • Windows 11 looks to be getting a key Linux tool added in the future
    1 project | news.ycombinator.com | 2 Feb 2024
    "Users of Linux and macOS may well be familiar with the sudo command, used regularly in the terminal, and it looks like Windows may finally be getting its own version."

    More Linux tools are coming to Windows, especially Windows Server because the tools are good and they make it easier to administer a Windows Server.

    They are looking at adding a default TUI text editor (https://github.com/microsoft/terminal/discussions/16440) and now they are adding sudo.

    I would not be surprised if systemd or something like it gets ported or reinvented for Windows simply because it makes managing services so nice.

  • Overview over Microsoft's developer tools for Windows
    4 projects | dev.to | 19 Jan 2024
    GitHub
  • On Being Listed as an Artist Whose Work Was Used to Train Midjourney
    1 project | news.ycombinator.com | 16 Jan 2024
    >We are allowed to view and consume it, to be influenced by it, and under many circumstances even outright copy it.

    People keep saying this but it's actually much more complicated, and in many cases you can't view copyrighted content.

    An example, MicroSoft employees are not permitted to view or learn from an open source (GPL-2) terminal emulator:

    https://github.com/microsoft/terminal/issues/10462#issuecomm...

    Another example is proprietary software that may have it's source available, either intentionally or not. If you view this and then work on something related to it, like WINE for example, you are definitely at risk of being successfully sued.

    If you worked at MicroSoft and worked on Windows, you would not be able to participate in WINE development at all without violating copyright.

    If you viewed leaked Windows source code you also would not be able to participate in WINE development.

    An interesting question that I have, is whether training on proprietary, non-trade-secret sources would be allowed. Something like unreal engine, where you can view the source but it's still proprietary.

  • Terminal Smooth Scrolling
    2 projects | news.ycombinator.com | 4 Jan 2024
    Windows Terminal is pretty good and a new terminal emulator written in the last few years. No smooth scrolling, here's the GitHub issue requesting it: https://github.com/microsoft/terminal/issues/1400
  • Microsoft defends Edge's predatory practices with cringe reply on X
    2 projects | news.ycombinator.com | 14 Dec 2023
    Assume its related to this:

    https://github.com/microsoft/terminal/issues/10362

    It's nothing serious just microsoft engineers writing slow as shit code and reacting poorly to someone trying to help.

  • Should Windows have a default CLI editor?
    2 projects | news.ycombinator.com | 13 Dec 2023
    "There are plenty of offline scenarios where this would be incredibly useful. For disconnected environments, etc. There are some environments that will never connect to winget."

    Source: https://github.com/microsoft/terminal/discussions/16440#disc...

  • Windows Feature Exploration: Default CLI Text Editor
    1 project | news.ycombinator.com | 10 Dec 2023
  • Default Windows CLI Text Editor (Neovim/Emacs/edit/)
    1 project | news.ycombinator.com | 9 Dec 2023

What are some alternatives?

When comparing Folly and Windows Terminal you can also consider the following projects:

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

Tabby - A terminal for a more modern age

Boost - Super-project for modularized Boost

cmder - Lovely console emulator package for Windows

Seastar - High performance server-side application framework

sixel-tmux - sixel-tmux is a fork of tmux, with just one goal: having the most reliable support of graphics

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

PowerShell - PowerShell for every system!

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

starship - ☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!

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

refterm - Reference monospace terminal renderer