locutusjs / locutus
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
Package info
Language:TypeScript
pkg:composer/locutusjs/locutus
Requires
- php: >=8.0
This package is not auto-updated.
Last update: 2026-03-07 23:22:02 UTC
README
All your standard libraries will be assimilated into our
JavaScriptTypeScript collective. Resistance is futile.
Locutus is ~500 TypeScript implementations of standard library functions from PHP, Go, Python, Ruby, C, and more. Each function is individually importable and tree-shakeable.
Most of these started as rainy Sunday afternoon puzzles. Some are genuinely useful. Some are just fun to write. All of them are a way to learn how different languages solve the same problems.
Scope
Locutus ports function behavior, not foreign runtime baggage. We reimplement standard-library semantics in TypeScript, but keep API boundaries JavaScript-native.
That means we do not recreate alien language data structures or object models in Locutus APIs (for example: Go slices/maps, Python tuples/bytes, Ruby symbols, C structs/pointers, Perl refs).
Historic exception: for PHP compatibility, plain JS objects may be treated as associative arrays when locutus.objectsAsArrays is enabled.
Example: a Go date-formatting port in Locutus should accept a JavaScript Date and return a string, not a custom Go time.Time object.
Install
npm install locutus
Locutus uses pragmatic versioning: patch is the default even for function-level parity fixes; see
CONTRIBUTING.md#versioning for exact bump criteria.
Use
import { sprintf } from 'locutus/php/strings/sprintf' const effectiveness = 'futile' console.log(sprintf('Resistance is %s', effectiveness)) // Resistance is futile
import { Contains } from 'locutus/golang/strings/Contains' console.log(Contains('Locutus', 'cut')) // true
Browser Compatibility (Copy-Paste Snippets)
Code shown on function pages (Module JS / Standalone JS) targets:
baseline widely available with downstream
Package runtime targets:
- Node:
engines.node >= 22 - Published dist output (
dist/CommonJS +dist/esmESM):ES2022
If your application targets older browsers, treat Locutus snippets like normal application code:
- transpile to your target (for example with TypeScript, Babel, SWC, or esbuild)
- add required polyfills for missing APIs in your environment
- validate with your own Browserslist target and browser test matrix
Locutus does not inject polyfills into copy-paste snippets by default.
Development
Some guidelines and instructions can be found in CONTRIBUTING.md
Quick commands:
yarn check- format + lint + testyarn test:parity- cross-language verificationyarn test- full test suiteyarn lint- Biome checkyarn fix:biome- auto-fix
License
MIT, except for src/php/bc/ and src/php/_helpers/_bc.js which are LGPL-2.1 (derived from PHP's bcmath/Libbcmath). See LICENSE for details.