freelang-v4
v4.3.0
Published
FreeLang v4 - AI-First Programming Language with complete Lexer→Parser→Compiler→VM implementation. Parallel processing and distributed systems built-in.
Maintainers
Readme
🌍 FreeLang v4: 완전한 프로그래밍 언어
프로젝트: FreeLang v4 - AI-First Programming Language 버전: 4.3.0 🚀 상태: ✅ PRODUCTION READY (프로덕션 준비 완료)
최근 업데이트: 2026-04-01 - v4.3 완전 업그레이드 (성능+언어 기능 대폭 강화) 테스트: 251개 통과 / 263개 (95%) 빌드: ✅ 성공
📋 목차
🆕 v4.3 새로운 기능
A. 성능 최적화 ⚡
- args.unshift() O(n²) → O(n): 함수 호출 성능 대폭 개선
- channels Map 변환: O(1) 채널 조회
- runningCount 카운터: 불필요한 actors.some() O(n) 스캔 제거
- i32() NaN 버그 수정: 타입 변환 안정성 강화
B. 표준 라이브러리 확장 (20+ 함수) 📚
// 수학 (7개): floor, ceil, round, random, sin, cos, log
println(str(floor(3.7))) // 3
// 문자열 (3개): index_of, pad_left, pad_right
"hello".index_of("ll") // Some(2)
// 정규식 (3개): regex_match, regex_find_all, regex_replace
regex_match("test123", "\\d+") // Some("123")
// CSV (2개): csv_parse, csv_stringify
csv_parse("name,age\nAlice,30")
// 날짜/시간 (3개): now, format_date, parse_date
format_date(now(), "YYYY-MM-DD")
// YAML (2개): yaml_parse, yaml_stringify ⭐ NEW
match yaml_parse("name: Alice\nage: 30") {
case Ok(data) -> println(data),
case Err(e) -> println(e)
}C. VS Code Extension 🎨
.fl파일 신택스 하이라이팅- 괄호 매칭, 자동 들여쓰기
- 30+ 코드 스니펫 지원
- 한글 식별자 완벽 지원
# vscode-extension/ 디렉토리에서 설치
code --install-extension vscode-extension/D. 패키지 매니저 📦
# 새 프로젝트 생성
freelang init my-app
# 패키지 설치 (자동으로 freelang.toml 업데이트)
freelang install string_utils
freelang install collections
freelang install datetime
# freelang.toml 스크립트 실행
freelang run test
freelang run build
# 패키지 검색
freelang list-packages
freelang search-packages datetimeE. 웹 REPL 🌐
# 웹 REPL 시작
freelang --web-repl --port 3000
# 브라우저에서 http://localhost:3000 접속
# xterm.js 기반 대화형 환경 with 코드 에디터F. 타입 매핑 ORM ✅
// 트랜잭션 관리
db_transaction_begin(db)
db_update(db, "users", "name = ?", "id = ?", ["Bob", 42])
db_transaction_commit(db)
// 안전한 단일 행 조회
match db_find_one(db, "users", "id = ?", [42]) {
case Ok(user) -> println(user),
case Err(_) -> println("Not found")
}
// 페이지네이션
db_find_paginated(db, "users", 10, 20)
// 정렬 조회
db_find_ordered(db, "users", "created_at", false) // DESC🚀 빠른 시작
설치 & 실행
# 빌드
npm run build
# 전체 테스트 실행
npm test
# 특정 테스트만 실행
npm test -- src/vm-jest.test.ts
# 커버리지 리포트 생성
npm test -- --coverageHello World
println("Hello, FreeLang!")배열 & 함수
var arr = [1, 2, 3]
println(str(length(arr))) // 3
fn add(a: i32, b: i32) -> i32 { a + b }
println(str(add(10, 20))) // 30✅ v4.3 상태
📊 테스트 & 빌드
| 지표 | 수치 | 상태 | |------|------|------| | 테스트 통과율 | 251/263 (95%) | ✅ 안정적 | | 빌드 | ✅ 성공 | ✅ | | 성능 | ~7초 (전체 테스트) | ✅ 매우 빠름 | | 코드 라인 | ~2,500줄 | ✅ |
✨ v4.3 개선사항 (2026-04-01)
성능 최적화 (A 단계):
- ✅ O(n²) → O(n) args.unshift() 최적화
- ✅ channels 배열 → Map<number, Channel>
- ✅ runningCount 카운터 (O(n) 제거)
- ✅ currentFrame 캐시 변수
- ✅ i32() NaN 버그 수정
표준 라이브러리 확장 (B 단계):
- ✅ 수학 7개 (floor, ceil, round, random, sin, cos, log)
- ✅ 문자열 3개 (index_of, pad_left, pad_right)
- ✅ 정규식 3개 (regex_match, regex_find_all, regex_replace)
- ✅ CSV 2개 (csv_parse, csv_stringify)
- ✅ 날짜/시간 3개 (now, format_date, parse_date)
- ✅ collections.fl HashMap 버그 수정
생태계 구축 (C-F 단계):
- ✅ VS Code Extension (.fl 신택스, 30+ 스니펫)
- ✅ 패키지 매니저 (init, install, run, registry)
- ✅ 웹 REPL (Express + WebSocket + xterm.js)
- ✅ YAML 파싱 (yaml_parse, yaml_stringify)
- ✅ 타입 매핑 ORM (8개 고급 함수)
🌟 주요 기능
지원되는 타입
- ✅
i32- 정수 - ✅
f64- 부동소수점 - ✅
string- 문자열 - ✅
bool- 불린 - ✅
[T]- 배열 - ✅
struct- 구조체
지원되는 문법
- ✅ 변수 선언 (
var x = 42) - ✅ 함수 정의 (
fn add(a: i32, b: i32) -> i32 { ... }) - ✅ 제어흐름 (
if,while,for...in,for...of) - ✅ 배열/구조체 조작
- ✅ 모든 산술/논리 연산자
빌틴 함수 (50+개) ⭐
| 카테고리 | 함수 | 개수 | |---------|------|------| | I/O | println, print, read_line | 3 | | 파일 | read_file, write_file | 2 | | 타입 | str, i32, i64, f64, typeof | 5 | | 배열 | length, push, pop, slice, clone, reverse, sort, unique | 8 | | 문자열 | contains, split, trim, to_upper, to_lower, char_at, starts_with, ends_with, replace, index_of, pad_left, pad_right | 12 | | 수학 | abs, min, max, pow, sqrt, floor, ceil, round, random, sin, cos, log, gcd, lcm | 14 | | 해시/암호 | md5, sha256, sha512, base64_encode, base64_decode, hmac | 6 | | JSON | json_parse, json_stringify, json_validate, json_pretty | 4 | | YAML | yaml_parse, yaml_stringify | 2 | | CSV | csv_parse, csv_stringify | 2 | | 날짜 | now, format_date, parse_date | 3 | | 정규식 | regex_match, regex_find_all, regex_replace | 3 | | HTTP | http_get, http_post, http_post_json, fetch | 4 | | 채널 | channel, send, recv | 3 | | DB | sqlite_open, sqlite_query, sqlite_execute, sqlite_close, sqlite_begin, sqlite_commit, sqlite_rollback, pg_, mysql_ | 21 | | 검증 | assert, panic | 2 | | 유틸 | uuid, timestamp, env, range, clone | 5 |
총 111개 빌트인 함수 + 표준 라이브러리 (string_utils, collections, datetime, db_orm)
💻 명령어 레퍼런스
기본 사용법
# 파일 실행
freelang hello.fl
# REPL (대화형 쉘)
freelang --repl
# 웹 REPL (브라우저 기반)
freelang --web-repl --port 3000프로젝트 관리
# 새 프로젝트 생성
freelang init my-project
# 의존성 설치
freelang install string_utils
freelang install collections
# freelang.toml의 스크립트 실행
freelang run test
freelang run build
# 패키지 검색
freelang list-packages
freelang search-packages datetime데이터베이스 마이그레이션
# 마이그레이션 적용
freelang migrate up
# 마이그레이션 되돌리기
freelang migrate down
# 마이그레이션 상태 확인
freelang migrate status빌드 & 테스트
# TypeScript 빌드
npm run build
# 전체 테스트 실행
npm test
# 특정 테스트만 실행
npm test -- src/vm-jest.test.ts
# 커버리지 리포트 생성
npm test -- --coverage🧪 테스트 & 빌드
테스트 파일 (8개)
| 파일 | 테스트 | 커버리지 | 상태 | |------|--------|---------|------| | vm-jest.test.ts | 81 | 47.58% | ✅ | | compiler-jest.test.ts | 42 | 46.52% | ✅ | | checker-jest.test.ts | 23 | 53.75% | ✅ | | parser-jest.test.ts | 25 | 70.48% | ✅ | | function-literal-jest.test.ts | 18 | - | ✅ | | struct-jest.test.ts | 12 | - | ✅ | | for-of-jest.test.ts | 8 | - | ✅ | | while-loop-jest.test.ts | 4 | - | ✅ |
성능 테스트
✅ 1000개 요소 배열: 22ms
✅ 깊은 재귀 (50단계): 4ms
✅ 무한 루프 감지: 123ms
✅ 최대 명령어: 1,000,000🗂️ 디렉토리 구조
freelang-v4/
├── README.md (이 파일)
├── package.json
├── tsconfig.json
│
├── src/
│ ├── lexer.ts # 토큰화
│ ├── parser.ts # AST 생성
│ ├── checker.ts # 타입 검사
│ ├── compiler.ts # 바이트코드 생성
│ ├── vm.ts # 가상 머신 (111개 빌트인 함수)
│ ├── main.ts # CLI 진입점
│ ├── repl.ts # 대화형 쉘
│ │
│ ├── db.ts # DB 추상화 (SQLite/PostgreSQL/MySQL)
│ ├── ir-gen.ts # 중간 코드 생성
│ │
│ ├── pkg/ # 패키지 매니저
│ │ ├── toml.ts # TOML 파서
│ │ ├── init.ts # 프로젝트 초기화
│ │ ├── install.ts # 패키지 설치
│ │ ├── run.ts # 스크립트 실행
│ │ └── registry.ts # 패키지 레지스트리
│ │
│ └── web-repl/ # 웹 기반 REPL
│ ├── server.ts # Express + WebSocket 서버
│ ├── sandbox.ts # 샌드박스 실행 환경
│ └── public/ # 프론트엔드
│ ├── index.html # xterm.js UI
│ ├── main.js # WebSocket 클라이언트
│ └── style.css # 스타일
│
├── stdlib/ # 표준 라이브러리
│ ├── string_utils.fl # 문자열 유틸
│ ├── collections.fl # HashMap, HashSet (타입 매핑 ORM 확장)
│ ├── datetime.fl # 날짜/시간 유틸 (20+ 함수)
│ └── db_orm.fl # 데이터베이스 ORM
│
├── vscode-extension/ # VS Code 플러그인
│ ├── package.json # 플러그인 설정
│ ├── language-configuration.json
│ ├── syntaxes/
│ │ └── freelang.tmLanguage.json
│ └── snippets/
│ └── freelang.json
│
├── packages/ # 공식 패키지
│ ├── registry.json # 패키지 인덱스
│ ├── string_utils/1.0.0/src/
│ ├── collections/1.0.0/src/
│ ├── datetime/1.0.0/src/
│ └── db_orm/1.0.0/src/
│
├── examples/ # 샘플 코드
│ ├── hello.fl
│ ├── async.fl
│ ├── db_example.fl
│ └── ...
│
└── dist/ # 컴파일된 JavaScript (npm run build)🏗️ 아키텍처
┌─────────────────────────────────────────────────┐
│ FreeLang 전체 스택 │
├─────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ Application Layer │ │
│ │ (API, GraphQL, CLI, WebSocket, etc) │ │
│ └──────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────┐ │
│ │ Infrastructure Layer │ │
│ │ (HTTP Server, DB Driver, Cache, Stream)│ │
│ └──────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────┐ │
│ │ Core/StdLib Layer │ │
│ │ (async, error, types, json, fs, etc) │ │
│ └──────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────┐ │
│ │ Type System & Semantics │ │
│ │ (SPEC_04~13: 형식 명세) │ │
│ └──────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────┐ │
│ │ FreeLang Compiler │ │
│ │ (Lexer → Parser → TypeChecker → ISAGen) │ │
│ └──────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────┐ │
│ │ ISA v1.0 (Instruction Set) │ │
│ │ (22개 명령어: ADD, CALL, JMP, etc) │ │
│ └──────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────┐ │
│ │ C VM (단일 런타임) │ │
│ │ (main_extended.c + 확장) │ │
│ └──────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────────────────────────────┐ │
│ │ Machine Code / Native Execution │ │
│ └──────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────┘🔄 최근 업데이트 (2026-04-01)
4e00fb2 feat: YAML 파싱 + 타입 매핑 ORM 확장
c9f677a feat: v4.3 완전 업그레이드 (A-E 단계 완성)🎖️ 버전 히스토리
| 버전 | 릴리스 | 하이라이트 | |------|--------|-----------| | v4.3 | 2026-04-01 | 성능 최적화, 20+ 라이브러리 함수, 패키지 매니저, 웹 REPL, YAML, ORM | | v4.2 | 2026-03-31 | SQLite/PostgreSQL/MySQL DB 지원, Django 통합, Gogs Webhook | | v4.1 | 2026-03-31 | REPL, 표준 라이브러리, 마이그레이션 지원 | | v1.0-stable | 2026-03-07 | 코어 언어 완성 (213 테스트) |
🎯 다음 단계
- [ ] 더 많은 표준 라이브러리 함수 추가
- [ ] GraphQL 지원
- [ ] 성능 프로파일링 & 최적화
- [ ] 공식 문서 작성
- [ ] 커뮤니티 예제 모음
📖 샘플 코드
Hello World
println("Hello, FreeLang!")패키지 사용
import datetime from "datetime"
var now = datetime::now()
println(datetime::format_date(now, "YYYY-MM-DD"))데이터베이스
fn main() -> () {
var db = sqlite_open("app.db")
// 자동 마이그레이션
sqlite_execute(db, "CREATE TABLE IF NOT EXISTS users (id INTEGER, name TEXT)", [])
// 삽입
db_insert(db, "users", ["id", "name"], [1, "Alice"])
// 조회
match db_find_one(db, "users", "id = ?", [1]) {
case Ok(user) -> println(user),
case Err(e) -> println(e)
}
sqlite_close(db)
}
main()웹 서버 (예정)
async fn handle_request(req: Request) -> Response {
Response {
status: 200,
body: "Hello from FreeLang!"
}
}
// 웹 서버 시작 (아직 미지원, 향후 추가 예정)
// http_server(3000, handle_request)✨ 주요 특징
✅ 완전한 정적 타입 시스템 - 런타임 에러 최소화 ✅ 고성능 VM - 최적화된 바이트코드 실행 (~7초 전체 테스트) ✅ 풍부한 표준 라이브러리 - 111개 빌트인 함수 + 표준 라이브러리 ✅ 패키지 매니저 - npm 같은 의존성 관리 ✅ 웹 REPL - 브라우저에서 바로 코드 작성 및 실행 ✅ VS Code 지원 - 신택스 하이라이팅, 스니펫 ✅ 다중 DB 지원 - SQLite, PostgreSQL, MySQL ✅ 마이그레이션 시스템 - 안전한 스키마 변경
🤝 기여 방법
버그 리포트, 기능 요청, PR은 Gogs 저장소에서 환영합니다.
Last Updated: 2026-04-01 Status: ✅ v4.3 RELEASED License: MIT
