Skip to content
View orxfun's full-sized avatar

Block or report orxfun

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
orxfun/README.md

Hi, I'm Uğur Arıkan

👋 𝙰𝚋𝚘𝚞𝚝 𝙼𝚎

Operations Research, optimization, algorithms, systems design. like programming languages. love rust.

🤟 I like

All things OR, optimization, networks, routing, algorithms, multi objective decision making.

Programming, algorithms, data structures, speed, efficiency and recently concurrency.

And I like programming languages:

  • rust ❤️ every day
  • c#, react, typescript 👍 often
  • go, f# 👌🏽 zig, nim 🤔 watching

🎈 𝙸'𝚖 currently 𝚞𝚙 𝚝𝚘

mathematical programming / modeling

An expressive, efficient and productive mathematical programming / modeling crate for rust.

  • macro-free and concise api which does not require more lines than model-on-paper has
  • simple, solver agnostic, immutable, type safe
  • with a separation of model and data, and hence, enable abstraction over inputs
  • with reusable & composable model components
  • below is a demo of my attempt in C# and here is the documentation

concurrent programming and parallel processing

Working more and more on concurrent programming and parallel processing in rust. One thing lead to another, and I got more and more interested:

  • Started with defining the PinnedVec trait and its implementations such as the SplitVec and FixedVec. A pinned vector is a vector which keeps its elements pinned in their memory locations.
  • Turns out this feature is very useful in defining concurrent collections such as ConcurrentVec, ConcurrentBag or ConcurrentOrderedBag.
  • On the counterpart of the concurrent collections, ConcurrentIter allows concurrent iterations.
  • Having concurrent readers and concurrent writers, we can have a simple and performant parallel iterator Par.

self referential collections

Working on convenient and efficient self referential collections.

  • Such collections are often used as core data structures for algorithms.
  • The goal is to define sort of a core construct which would make it convenient to build and generate variants. SelfRefCol aims to fulfil this goal defining the collection variants and handling most of the work in providing safe and efficient storage where elements are referencing other elements.
  • As it is the most simplest of them, worked on the linked list which turned out to be very efficient.
  • Efficient & flexible trees 🌴 and graphs are the next steps.

also

  • working on efficient data structures as I need in algorithms, such as PriorityQueue trait and efficient d-ary heap implementations.
  • and whenever I have time, I am trying some experimental ideas such as Closure and FunVec.

Mathematical Modeling Demo

knapsack

mathematical modeling in action 🔎

knapsack

Pinned Loading

  1. orx-priority-queue orx-priority-queue Public

    Priority queue traits and efficient d-ary heap implementations.

    Rust 3 1

  2. orx-linked-list orx-linked-list Public

    A linked list implementation with unique features and an extended list of constant time methods providing high performance traversals and mutations.

    Rust 6

  3. orx-split-vec orx-split-vec Public

    An efficient constant access time vector with dynamic capacity and pinned elements.

    Rust 2 2

  4. orx-concurrent-iter orx-concurrent-iter Public

    A thread-safe, ergonomic and lightweight concurrent iterator trait and efficient implementations.

    Rust 2

  5. orx-parallel orx-parallel Public

    A performant and configurable parallel computing library for computations defined as compositions of iterator methods.

    Rust 2

  6. orx-concurrent-vec orx-concurrent-vec Public

    A thread-safe, efficient and lock-free vector allowing concurrent grow, read and update operations.

    Rust 2