ShellRS
ShellRS 是一款免費、開源的 SSH 客戶端,使用 Rust 編寫:主機管理、終端機、WinSCP 風格的 SFTP 與埠轉發,全部於一個 GPU 渲染視窗中,支援 macOS、Windows 與 Linux。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Chez Scheme bindings for libuv (R6RS)
翻譯準備中
正在載入完整 README。
檢視完整 README ↗R6RS bindings to [[https://libuv.org][libuv]] for Chez Scheme: an event loop, TCP, timers, DNS, child processes, pipes and signals.
#+begin_quote ✨ AI Disclosure: LLMs are used extensively in the planning and development of this project. #+end_quote
⚠ This is not a web server.
You can use this to /build/ a server like [[https://github.com/Kiyomi-Computation-Systems/chez-http-server][chez-http-server]], or anything that needs async I/O using libuv.
It is a thin, legible mirror of libuv. The API follows libuv's own verbs
(accept, read-start, write, shutdown, timer, getaddrinfo,
spawn, close) closely.
It is transport only. It parses nothing, only understands raw bytes, and has no connection-state or backpressure policy of its own. Those belong to layers built on top of it.
| Module | Binds |
|-------------------+------------------------------------------------------------------|
| (libuv) | Everything below, the condition types and the version queries |
| (libuv loop) | Loops: run, stop, the cached clock, close and teardown |
| (libuv handle) | What every handle shares, and TCP and pipe socket buffer sizes |
| (libuv timer) | One-shot and repeating timers |
| (libuv tcp) | Bind, listen, accept, connect, nodelay, keepalive, addresses |
| (libuv stream) | Reads with backpressure, scalar and vectored writes, shutdown |
| (libuv pipe) | Pipes for child-process stdio |
| (libuv process) | Child processes with libuv's full stdio vocabulary, and kill |
| (libuv signal) | Signal watching, continuous or one-shot |
| (libuv async) | Waking a loop from another thread |
| (libuv dns) | getaddrinfo, getnameinfo and cancellation |
There is no filesystem API, no UDP and no zero-copy I/O. Linux and macOS are supported; Windows is not.
#+begin_src sh git clone --recursive https://github.com/Kiyomi-Computation-Systems/chez-libuv.git cd chez-libuv make build #+end_src
make build compiles the small C shim and generates
src/libuv/private/config.sls, which records absolute paths for /this/
machine. That file is not in the repository, so every clone runs
make build once before (import (libuv)) resolves. Run it again after
every upgrade: a shim built from older sources fails the import with
&uv-shim-unavailable. make help lists every target, and
[[file:docs/building.md][docs/building.md]] covers acquisition paths,
CHEZ_LIBUV_SHIM and release builds.
The shim and config.sls are per-machine build products, so a copy of
the sources alone cannot load. A project that depends on chez-libuv
through Akku gets them from its install hook, scripts/akku-install,
which akku install runs before it installs the libraries: it builds a
release shim into the project's .akku/ffi against the libuv pkg-config
finds, and writes config.sls naming it.
[[file:docs/installing.md#akku][docs/installing.md]] has the lines a
project's Akku.manifest needs to run it, and what each failure says. Akku
also manages the test suites' Scheme dependency (chez-srfi); (libuv)
itself depends on nothing beyond (rnrs).
Chez needs src on its library path:
#+begin_src sh CHEZSCHEMELIBDIRS=src chez --program your-script.sps #+end_src
make dev starts a REPL with everything wired.
#+begin_src scheme (import (rnrs) (libuv))
(define loop (make-uv-loop)) (define timer (make-uv-timer loop)) (define fires 0)
(uv-timer-start! timer (lambda (t) ; the callback receives the timer (set! fires (+ fires 1)) (display "tick\n") (when (= fires 3) (uv-timer-stop! t) (uv-close! t))) 0 100) ; first fire now, then every 100 ms
(uv-run loop 'default) ; callbacks run here and nowhere else (uv-loop-teardown! loop) #+end_src
[[file:docs/quickstart.md][docs/quickstart.md]] walks through an echo server and client on one loop, and the three rules every program here depends on.
make test runs the default suites; the root-only and threading-stress
suites have targets of their own (make help). On Linux,
make HAVE_PKG=no test-memory runs the suites under Valgrind, which is
the memory gate; on macOS the same target uses AddressSanitizer, which
checks addresses but not leaks. On a Guix host, scripts/guix-env make test
runs them in a pinned container. CI runs on Linux; macOS is tested locally.
[[file:docs/building.md][docs/building.md]] describes each gate, and
[[file:CONTRIBUTING.md][CONTRIBUTING.md]] the test discipline.
The guides start at [[file:docs/README.md][docs/README.md]]. make site
renders them into build/site/, the pages published on GitHub Pages.
| [[file:docs/installing.md][Installing]] | What you need, building the shim, importing (libuv) |
| [[file:docs/quickstart.md][Quickstart]] | An echo server start to finish, and the rules that make it work |
| [[file:docs/loops.md][The event loop]] | Making, running, stopping and tearing down a loop |
| [[file:docs/callbacks.md][Callbacks]] | What a callback may do, raises, escapes and engines |
| [[file:docs/threads.md][Threads]] | One thread per loop, handing a loop over, async wakeups |
| [[file:docs/timers.md][Timers]] | One-shot and repeating timers |
| [[file:docs/tcp.md][TCP and streams]] | Listening, connecting, reading and writing |
| [[file:docs/flow-control.md][Flow control]] | Buffers, the write queue, pausing reads |
| [[file:docs/processes.md][Processes and pipes]] | Running a child and talking to it |
| [[file:docs/signals.md][Signals]] | Catching signals on the loop |
| [[file:docs/dns.md][DNS]] | Names to addresses and back |
| [[file:docs/errors.md][Errors]] | Every condition the library raises |
| [[file:docs/reference.md][API reference]] | Every exported binding, checked against the source |
| [[file:docs/building.md][Building and testing]] | Acquisition paths, release builds, test gates, the docs site |
| [[file:CHANGELOG.md][CHANGELOG]] | Per-release history |
See [[file:CONTRIBUTING.md][CONTRIBUTING.md]] for the build and test workflow, and [[file:SECURITY.md][SECURITY.md]] for reporting vulnerabilities privately.
BSD 3-Clause; see [[file:LICENSE][LICENSE]]. Third-party components and their licenses are listed in [[file:NOTICE][NOTICE]].
© [[https://kiyomicomputation.systems/][Kiyomi Computation Systems LLC]], all rights reserved.