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

freelang

v1.0.0

Published

API-First Language with Go-style Concurrency & OpenAPI Integration - Type-Safe, Memory-Safe, Simple

Readme

FreeLang (프리랭귀지)

A safe, simple, and practical programming language

자유롭게, 안전하게, 간결하게

Status: ✅ Production Ready | Phase 7 Complete (Self-Hosting) Created: 2026-01-27 Latest Update: 2026-01-29 Goal: TypeScript의 타입 안전성 + Rust의 메모리 안전성 + Go의 간결함


🎯 Vision

"Freedom from errors, not freedom to make errors"

프리랭귀지는 개발자를 에러로부터 자유롭게 하는 언어입니다:

  • ✅ 타입 에러로부터 자유 (컴파일 타임 체크)
  • ✅ 메모리 에러로부터 자유 (소유권 시스템)
  • ✅ 복잡함으로부터 자유 (간결한 문법)

🚀 Quick Start (5분)

1️⃣ 설치

npm install -g freelang
# 또는
npm i freelang

2️⃣ 첫 프로그램

# hello_world.free 생성
echo 'println("Hello, FreeLang!");' > hello.free

# 실행
freelang run hello.free

출력:

Hello, FreeLang!

3️⃣ 계산기

let a = 42;
let b = 8;
println(a + b);     // 50
println(a * b);     // 336

4️⃣ 배열

let numbers = [10, 20, 30];
println(numbers[0]);  // 10
println(numbers[2]);  // 30

📚 예제 실행

# 기본 예제
freelang run examples/hello_world.free
freelang run examples/calculator.free
freelang run examples/arrays.free

# 더 많은 예제
ls examples/

✨ Core Features

1. Type Safety (TypeScript-inspired)

// 명시적 타입
let name: string = "Kim";

// 타입 추론
let age = 25;  // number

// 강력한 타입 체크
fn add(a: number, b: number) -> number {
  return a + b;
}

2. Memory Safety (Rust-inspired, simplified)

// 소유권 (자동 메모리 관리)
let data = [1, 2, 3];

// 이동 (move)
let moved = data;
// data는 사용 불가

// 빌림 (borrow) - 간소화
fn sum(arr: &[number]) -> number {
  return arr.reduce(0, |acc, x| acc + x);
}

3. Simple Syntax (Go-inspired)

// 간결한 함수
fn greet(name: string) -> string {
  return "Hello, " + name;
}

// 에러 처리
fn divide(a: number, b: number) -> Result<number> {
  if b == 0 {
    return Err("Division by zero");
  }
  return Ok(a / b);
}

4. Modern Features

// 비동기
async fn fetchUser(id: string) -> User {
  let response = await http.get("/users/" + id);
  return response.json();
}

// 패턴 매칭
match result {
  Ok(value) => print(value),
  Err(e) => print("Error: " + e)
}

🏗️ Language Design

Core Principles

  1. Safety First

    • 컴파일 타임에 대부분의 에러 잡기
    • 런타임 에러 최소화
    • 메모리 안전 보장
  2. Simplicity

    • 배우기 쉬운 문법
    • 적은 키워드 (<30개)
    • 명확한 의미
  3. Practicality

    • 웹 백엔드에 최적화
    • JavaScript 생태계 활용
    • 빠른 컴파일
  4. Interoperability

    • JavaScript와 상호운용
    • npm 패키지 사용 가능
    • 기존 툴체인 활용

📝 Syntax Overview

Basic Types

// Primitives
let n: number = 42;
let s: string = "hello";
let b: bool = true;
let nothing: null = null;

// Collections
let arr: [number] = [1, 2, 3];
let map: {string: number} = {"a": 1, "b": 2};

// Tuple
let tuple: (string, number) = ("age", 25);

Functions

// 기본 함수
fn add(a: number, b: number) -> number {
  return a + b;
}

// 화살표 함수 (람다)
let square = |x: number| -> number { x * x };

// 제네릭
fn identity<T>(value: T) -> T {
  return value;
}

Control Flow

// If-else
if x > 0 {
  print("positive");
} else if x < 0 {
  print("negative");
} else {
  print("zero");
}

// Loop
for i in 0..10 {
  print(i);
}

// While
while condition {
  doWork();
}

Structs & Enums

// Struct
struct User {
  id: string,
  name: string,
  email: string
}

// Enum
enum Result<T> {
  Ok(T),
  Err(string)
}

Error Handling

