#programming-language #compiler #interpreter #vm #language-server

bin+lib Cecile

Cecile Programming Language that is designed to be simple, fast

17 releases

0.1.7 Feb 2, 2024
0.1.6 Jan 8, 2024
0.1.4 Dec 21, 2023
0.0.9 Dec 10, 2023

#282 in Programming languages

Download history 6/week @ 2024-09-17 46/week @ 2024-09-24 1/week @ 2024-10-08 1/week @ 2024-10-15 1/week @ 2024-11-05

194 downloads per month

MIT license

250KB
6.5K SLoC

Group 1 (2)

The Cecile Programming Language

⭐ Introduction

The Cecile, a little programming language designed for simplicity and flexibility.

🍎 Overview

Welcome to the Cecile programming language.

This language is part of my journey into learning compiler and interpreted languages. It's inspired by ajeetdsouza/loxcraft, a great Rust project that implemented the Lox language.

The syntax of Cecile is influenced by traditional programming languages like JavaScript, Go, and Rust, with a strong emphasis on developer experience, readability and ease-of-use.

Cecile is written in Rust. Some of performance matter part is written in Unsafe Rust that makes fast enough to compete with traditional interpreted languages like Javascript, Python.

Important note: This project is built for learning purposes. The code quality of this project is definitely not production ready.

📕 Features

Language features

  • Interpreted
  • Bytecode compiler
  • Garbage collected in runtime
  • Type Supported
  • Basic types, Array
  • Control flow statements
  • Object Oriented Programming
  • Stack tracing
  • Repl

Ongoing features

  • Online playground

For compiled version of Cecile

  • Make compiled
  • Self-hosted
  • Standart library
  • Module system

🔥 Syntax examples

Variable Declaration

// Variable Declaration
let number: int = 1;
let string: String = "string";

// Ofcource you don't need to write type everytime you declare variable
let number = 2;
let string = "hello cecile";

Function Declaration

fn say_hello() -> String {
  return "hello";
}

println say_hello() // Out: "hello"

Type Declaration

type Point {
  x: int,
  y: int,
}

impl Point {
  fn new(x: int, y: int) {
    self.x = x;
    self.y = y;
  }
}

let point: Point = Point();

Array & Builtin function

let arr = [1, 2, 3, 4];
arr.push(5);

println arr; // Out: [1, 2, 3, 4, 5]

⚙️️ Build Guide

🦀 Install Rust

We recommend installing Rust using rustup. You can install rustup as follows:

  • macOS or Linux:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    
  • Windows (64-bit):

    Download the Windows 64-bit executable and follow the on-screen instructions.

🐙 Install Cecile

# Install 'Cecile'
$ cargo install Cecile --locked

Now to use Cecile language, in your terminal, run:

Cecile

Dependencies

~9–27MB
~313K SLoC