npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

fyrlang

v0.1.4

Published

Fyr: an experimental compiler for IoT applications

Readme

Fyr

Build Status deb package rpm package npm package

Fyr is a modern systems programming language that combines the versatility of C with the ease and safety of application programming languages like Java, Go or TypeScript. Like C/C++, Fyr can be used for low-level hardware-oriented programming and high-level application programming. In contrast to C, the Fyr compiler guarantees memory safety and thread safety at compilation time.

Fyr is designed to implement all tiers of distributed IoT applications, i.e. embedded devices, server-side code and the Web UI. Furthermore, it can be combined with existing C and JavaScript code.

It is currently in early stages of development, so some features are not yet implemented and others could be removed in the future.

Installation

The compiler currently only supports UNIX-like systems, Windows support is planned for a future release.
We are currently working on providing deb and rpm packages hosted on packagecloud. An npm package is available in the standard npm registry. See the home page for more information.
Note: Installation of the npm package requires gcc to be present and working.

Usage

The package comes with the fyrc binary, which can be used to compile Fyr code into C or binary executables. We provide a plugin for Visual Studio Code that currently supports code highlighting. Integration of a language server is currently in progress but depends on some functionality of the compiler that is not yet fully implemented.

Contributing

Contributions by anyone are welcome. You can help by expanding the code, implementing more test cases, or just using the compiler and reporting bugs.

editorconfig

To ensure consistent indentation and encoding, we use the editorconfig framework. It's settings are stored in the .editorconfig file. Many applications support it natively. Please refer to the documentation on how to enable or install it.

API Documentation

The internal compiler API documentation is built using TypeDoc. To build it, run npm run build:doc in a terminal.
It will be hosted on the official documentation page.

Testing

High-level

To test the whole compiler, we have a simple script that tries to compile some test files and run the resulting binaries. It only depends on /bin/bash and date so it should run on most systems. It naively checks the exit codes of the compiler and the binaries and outputs files for which it was not 0.
To check for possible memory leaks we use valgrind. The script works without it but will complain about the missing dependency.
You can invoke it with run_tests.sh.

Unit tests

We are currently in the process of integrating unit tests into the compiler. For this, chai and mocha (+ mocha-typescript) are used. The tests can be run with npm run test or npm run test:watch.

Additionally, istanbul is used to provide test coverage reports. It can be invoked with npm run test:coverage.

To use the unit tests in editors like VS Code, the easiest way is to just run the npm: test:watch task and leave the corresponding terminal open. It will refresh on every file save and output the tests that failed.

Please not that all imports in tests have to be done through the index.ts files (only specify the folder) wherever they are present. Failure to do so will result in errors at runtime.