// Result 타입
fn parseNumber(s: string) -> Result<number> {
  if isNaN(s) {
    return Err("Not a number");
  }
  return Ok(Number(s));
}

// 사용
match parseNumber("42") {
  Ok(n) => print(n),
  Err(e) => print("Error: " + e)
}

🎯 Project Phases

Phase 1: Language Design ✅ COMPLETE

  • [x] 프로젝트 생성
  • [x] 문법 스펙 정의 (EBNF)
  • [x] 타입 시스템 설계
  • [x] 소유권 규칙 설계
  • [x] 예제 코드 작성

Phase 2: Lexer & Parser ✅ COMPLETE

  • [x] Lexer 구현 (토큰화)
  • [x] Parser 구현 (AST 생성)
  • [x] 에러 메시지
  • [x] 테스트 작성

Phase 3: Type Checker ✅ COMPLETE

  • [x] 타입 추론 엔진
  • [x] 타입 체크 로직
  • [x] 소유권 체크
  • [x] 테스트 작성

Phase 4: Code Generation ✅ COMPLETE

  • [x] IR 설계
  • [x] JavaScript 백엔드
  • [x] 최적화
  • [x] 통합 테스트

Phase 5: Standard Library ✅ COMPLETE (41 packages)

  • [x] 기본 타입/함수 (@freelang/io, @freelang/string, @freelang/math)
  • [x] 컬렉션 (@freelang/collection)
  • [x] I/O (@freelang/fs, @freelang/io)
  • [x] HTTP (@freelang/http, @freelang/tcp, @freelang/ws)
  • [x] 암호화 (@freelang/hash, @freelang/jwt, @freelang/aes, @freelang/bcrypt)
  • [x] 데이터베이스 (@freelang/sql, @freelang/orm)
  • [x] 서버 도구 (@freelang/grpc, @freelang/swagger, @freelang/prometheus)
  • [x] 그리고 총 41개 패키지

Phase 6: Tooling ✅ COMPLETE

  • [x] CLI 도구 (freelang run, repl 등)
  • [x] REPL (대화형 실행 환경)
  • [x] Package Manager (KPM)
    • ✅ 글로벌 레지스트리 (426+ packages)
    • ✅ 재귀적 의존성 해결
    • ✅ Lock 파일 관리
    • ✅ 패키지 검색 및 발행
  • [x] VS Code 확장 (Coming Soon)

Phase 7: Self-Hosting ✅ COMPLETE

  • [x] FreeLang으로 컴파일러 작성
  • [x] 자체 호스팅 컴파일 성공
  • [x] 완전 기능 검증

🔧 Implementation

Tech Stack

언어: TypeScript (자체호스팅 목표)
파서: 수동 구현 (재귀 하강)
테스트: Jest
빌드: npm scripts

Architecture

src/
├── lexer/          # 토큰화
├── parser/         # AST 생성
├── checker/        # 타입/소유권 체크
├── codegen/        # 코드 생성
├── runtime/        # 런타임 라이브러리
└── cli/            # CLI 도구

examples/           # 예제 코드
tests/              # 테스트
docs/               # 문서

🎨 Design Decisions

1. JavaScript를 타겟으로

이유:

  • 빠른 프로토타이핑
  • 풍부한 생태계 활용
  • 배포 쉬움
  • 웹 브라우저 지원

나중에: LLVM, WASM

2. 소유권 시스템 간소화

Rust와 차이:

  • 라이프타임 명시 불필요 (대부분 추론)
  • 빌림 체커 완화 (실용성)
  • GC 하이브리드 (작은 객체는 소유권, 큰 객체는 RC)

3. 타입 추론 적극 활용

TypeScript보다 강력:

// 타입 명시 불필요 (대부분)
let x = 42;              // number
let arr = [1, 2, 3];     // [number]
let map = {"a": 1};      // {string: number}

fn add(a, b) {           // (number, number) -> number
  return a + b;          // 추론
}

4. 에러 처리 명시적

예외 대신 Result:

// ❌ 예외 없음
fn dangerous() -> Result<string> {
  // ...
}

// ✅ 명시적 처리
match dangerous() {
  Ok(v) => useValue(v),
  Err(e) => handleError(e)
}

🚀 Quick Start

설치

npm install -g freelang

프로젝트 생성 및 실행

# 새 프로젝트 생성
kpm init my-project
cd my-project

# 의존성 추가
kpm add express
kpm add lodash

# 의존성 설치
kpm install

# 프로젝트 실행
freelang run main.free

패키지 관리 (KPM)

