Products/ylang
ylang 0.0.2 - A lightweight, C-like, retro-styled and Pythonic programming language
swJman
2025. 11. 9. 23:37
ylang 두번째 릴리즈. Github 상에서 7일 만에 릴리즈를 했다. 오랜만에 정말 재밌게 코딩을 하니 시간 가는 줄 모르겠다.
https://github.com/jman-9/ylang/releases/tag/v0.0.2
Release ylang 0.0.2 — it works · jman-9/ylang
A lightweight, C-like, retro-styled and Pythonic programming language Highlights Added dynamic member resolution via . operator Implemented built-in object methods list: append, insert, pop, len...
github.com
빌드는 Windows/Linux로 준비되어 있고, CMake를 통해서 어느 플랫폼에서도 빌드 가능하다.
이번에는 나름 큰 향상이 있었는데, REPL(Read-Eval-Print Loop)과 동적 멤버 결정(Dynamic member resolution)이 구현되었다.
- REPL - 대화형 테스트 환경 (ex) 파이썬 실행파일을 그냥 실행하면 나오는 사용자 입력 CLI
- 동적 멤버 결정 - 런타임에 해당 타입에 대한 멤버 변수나 함수를 lookup하는 기법 (ex) "abcdef".find('a');
백문이 불여일견. 아래처럼 테스트해 본다.

그리고, 아래의 소스 파일을 직접 실행할 수도 있다.
println("=== quick example ===");
fn add(x, y) {
return x + y;
}
msg = "hello ylang";
words = msg.split();
println(words); // ['hello', 'ylang']
nums = [10, 20, 30];
nums.append(add(40, 2)); // use user-defined function
print("list: ");
println(nums); // [10, 20, 30, 42]
user = {'name': "alice", 'age': 25, 'scores': nums};
println(user); // {'name': 'alice', 'age': 25, 'scores': [10, 20, 30, 42]}
println(user.keys()); // ['name', 'age', 'scores']
println(user['scores'].len()); // 4
msg2 = msg.replace("ylang", "world");
println(msg2); // hello world
실행해 보면 아래의 결과를 볼 수 있을 것이다.

0.0.1은 솔직히 토이 수준이었지만, 0.0.2부터는 최소한의 현대적 프로그래밍 언어의 모습을 갖추게 되었다.
그래서 더욱 뿌듯하다.
흥미가 동하신다면 한번씩 사용해 보시길.