Unchained VS barril

Compare Unchained vs barril and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
Unchained barril
5 2
105 36
4.8% -
7.0 7.3
about 1 month ago 13 days ago
Nim Python
- 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.

Unchained

Posts with mentions or reviews of Unchained. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-08-03.
  • GNU Units
    7 projects | news.ycombinator.com | 3 Aug 2023
    Anything with a finite (200 is small even) number of units misses the algebraic structure of the problem mentioned in https://news.ycombinator.com/item?id=36988497 wherein multiplying|dividing two things gives you a (potentially) new unit which implies an open ended "space" of units.

    To be concrete (hah!), in C++ a template meta-type with 12 signed integer parameters (6 numerators & 6 denominators for rational exponents of SI base units) might be one way to model it.

    Unlike C++ template stuff, Nim macros (like Lisp macros) makes metaprogramming more like procedural programming - just against abstract syntax trees. I think that helps to shield some of this type complexity from users, but the documentation README https://github.com/SciNim/Unchained does better job than I can in an HN comment.

    Of course, for unit system conversion, the number of dimensions (6 in SI, 3 in CGS/Gaussian) changes. So, for full generality you need compile-time (if you want static type integration/CT errors) linear algebra over a rational field (at least & conventionally) to project|inverse project. That might be theoretically possible in C++. I would think it very un-fun and unlikely to ever have been done. There's probably a Mathematica package, though.

  • Please Put Units in Names
    12 projects | news.ycombinator.com | 20 Mar 2022
  • Pint: Makes Units Easy -Python
    4 projects | news.ycombinator.com | 4 Sep 2021
  • Atlas, a (hopefully) better engineering IDE
    4 projects | news.ycombinator.com | 10 May 2021
    I've recently written a units library for Nim [0]. It's still WIP, but it's already proven extremely useful for me as a physicist.

    Thanks to Nim's strong type system and metaprogramming features, it allows for a fully compile time design, without any runtime overhead (in form of special unit objects or such things; everything is a `distinct float`).

    In addition Nim's unicode support, the code even looks nice!

    A more complex use case (I can link more if desired): [1]

    [0]: https://github.com/SciNim/Unchained/

    [1]: https://github.com/SciNim/Unchained/tree/master/examples

barril

Posts with mentions or reviews of barril. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-09-04.
  • Pint: Makes Units Easy -Python
    4 projects | news.ycombinator.com | 4 Sep 2021
    Internally the library has a "quantity type", which defines for a given quantity all the given conversions that are valid in the database and a "category" which is used so that you can create subsets of units which you want to consider valid for your application.

    It's helpful in the context that you want to restrict what's valid for such a category (see: https://github.com/ESSS/barril/blob/master/src/barril/units/... for what that means -- think of defining a "cylinder width" as a subset of "length").

    As a note, it's main use-case is NOT doing computations such as dividing/multiplying Scalars (albeit that's supported it does have some caveats -- so, while it also does dimensional analysis, it's really not the core functionality), rather the core functionality is making the conversions based on what's available in the unit database (so, you're not supposed to be creating units out of the unit database, rather, you want to collect input from the units you support and then make your conversions to other units you still support -- think of doing validation of input, converting to values in units expected by the user, defining a unit-system for input, converting to your internal unit-system for actual computation in C/C++, ...).

    So, I guess it depends on what you consider as core for a units library. As I mentioned, it's created for an Oil & Gas use-case -- albeit it's also used in other engineering-related projects -- where the units are all pretty much well mapped in the application and you're worried that you are getting into units you're not expecting and that'd actually be an error.

    p.s.: if you have specific use-cases which don't work as you expect, I suggest contacting the library maintainers -- once that was me, but it's been a while ;)

    p.s.: thanks for letting me know about how to deal with dimensionless units in pint (I wasn't aware of that).

What are some alternatives?

When comparing Unchained and barril you can also consider the following projects:

SI - A header only C++ library that provides type safety and user defined literals for physical units

pint - Laravel Pint is an opinionated PHP code style fixer for minimalists.

mosdepth - fast BAM/CRAM depth calculation for WGS, exome, or targeted sequencing

pint - Operate and manipulate physical quantities in Python

nimbus-eth1 - Nimbus: an Ethereum Execution Client for Resource-Restricted Devices

misura - Python library providing effortless unit handling and currency conversion for scientific and engineering purposes.

nimview - A Nim/Webview based helper to create Desktop/Server applications with Nim/C/C++ and HTML/CSS

quantulum3 - Library for unit extraction - fork of quantulum for python3

zen

transformers - 🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.

phpmnd - PHP Magic Number Detector

TheAlgorithms - All Algorithms implemented in Python