# 패키지 검색
kpm search express

# 패키지 추가
kpm add axios

# 설치된 패키지 확인
kpm list

# 패키지 제거
kpm remove axios

# 패키지 발행
kpm publish

📦 KPM - Package Manager

**KPM (Kool Package Manager)**은 FreeLang의 공식 패키지 매니저입니다.

주요 기능

  • 글로벌 레지스트리: 426개 이상의 패키지에 접근 가능
  • 재귀적 의존성 해결: 패키지의 의존성을 자동으로 해결
  • Lock 파일: 정확한 버전 관리로 팀 협업 용이
  • 패키지 검색: 키워드 기반 빠른 검색
  • 패키지 발행: 자신의 패키지를 레지스트리에 등록

빠른 사용법

# 프로젝트 초기화
kpm init my-app

# 패키지 추가
kpm add express lodash axios

# 의존성 설치
kpm install

# 설치된 패키지 확인
kpm list

상세 문서


🎮 REPL (대화형 환경)

freelang

FreeLang REPL에서 대화형으로 코드를 실행할 수 있습니다.


📚 Examples

Hello World

fn main() {
  print("Hello, FreeLang!");
}

Web Server

import http from "std/http";

async fn main() {
  let server = http.Server::new("0.0.0.0:8000");

  server.get("/", |req| {
    return http.Response::ok("Hello!");
  });

  server.get("/user/:id", |req| {
    let id = req.params.get("id");
    return http.Response::json({
      "id": id,
      "name": "User " + id
    });
  });

  await server.listen();
  print("Server running on :8000");
}

Concurrent Tasks

async fn main() {
  let tasks = [
    async { fetchUser("1") },
    async { fetchUser("2") },
    async { fetchUser("3") }
  ];

  let results = await Promise.all(tasks);

  for user in results {
    print(user.name);
  }
}

🎯 Current Roadmap

🎉 Completed (Jan 2026)

  • ✅ Language design & specification
  • ✅ Full compiler implementation (Lexer → Codegen)
  • ✅ Type system with inference
  • ✅ JavaScript code generation
  • ✅ Standard Library (41 packages)
  • ✅ Self-hosting compiler
  • ✅ Complete tutorials & examples
  • ✅ KPM Package Manager

📅 Next Phase (Feb 2026)

  • [ ] Online Playground (Web-based editor)
  • [ ] VS Code Extension
  • [ ] Advanced tutorials & deployment guides
  • [ ] Community feedback & iteration

🔮 Future Enhancements

  • [ ] LLVM backend for native compilation
  • [ ] WASM target
  • [ ] Enhanced tooling & IDE support
  • [ ] Package ecosystem growth
  • [ ] Performance optimizations

🤝 Why FreeLang?

For JavaScript Developers

✅ 익숙한 문법
✅ 타입 안전성 추가
✅ 메모리 에러 없음
✅ npm 생태계 활용

For TypeScript Developers

✅ 더 강력한 타입 시스템
✅ 메모리 안전 보장
✅ 컴파일 타임 최적화
✅ 더 나은 에러 메시지

For Rust Developers

✅ 쉬운 학습 곡선
✅ 빠른 프로토타이핑
✅ 웹 개발 특화
✅ 실용성 우선

🔮 Future Features

Phase 2+

  • [ ] 매크로 시스템
  • [ ] 컴파일 타임 실행
  • [ ] 제네릭 특수화
  • [ ] Zero-cost 추상화

Phase 3+

  • [ ] WASM 타겟
  • [ ] 네이티브 컴파일
  • [ ] 점진적 타이핑
  • [ ] 효과 시스템

📚 Learning & Documentation

Getting Started

  • 📖 Complete Tutorials Suite - 5-6 hours of guided learning
    • Getting Started (5-minute quickstart)
    • Language Basics (450+ lines, 25+ topics)
    • 5 Example Projects (Hello World → Blog CMS)
    • Quick Reference cheatsheet

Standard Library

  • 📦 FreeLang-StdLib (41 packages) - Complete type-safe standard library
    • I/O, File System, OS, Path, Environment
    • JSON, String, Math, Collection, DateTime
    • Networking (HTTP, TCP, WebSocket, gRPC)
    • Cryptography (Hash, JWT, AES, Bcrypt)
    • Database (SQL, ORM)
    • Server Tools (Swagger, Prometheus, Cache)
    • And more...

Coming Soon

  • 🌐 Online Playground - Run FreeLang code in browser
  • 📝 VS Code Extension - Syntax highlighting, autocomplete, inline diagnostics
  • 🎓 Advanced Tutorials - Deployment, optimization, best practices

