PHPackages                             recki-ct/recki-ct - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. recki-ct/recki-ct

AbandonedArchivedProject[Utility &amp; Helpers](/categories/utility)

recki-ct/recki-ct
=================

A Compiler Toolkit for PHP.

5454036[3 issues](https://github.com/google/recki-ct/issues)[1 PRs](https://github.com/google/recki-ct/pulls)PHP

Since Sep 5Pushed 7y ago41 watchersCompare

[ Source](https://github.com/google/recki-ct)[ Packagist](https://packagist.org/packages/recki-ct/recki-ct)[ RSS](/packages/recki-ct-recki-ct/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (5)Used By (0)

Recki-CT
========

[](#recki-ct)

[![Build Status](https://camo.githubusercontent.com/cf9ba33b32426715ad9528d7b0f43caf3ffcf74adfa166b10d26104731efcb62/68747470733a2f2f7472617669732d63692e6f72672f676f6f676c652f7265636b692d63742e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/google/recki-ct)[![Coverage Status](https://camo.githubusercontent.com/c7179f01a1e66af768fe2a69a1cc48a29822b01800a8ecd3193c8ad34dac2097/68747470733a2f2f696d672e736869656c64732e696f2f636f766572616c6c732f676f6f676c652f7265636b692d63742e737667)](https://coveralls.io/r/google/recki-ct?branch=master)

The **Recki Compiler Toolkit** for PHP

Disclaimer: This is not an official Google product.

Warning: This is an incomplete work-in-progress.

Stability
---------

[](#stability)

Recki-CT is **pre-alpha** quality right now. This means that it shouldn't be used in production **at all**.

What Is Recki-CT?
-----------------

[](#what-is-recki-ct)

Recki-CT is a set of tools that implement a compiler for PHP, and is written in PHP!

Specifically, Recki-CT compiles a subset of PHP code. The subset is designed to allow a code base to be statically analyzed. This means that global variables, dynamic variables (variable-variables, variable function calls, etc) and references are not allowed.

### What Isn't Recki-CT?

[](#what-isnt-recki-ct)

Recki-CT is not a re-implementation of PHP. It aims to be a limited subset of the language (one that can be staticly reasoned about).

This means that it is not designed to replace PHP, but instead augment it.

### Why?

[](#why)

PHP itself isn't slow. It's plenty fast enough for most use-cases. As a language, PHP has a lot of corner cases and results in a *really* complex engine implementation. As such, rewriting a new engine isn't going to gain you a lot. The complexity is going to be in there somewhere.

So with Recki-CT, we take a different approach. Rather than rewriting the entire engine, we sit on top of an existing engine. The compiler then can compile PHP code into native machine code which can out-perform most JIT compiled implementations (sometimes by very significant margins).

The designed mode of operation for Recki is as an AOT (Ahead-Of-Time) compiler. Since it uses aggressive analysis and optimizations, runtime compilation would be a inefficient target. Instead, an Intermediate Representation can be cached, leaving only the final conversion to machine code to happen at runtime.

Where can I find out more?
--------------------------

[](#where-can-i-find-out-more)

Check out the documentation!!!

1. [Introduction and FAQ](doc/0_introduction.md)
2. [Installation](doc/1_installation.md)
3. [Basic Operation](doc/2_basic_operation.md)
4. [Types](doc/3_types.md)
5. [Intermediate Representation](doc/4_intermediate_representation.md)

How do I install Recki-CT?
--------------------------

[](#how-do-i-install-recki-ct)

See the [Installation Documentation](doc/1_installation.md).

How do I use Recki-CT?
----------------------

[](#how-do-i-use-recki-ct)

A very simple example:

```
/**
 * @return void
 */
function foo($bar) {}

// Instead of using:
foo($baz);

// Use:
$foo = Jit::JitFu('foo');
$foo($baz);
```

Note that a docblock *must* be present, and must document every parameter type and the return type.

Check out the `examples` folder for more examples!

License
-------

[](#license)

Recki-CT is released under the [Apache-2 License](LICENSE).

Contributing
------------

[](#contributing)

See [CONTRIBUTING.md](CONTRIBUTING.md)

And join the [Google Group](https://groups.google.com/forum/#!forum/recki-ct) mailing list.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity30

Limited adoption so far

Community26

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 89.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/c87a667fe5a109ed083ba784409a76f0a18f30b0a05445fbb8ef5e4520b7a6e1?d=identicon)[ircmaxell](/maintainers/ircmaxell)

![](https://www.gravatar.com/avatar/a53e08d9e444763eaca5611e49ff1403e8e0803a648b6cbd0e3a0d33430a2ff4?d=identicon)[krakjoe](/maintainers/krakjoe)

---

Top Contributors

[![ircmaxell](https://avatars.githubusercontent.com/u/660654?v=4)](https://github.com/ircmaxell "ircmaxell (69 commits)")[![GrahamCampbell](https://avatars.githubusercontent.com/u/2829600?v=4)](https://github.com/GrahamCampbell "GrahamCampbell (2 commits)")[![dave1010](https://avatars.githubusercontent.com/u/50682?v=4)](https://github.com/dave1010 "dave1010 (2 commits)")[![hikari-no-yume](https://avatars.githubusercontent.com/u/579774?v=4)](https://github.com/hikari-no-yume "hikari-no-yume (1 commits)")[![krakjoe](https://avatars.githubusercontent.com/u/2236138?v=4)](https://github.com/krakjoe "krakjoe (1 commits)")[![pborreli](https://avatars.githubusercontent.com/u/77759?v=4)](https://github.com/pborreli "pborreli (1 commits)")[![ralt](https://avatars.githubusercontent.com/u/1016379?v=4)](https://github.com/ralt "ralt (1 commits)")

### Embed Badge

![Health badge](/badges/recki-ct-recki-ct/health.svg)

```
[![Health](https://phpackages.com/badges/recki-ct-recki-ct/health.svg)](https://phpackages.com/packages/recki-ct-recki-ct)
```

###  Alternatives

[voku/php-hooks

A fork of the WordPress filters hook system rolled in to a class to be ported into any PHP-based system

7637.3k3](/packages/voku-php-hooks)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
