Read and write files atomically and reliably.
Node.js module to perform synchronous syscalls
This is the **x86_64-unknown-linux-musl** binary for `@tailwindcss/oxide`
Native bindings for Rollup
Native bindings for Rollup
This is the **x86_64-unknown-linux-gnu** binary for `@tailwindcss/oxide`
Super-fast alternative for babel
Super-fast alternative for babel
This is the **x86_64-unknown-linux-gnu** binary for `@next/swc`
Prebuilt sharp for use with Linux (glibc) x64
Canvas for Node.js with skia backend
This is the **linux-x64-musl** binary for `@next/swc`
UnRS Resolver Node API
UnRS Resolver Node API
Fast JavaScript/TypeScript bundler in Rust with Rollup-compatible API.
Fast JavaScript/TypeScript bundler in Rust with Rollup-compatible API.
Canvas for Node.js with skia backend
The linux x64 distribution of the Sentry CLI binary.
Oxc Resolver Node API
Native bindings for Rollup
This is the **linux-arm64-gnu** binary for `@next/swc`
Oxc Parser Node API
👷 workerd for Linux 64-bit, Cloudflare's JavaScript/Wasm Runtime
https://linux.die.net/man/2/nice binding for Node.js
Linux syscall macros
A library to easily invoke linux system calls.
Linux syscalls for Celer
The splice family of Linux system calls can transfer data between file descriptors without the need to copy data into userspace. Instead of a userspace buffer, they rely on an ordinary Unix pipe as a kernel-level buffer. The `splice' and `tee' syscalls are also provided by the {sleepy_penguin}[https://yhbt.net/sleepy_penguin/] library. "io_splice" remains maintained for old applications or users experimenting with the vmsplice syscalls
= Cirron Cirron measures a piece of Ruby code and reports back several performance counters: CPU instruction count, branch misses, page faults and time spent measuring. It uses the Linux perf events interface or @ibireme's KPC demo[https://gist.github.com/ibireme/173517c208c7dc333ba962c1f0d67d12] on OSX. It can also trace syscalls using +strace+, Linux only! == Prerequisites - Linux with perf events support / Apple ARM OSX - C++ - Ruby 3.x == Usage === Performance Counters $ sudo irb irb(main):001> require 'cirron' => true irb(main):002* c = Cirron::collector do irb(main):003* puts "Hello" irb(main):004> end Hello => Counter(time_enabled_ns: 110260, instruction_count: 15406, branch_misses: 525, page_faults: 0) === Tracing Syscalls $ sudo irb irb> require 'cirron' => true irb> trace = Cirron::tracer do irb> # Your code here irb> puts "Hello" irb> end => [#<Syscall:0x00007c6c1a4b3608 @args="1, [{iov_base=\"Hello\", iov_len=5}, {iov_base=\"\\n\", iov_len=1}], 2", @duration="0.000201", @name="writev", @pid="2261962", @retval="6", @timestamp="1720285300.334976">] # Save the trace for ingesting to Perfetto irb> File.write("/tmp/trace", Cirron::to_tef(trace)) => 267 === Tampering with Syscalls Available tampering actions are: error: Inject a fault with the specified errno. retval: Inject a success with the specified return value. signal: Deliver the specified signal on syscall entry. delay_enter: Delay syscall entry by the specified time. delay_exit: Delay syscall exit by the specified time. poke_enter: Modify memory at argN on syscall entry. poke_exit: Modify memory at argN on syscall exit. syscall: Inject a different syscall instead. The when argument can be used to specify when to perform the tampering. See the Tampering section of the [strace manual page](https://man7.org/linux/man-pages/man1/strace.1.html) for more detailed explanaition of the arguments. ``` $ sudo irb irb> require 'cirron' irb> injector = Cirron.injector irb> injector.inject("openat", "error", "ENOSPC") irb> injector.inject("openat", "delay_enter", "1s", when_condition="2+2") irb> injector.run do irb> # Open now fails with "No space left on device" and every irb> # other call to `openat` will be delayed by 1s. irb> File.open("test.txt", "w") irb> end ``` == Additional Information For more detailed information, please visit the project's GitHub page: https://github.com/s7nfo/Cirron
Wraps the Linux TCP_USER_TIMEOUT (and optional SO_KEEPALIVE) socket options behind a fiber-safe block API. Sockets opened inside the block inherit a deadline the kernel itself enforces — Ruby threads parked in blocking syscalls that Thread#kill and Timeout.timeout cannot interrupt are released when the kernel drops the connection. No-op on macOS and other non-Linux platforms.
No description provided.
No description provided.
No description provided.