Just a dude who loves writing (and talking about) software.
- CEO of Monash DeepNeuron for 2023/2024
- Third year student at Monash University
- Interested in language design, compilers/interpreters and game dev.
- Current work:
- Noteworthy work:
A library of general purpose types, classes, functions, algorithms, utilities and other components for C++.
Home Page: https://oraqlle.github.io/cortexlib/
License: MIT License
Just a dude who loves writing (and talking about) software.
Support a layout and accessor members for matrix that dictate the memory layout and accessing rules for the structure, similar to std::mdspan
.
A view over contiguous data (like std::span) but allows for all of boxes operations on that data as if it were a box. Operators and maps can then return a view of the modified data without changing it initially. Might add better composability to box operations.
The transformation methods box::add
are redundant due to box::map
. Map provides a more generic and controllable way for notation transformations on a box.
Complete re-write of documentation for all components, libraries etc.
Find a good doc generation tool
A factory function that creates a function that memoizes the result according to the input parameters
I multidimensional owning data structure
Remove element-wise operator overloads in favor of using operators as verbs, similar to how array-notational languages work.
auto sum = std::plus{} / bx ///< folds left
auto nbx = bx / 3; ///< element-wise division by 3
A allocator library offering more robust ways to manage memory allocation.
A constructor that takes the dimensions of another box and constructs a new box of the given size.
Use pairs and (with C++23) multi-arg slicing ops to get better slicing control.
e.g.
bx[{1, 4}, {2, 4}] ///< gets slice from points to point
Create pretty printer for box in the details
namespace.
Uses bars
| 1, 2, 3 |
| 4, 5, 6 |
| 7, 8, 9 |
Match expression for usage with std::variant
Support formatted string output with libfmt/std::format
Clang doesn't like gcc's implementation of std::ranges yet as it hasn't finished reducing the need for typename
causing compile issues. This could be resolved by using different standard algorithms so we can build against clang as well. Removing the header might also work.
Currently we can only build against C++20. Better use of macros can help to allow use to build with lower C++ standards. Hopefully even as low as C++11 (but I want C++17 at least).
Currently operators are spaghetti-ed throughout the libraries and this makes it hard for standardese to categorise the operators. Using document groupings could help this.
The current implementation of box::slice
and box:::operator[]
(slicing operator) currently don't have both const
and non-const qualified versions. When called on a const
box object, this discards qualifiers. A const
qualified version should be added for box::operator[]
and a non-const for box::slice
.
/// Non-const slice
constexpr auto
slice(size_type ridx) /* no const */
-> std::span<value_type>
{
if (ridx >= m_rows)
throw std::out_of_range("box::slice - row index out of range");
return std::span<value_type>{
_M_data_ptr(m_start) + ridx * m_columns,
m_columns
};
}
/// `const` operator[]
constexpr auto
operator[](size_type ridx) const ///< `const` added here
-> std::span<value_type>
{ return slice(ridx); }
Create methods that access ranges of the box (columns, rows, sub-columns and sub-rows).
Ranges can be lazy.
Could be done with slicing.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.