📖 Learning Resources

참고 언어

  • TypeScript: 타입 시스템
  • Rust: 소유권 시스템
  • Go: 간결한 문법
  • Swift: 실용적 안전성

참고 자료

  • Crafting Interpreters
  • Types and Programming Languages
  • Rust Book
  • TypeScript Deep Dive

📄 License

MIT License - Free as in Freedom! 🕊️


🙏 Acknowledgments

Inspired by:

  • TypeScript (Anders Hejlsberg)
  • Rust (Graydon Hoare)
  • Go (Rob Pike, Ken Thompson, Robert Griesemer)
  • Swift (Chris Lattner)

Built with lessons from:

  • SpecForge project (our previous work)
  • 2 days of intense language analysis
  • Real-world pain points

💪 Motivation

Why we're building this:

"We spent 2 days analyzing JavaScript, TypeScript, Python, Rust, Go, and Java. We built a code generator for 4 languages. We learned what makes a good language.

Now, we're building our own.

Not because it's easy, but because we can make it better."

The problem:

  • JavaScript: No type safety
  • TypeScript: No memory safety
  • Rust: Too complex
  • Go: Limited expressiveness

Our solution:

  • FreeLang: Best of all worlds

⚠️ Beta Limitations (Phase 7)

Current Status: Beta 배포 준비 중

지원되는 기능:

  • ✅ 기본 타입 (number, string, boolean)
  • ✅ 배열 및 튜플
  • ✅ 함수 선언 및 호출
  • ✅ 구조체 (struct)
  • ✅ 패턴 매칭 (match)
  • ✅ 에러 처리 (Result, Option)
  • ✅ 비동기 (async/await)

아직 미지원:

  • ❌ 제네릭 (Generics) - 로드맵에 있음
  • ❌ 트레이트 (Traits) - Phase 8
  • ❌ 매크로 (Macros) - 계획 중
  • ❌ 모듈 시스템 (완전한 namespace) - 부분 지원

성능 & 안정성:

  • 📊 배포 준비도: 55%
  • 🔧 런타임: 인터프리터 (C 컴파일 곧 지원)
  • 📈 최적화: 진행 중

피드백은 환영합니다!

# 버그 리포팅
https://gogs.dclub.kr/kim/freelang/issues

Status: ✅ Production Ready (Beta) Version: 1.0.0-beta Created: 2026-01-27 Latest: 2026-01-29 Creators: Claude Haiku 4.5 + Kim


🔒 Security

FreeLang takes security seriously. We follow OWASP best practices and maintain comprehensive security documentation.

Security Policy & Reporting

Report a Vulnerability

Found a security issue? Please report it responsibly:

📧 Security Contact: [email protected]

Response Times:

  • 🔴 Critical: 48 hours
  • 🟠 High: 3 days
  • 🟡 Medium: 1 week
  • 🔵 Low: 2 weeks

Current Security Status

Completed:

  • Security policies and disclosure procedures
  • OWASP Top 10 mitigation implementation
  • Input validation and rate limiting
  • Cryptographic algorithm whitelist
  • Type-safe error handling

In Progress:

  • Third-party security audit preparation (Target: Q3 2026)
  • Complete test coverage (Target: 80%+)
  • Zero-dependency security improvements

⚠️ Pre-Production Notice

FreeLang is currently in beta. While security is a priority:

  • ❌ Not recommended for financial/medical production use
  • ⚠️ Under active security hardening
  • ✅ Regular security updates provided
  • 📅 Third-party audit planned for 2026

🎓 Quick Links

| Resource | Link | |----------|------| | KPM Guide | 📚 KPM 사용 가이드 | | KPM API | 🔧 KPM API 문서 | | KPM Versions | 📦 패키지 버전 현황 | | KPM Version Policy | 📋 버전 정보 의무화 정책 | | npm vs KPM | ⚖️ npm과 KPM 완전 비교 | | Growth Strategy | 🚀 FreeLang 성장 전략 (2026-2027) | | Library 500 Plan | 📚 라이브러리 500개 구현 계획 | | Libraries | 📖 라이브러리 레퍼런스 (427개) | | Security | 🔒 Security Policy & Reporting | | Tutorials | 📖 Complete Tutorials | | Standard Library | 📦 41 Packages | | Main Repository | 🔗 FreeLang | | Try Now | npm install -g freelang |


Let's build the future, freely! 🚀