Skip to content

okuoku/yuni

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f82d9d5 · Aug 28, 2024
May 23, 2020
Jul 25, 2022
Dec 31, 2023
Feb 17, 2022
Mar 20, 2018
Aug 28, 2024
Aug 13, 2017
Jan 21, 2024
Aug 7, 2024
Aug 28, 2024
Mar 3, 2019
Aug 7, 2024
Jan 20, 2024
Jun 3, 2017
Aug 27, 2022
Aug 11, 2016
Aug 12, 2024
Dec 31, 2023
Jun 21, 2020
May 19, 2018

Repository files navigation

yuni

R7RS/R6RS/Generic Scheme portability platform

yuni is a portability layer for Scheme applications that would allow to run single program/library on various Scheme implementations (with some limitations). It's under development; still USELESS for most people.

Libraries

  • (yuni scheme) - Subset of R7RS base library, also available on R6RS.
  • (yuni core) - Basic structure and typing
  • (yuni ffi *) - Static binding FFI (under construction)

Language Features and Limitations

In short, yuni provides subset of R6RS library loader and subset of R7RS base libraries. On the other hand, Yuni does not try to fill implementation limitations.

See also: Basic library sample

Features

  • Common: Minimalistic common FFI implementation (TBD)
  • For R6RS: R7RS base libraries including SRFI-46 syntax-rules
  • For R7RS: R6RS-lite library loader that can convert R6RS library form into load or define-library form (if supported)
  • For Generic Scheme with define-macro: R7RS base libraries and non-hygienic syntax-rules and library implementation

Limitations

Yuni is NOT designed for writing any benchmarks. Library wrapper can kill some form of optimizations which can be critical for performance.

See also: SIBR is Yuni's collection of Scheme implementation behaviour reports

  • FFI implementation is incomplete
  • No rename on library form, especially Generic Scheme does not support renaming syntax such as let or define
  • Some Scheme might not have R6RS/R7RS features; such as full numeric-tower, tail-calls, eval, etc

Getting Started

(Not ready yet.)

Implementations

See also: PortingNotes

Implementations with FFI compatibility layer:

Bootstrapped, but no FFI yet:

(Support was temporally removed for now):

License

Public domain (CC0-1.0). Yuni R6RS/R7RS runtime component is released into public domain by the author. See COPYING.CC0 for full license text.

Yuni generic scheme support includes syntax-rules implementation from Chibi-scheme.

NOTE: Following directories contain copyrighted materials from other projects.

  • apidata
  • external
  • integration
  • tests

These directories are not part of Yuni runtime library.