Data Structures
- Julia Collections organization
- Julia ArbTypes organization
- Youtube: The State of the Type System at JuliaCon 2017 by Jeff Bezanson
- Youtube: The Unreasonable Effectiveness of Multiple Dispatch at JuliaCon 2019 by Stefan Karpinski
- A more thorough look at Julia's double colon syntax
General data structures¶
- JuliaAudio/RingBuffers.jl : A simple non-allocating circular RingBuffer type, with configurable overflow and underflow handling.
- JuliaCollections/DataStructures.jl : Julia implementation of Data structures.
- noahbenson/Air.jl : an immutable data structure and software transactional memory tool for Julia.
- tkoolen/TypeSortedCollections.jl : It provides the
TypeSortedCollection
type, which can be used to store type-heterogeneous data in a way that allows operations on the data to be performed in a type-stable manner. - rafaqz/Interfaces.jl : Macros to define and implement interfaces, to ensure they are checked and correct. JuliaCon 2024 video
Function object¶
- JuliaCollections/FunctionalCollections.jl : Functional and and persistent data structures for Julia.
Result types¶
- iamed2/ResultTypes.jl : A Result type for returning a value or an error in a type-stable manner without throwing an exception.
- jakobnissen/ErrorTypes.jl : A simple implementation of Rust-like error handling in Julia.
Text / string data type¶
- JuliaComputing/FixedSizeStrings.jl : A type for efficiently storing short strings of known size.
- JuliaData/WeakRefStrings.jl : a minimal String type for Julia that allows for efficient string representation and transfer.
- JuliaInterop/VersionParsing.jl : flexible VersionNumber parsing in Julia.
- JuliaIO/Formatting.jl : A Julia package to provide Python-like formatting support.
- JuliaString/Format.jl : This Julia package provides C and Python-style types and functions formatting support.
- JuliaString/ShortStrings.jl : A fast and efficient string format implementation for storing strings of size less than 15 bytes.
- JuliaString/StringLiterals.jl : Implement improved string literals with Swift-style syntax for interpolation, hex, & unicode characters, plus C & Python style formatting and Unicode, HTML, LaTeX, and Emoji entities.
- matthieugomez/StringDistances.jl : String Distances in Julia.
- stevengj/LaTeXStrings.jl : This is a small package to make it easier to type LaTeX equations in string literals in the Julia language.
i18n-L10n and unicode tools¶
- Julia-i18n/Gettext.jl : An interface to the gettext internationalization/translation interface.
- JuliaStrings/ICU.jl : Julia wrapper for the International Components for Unicode (ICU) libraries.
Graph data types¶
See the graph theory section.
Numeric data types¶
- cjdoris/Infinity.jl : Representation of infinity in Julia.
- JuliaArrays/CustomUnitRanges.jl : This Julia package supports the creation of array types with "unconventional" indices.
- JuliaGeometry/Quaternions.jl : Quaternions, octonions and dual-quaternions for 3D rotational orientation.
- JuliaGraphics/Measures.jl : Unified measure and coordinates types.
- JuliaMath/FixedPointNumbers.jl : This library exports fixed-point number types.
- PainterQubits/Unitful.jl : A Julia package for physical units.
- rfourquet/BitIntegers.jl : This package implements fixed-width integer types similar to standard builtin-ones like Int or UInt128.
- SymbolicML/DynamicQuantities.jl : Lightweight and fast physical quantities in Julia.
- timholy/Ratios.jl : Faster Rational-like types for Julia at the risk of greater risk of overflow.
Intervals¶
- baggepinnen/MonteCarloMeasurements.jl : Error propagation using Monte-Carlo simulation. Similar to
Measurements.jl
, but more accurate for highly nonlinear functions at the expense of longer execution time. - juliaintervals/intervalarithmetic.jl : Rigorous floating-point calculations using interval arithmetic in Julia.
- JuliaPhysics/Measurements.jl : Error propagation calculator and library. It supports real and complex numbers with uncertainty, arbitrary precision calculations, and operations with arrays.
Floating-point numbers¶
- cjdoris/LogarithmicNumbers.jl : A logarithmic number system for Julia. Provides the signed
ULogarithmic
and unsignedLogarithmic
types for representing real numbers on a logarithmic scale. - JeffreySarnoff/ArbNumerics.jl : extended precision math, accurate and performant
- JuliaMath/BFloat16s.jl : This package defines the BFloat16 data type. The only currently available hardware implementation of this datatype are Google's Cloud TPUs.
- JuliaMath/DecFP.jl : The package provides 32-bit, 64-bit, and 128-bit binary-encoded decimal floating-point types following the IEEE 754-2008, implemented as a wrapper around the (BSD-licensed) Intel Decimal Floating-Point Math Library.
- JuliaMath/Decimals.jl : Pure Julia decimal arithmetic library.
- JuliaMath/DoubleFloats.jl : Numbers with 85 accurate bits.
Array types¶
See the mathematics section.
Composite Data Types¶
Wikipedia: Composite Data Types
Base.@kwdef
: a concise struct construction in the Julia base.
- andyferris/Dictionaries.jl : An alternative interface for dictionaries in Julia, for improved productivity and performance.
- charleskawczynski/DispatchedTuples.jl :
Dispatched Tuples
are like immutable dictionaries (so, they're technically more likeNamedTuples
) except that the keys are instances of types. Also, because DispatchedTuples are backed by tuples, they are GPU-friendly. - jonniedie/ConcreteStructs.jl :
@concrete
can be used to make non-concrete structs concrete without the boilerplate of adding type parameters. - mauro3/SimpleTraits.jl : Simple Traits for Julia
- scheinerman/Bijections.jl : Bijection datatype for Julia that blocks assigning the same value to two different keys.
- synchronoustechnologies/TypeParams.jl : keeping compile-time type information in
struct
for better performance.
Accessing elements¶
- devmotion/SimpleUnPack.jl : Lightweight Julia macro for destructuring properties and fields. (Requires Julia >= 1.7)
- JuliaObjects/Accessors.jl : updating immutable data simple. It is the successor of jw3126/Setfield.jl.
- mauro3/Parameters.jl : Types with default field values, keyword constructors and (un-)pack macros.
- mauro3/UnPack.jl :
@unpack
some or all of the fields of a type, and@pack
, in the case of mutable data types.