falcon VS proposal-arraybuffer-base64

Compare falcon vs proposal-arraybuffer-base64 and see what are their differences.

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
falcon proposal-arraybuffer-base64
2 5
925 220
0.6% 6.4%
7.8 7.6
16 days ago 8 days ago
Jupyter Notebook HTML
GNU General Public License v3.0 or later 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.

falcon

Posts with mentions or reviews of falcon. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-10-24.
  • Goodbye, Node.js Buffer
    15 projects | news.ycombinator.com | 24 Oct 2023
  • Launch HN: Drifting in Space (YC W22) – A server process for every user
    5 projects | news.ycombinator.com | 28 Feb 2022
    Good questions!

    > Why do you need one process per user? / Wouldn't this "event loop" actually be more efficient that one user/process, as there would be less context switching cost from the OS?

    We're particularly interested in apps that are often CPU-bound, so a traditional event-loop would be blocked for long periods of time. A typical solution is to put the work into a thread, so there would still be a context switch, albeit a smaller one.

    The process-per-user approach makes the most sense when a significant amount of the data used by each user does not overlap with other users. VS Code (in client/server mode) is a good example of this -- the overhead of siloing each process is relatively low compared to the benefits it gives. We think more data-heavy apps will make the same trade-offs.

    > Can I just keep a map of (connection, thread_id) on my server, and spawn one thread per user on my own server?

    If you don't have to scale beyond one server, this approach works fine, but it makes scaling horizontally complicated because you suddenly can't just use a plain old load balancer. It's not just about routing requests to the right server; deciding which server to run the threads on becomes complicated because you ideally want to decide based on the server load of each. We started going down this path, realized we'd end up re-inventing Kubernetes, so decided to embrace it instead.

    > Could I just load up my server with many cores, and give each user a SQLite database which runs each query in its own thread? This way a multi GB database would not be loaded into RAM, the query would filter it down to a result set.

    If, for a particular use case, it's economical to keep the data ready in a database that supports the query pattern users will make, it's probably not a good fit for a session-lived backend. In database terms, where our architecture makes sense is when you need to create an index on a dataset (or subset of a dataset) during the runtime of an application. For example, if you have thousands of large parquet files in blob storage and you want a user to be able to load one and run [Falcon](https://github.com/vega/falcon)-type analysis on it.

proposal-arraybuffer-base64

Posts with mentions or reviews of proposal-arraybuffer-base64. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-08.
  • Updates from the 100th TC39 meeting
    13 projects | dev.to | 8 Feb 2024
    Uint8Array to/from Base64: Uint8Array<->base64/hex.
  • Goodbye, Node.js Buffer
    15 projects | news.ycombinator.com | 24 Oct 2023
    The proposal for native base64 support for Uint8Arrays is mine. I'm glad to see people are interested in using it. (So am I!)

    For a status update, for the last year or two the main blocker has been a conflict between a desire to have streaming support and a desire to keep the API small and simple. That's now resolved [1] by dropping streaming support, assuming I can demonstrate a reasonably efficient streaming implementation on top of the one-shot implementation, which won't be hard unless "reasonably efficient" means "with zero copies", in which case we'll need to keep arguing about it.

    I've also been working on documenting [2] the differences between various base64 implementations in other languages and in JS libraries to ensure we have a decent picture of the landscape when designing this.

    With luck, I hope to advance the proposal to stage 3 ("ready for implementations") within the next two meetings of TC39 - so either next month or January. Realistically it will probably take a little longer than that, and of course implementations take a while. But it's moving along.

    [1] https://github.com/tc39/proposal-arraybuffer-base64/issues/1...

    [2] https://gist.github.com/bakkot/16cae276209da91b652c2cb3f612a...

  • Base64 Encoding, Explained
    3 projects | news.ycombinator.com | 23 Oct 2023
    There's some additional interesting details, and a surprising amount of variation in those details, once you start really digging into things.

    If the length of your input data isn't exactly a multiple of 3 bytes, then encoding it will use either 2 or 3 base64 characters to encode the final 1 or 2 bytes. Since each base64 character is 6 bits, this means you'll be using either 12 or 18 bits to represent 8 or 16 bytes. Which means you have an extra 4 or 2 bits which don't encode anything.

    In the RFC, encoders are required to set those bits to 0, but decoders only "MAY" choose to reject input which does not have those set to 0. In practice, nothing rejects those by default, and as far as I know only Ruby, Rust, and Go allow you to fail on such inputs - Python has a "validate" option, but it doesn't validate those bits.

    The other major difference is in handling of whitespace and other non-base64 characters. A surprising number of implementations, including Python, allow arbitrary characters in the input, and silently ignore them. That's a problem if you get the alphabet wrong - for example, in Python `base64.standard_b64decode(base64.urlsafe_b64encode(b'\xFF\xFE\xFD\xFC'))` will silently give you the wrong output, rather than an error. Ouch!

    Another fun fact is that Ruby's base64 encoder will put linebreaks every 60 characters, which is a wild choice because no standard encoding requires lines that short except PEM, but PEM requires _exactly_ 64 characters per line.

    I have a writeup of some of the differences among programming languages and some JavaScript libraries here [1], because I'm working on getting a better base64 added to JS [2].

    [1] https://gist.github.com/bakkot/16cae276209da91b652c2cb3f612a...

    [2] https://github.com/tc39/proposal-arraybuffer-base64

  • Updates from the 96th TC39 meeting
    5 projects | dev.to | 18 May 2023
    Base64 for Uint8Array:ArrayBuffer to/from Base64
  • Updates from the 84th meeting of TC39
    3 projects | dev.to | 14 Jul 2021
    ArrayBuffer to/from base64: ArrayBuffer <-> base64 string functions.

What are some alternatives?

When comparing falcon and proposal-arraybuffer-base64 you can also consider the following projects:

stateroom - A lightweight framework for building WebSocket-based application backends.

nodejs-polars - nodejs front-end of polars

proposal-intl-numberformat-v3 - Additional features for Intl.NumberFormat to solve key pain points.

streams - Streams Standard

proposal-array-from-async - Draft specification for a proposed Array.fromAsync method in JavaScript.

proposal-zero-copy-arraybuffer-list - A proposal for zero-copy ArrayBuffer lists

proposal-async-iterator-helpers - Methods for working with async iterators in ECMAScript

spawner - Session backend orchestrator for ambitious browser-based apps. [Moved to: https://github.com/drifting-in-space/plane]

excel_97_egg - A web port of the magic carpet simulator hidden within Microsoft Excel 97

Sandstorm - Sandstorm is a self-hostable web productivity suite. It's implemented as a security-hardened web app package manager.

proposal-regexp-atomic-operators