MCPcopy Create free account
hub / github.com/SaptakBhoumik/Peregrine

github.com/SaptakBhoumik/Peregrine @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
593 symbols 1,192 edges 51 files 27 documented · 5% updated 2y ago★ 1,4394 open issues

Browse by type

Functions 461 Types & classes 132
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

A Blazing-Fast Language for the Blazing-Fast world.

The Peregrine Programming Language

NOTE:-It has been discontinued. Please use mojo

Peregrine is a Compiled, Systems Programming Language, currently under development.

Purpose and intent

Why am I creating this language?

I am creating it to have the simplicity of Python with the efficiency of C.

Goals

  • Ease of use
  • Fast
  • Highly modular
  • Occupies less memory
  • Compiled

How does it work?

You can consider it to be a dialect of python which compiles to clean C++. It will have no garbage collector because it is a system programming language.

Building/compiling Peregrine

Requirements to build from source

Compilation instructions

1) Clone the main branch of https://github.com/peregrine-lang/Peregrine.git

git clone https://github.com/peregrine-lang/Peregrine.git

2) Cd into the directory

cd Peregrine

3) Build it

meson builddir
cd builddir
ninja

This will create the binary of the compiler named ./peregrine.elf in the builddir folder

C++ backend To compile it using the c++ backing just run ./peregrine.elf compile path_to_file.pe .It will create the executable named ./path_to_file. Run it to see the result. Check the can_comp.pe file in the root directory to know what you can do with the c++ backend at this point

JS Backend To use the javascript backend use the following command ./peregrine.elf compile path_to_file.js.pe -js. It will create the javascript file named path_to_file.js. Run the generated javascript using node path_to_file.js. Check the can_comp.js.pe file in the root directory to know what you can do with the js backend at this point

Progress

Currently we are working on the codegen and some Peregrine programs are working

Example

Here is a small example for you to understand:

def fib(n:int) -> int :
    if n <= 0:
        return 1
    return fib(n-1) + fib(n-2)

def main():
    count:int = 0
    res:int = 0

    while count < 40:
        res = fib(count)
        count++

The main function is the entry point for the program.

Have questions?

Cool, you can contact me via mail.

Email: saptakbhoumik@gmail.com

Discord : https://discord.gg/CAMgzwDJDM

Want to contribute?

Great, go ahead and make the changes you want, then submit a new pull request

Take a look at the open issues to find a mission that resonates with you.

Please check CONTRIBUTING.md to learn how you can contribute.

License

The Peregrine compiler is licensed under the Mozilla Public License, which is attached in this repository

Core symbols most depended-on inside this repo

Shape

Method 412
Class 121
Function 49
Enum 11

Languages

C++100%

Modules by API surface

Peregrine/ast/ast.cpp152 symbols
Peregrine/ast/ast.hpp80 symbols
Peregrine/ast/types.cpp45 symbols
Peregrine/ast/types.hpp32 symbols
Peregrine/lexer/lexer.cpp21 symbols
Peregrine/parser/expression.cpp17 symbols
Peregrine/clang/driver.cpp15 symbols
Peregrine/utils/symbolTable.hpp14 symbols
Peregrine/parser/define.cpp14 symbols
Peregrine/linker/linker.cpp14 symbols
Peregrine/parser/parser.cpp13 symbols
Peregrine/parser/statement.cpp11 symbols

For agents

$ claude mcp add Peregrine \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page