Skip to content

Instantly share code, notes, and snippets.

View artempyanykh's full-sized avatar

Artem Pianykh artempyanykh

View GitHub Profile
@artempyanykh
artempyanykh / JLambda.java
Last active December 26, 2023 12:42
Untyped lambda calculus in Java 21 + preview
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
sealed interface Expr permits Var, Lam, App {
default Set<String> freeVars() {
return switch (this) {
case Var(var name) -> Set.of(name);
case Lam(var bound, var body) -> {
var vars = new HashSet<>(body.freeVars());
@artempyanykh
artempyanykh / vec.fs
Created November 12, 2023 23:21
F# custom operators
type Vec =
{ x: float
y: float
z: float }
static member (+)(v1, v2) = { x = v1.x + v2.x; y = v1.y + v2.y; z = v1.z + v2.z }
static member (*)(factor, v2) = { x = factor + v2.x; y = factor + v2.y; z = factor + v2.z }
let test (v1: Vec) (v2: Vec) =
let factorSum = 1.0 + 2.5
@artempyanykh
artempyanykh / mmap_on_aarch64.org
Last active February 20, 2019 12:28
Memory mapping with RWX prot on aarch64

Memory mapping on aarch64

System information:

lscpu
echo "================================================="
cat /proc/cpuinfo
Architecture:        aarch64
import java.lang.management.ManagementFactory
import java.util.concurrent.ThreadPoolExecutor
import scalaz.zio.RTS
//import scalaz.zio.IO
object TheadPoolTestApp {
def main(args: Array[String]): Unit = {
val rts = new RTS {}
val pool = rts.threadPool.asInstanceOf[ThreadPoolExecutor]
@artempyanykh
artempyanykh / CMakeLists.txt
Created September 27, 2018 19:23
CMake config for OpenJDK Hotspot (+/- complete)
cmake_minimum_required(VERSION 3.12)
project(jdk)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++98 -DASSERT -D_GNU_SOURCE -D_REENTRANT -DLINUX -DVM_LITTLE_ENDIAN -D_LP64 -DTARGET_ARCH_x86 -DINCLUDE_SUFFIX_OS=_linux -DINCLUDE_SUFFIX_CPU=_x86 -DINCLUDE_SUFFIX_COMPILER=_gcc -DTARGET_COMPILER_gcc -DAMD64 -DHOTSPOT_LIB_ARCH='amd64' -DCOMPILER1 -DCOMPILER2")
include_directories(
src/hotspot/cpu/x86
src/hotspot/os/linux
@artempyanykh
artempyanykh / scalaz-ringbuffer-README.md
Created July 17, 2018 21:27
Scalaz RingBuffer project description

Scalaz RingBuffer

Goal

Scalaz RingBuffer adds a high-performance low-latency multi-producer/multi-consumer task queue to RTS for faster and smarter concurrency in ZIO.

Introduction & Highlights

ZIO RTS runs on a thread pool executor backed by LinkedBlockingQueue. This has the following consequences:

  1. Performance and latency are inhibited because: a) waiting on locks cause threads to be de-scheduled, b) traversing a linked list is not cache-friendly.
  2. Optimizations to Fiber cooperative multi-tasking strategy is limited because the thread pool doesn't expose any metrics on its queue remaining capacity\processing times.