Revo 프로그래밍 언어

4 hours ago 4

Revo는 프로그래밍의 즐거움을 목표로 파이프 기반 데이터 흐름, 오류 값, 표현식 중심 문법을 결합한 동적 언어임 오류를 값으로 다루며 패턴 매칭과 ?, orelse, :unwrap()으로 명시적 오류 처리를 유도하고, 모든 크래시를 명시화하는 기능도 개발 중임 임의의 표현식을 실행하는 컴파일 타임 VM과 절차적 매크로, 파이버, 통합 테이블 자료형을 제공함 선택적 타입 시스템으로 타입 없는 코드도 실행할 수 있으며, 타입을 지정하면 성능과 최적화 수준이 높아지고 컴파일 시 정확성을 검사함 프로젝트가 빠르게 바뀌어 오래된 바이너리에 이미 수정된 치명적 버그가 남아 있을 수 있으므로 Zig 0.16.0을 이용한 소스 빌드를 권장함 데이터 흐름과 오류 처리 파이프(pipes) 를 사용하면 표현식을 중첩하지 않고 데이터가 위에서 아래로 흐르도록 구성할 수 있음 nil과 불리언 대신 애텀(atoms) 을 사용하며, 오류 값은 사용하기 전에 처리해야 함 패턴 매칭과 ?, orelse, :unwrap()이 오류 처리를 지원함 모든 크래시를 명시적으로 만드는 기능은 아직 개발 중임 문(statement)을 구분하지 않고 모든 요소를 표현식으로 취급해 언제나 값을 반환하면서도 절차적인 코드 형태를 유지함 패턴 매칭은 애텀과 튜플을 활용해 값을 그 자리에서 구조 분해하고 분기할 수 있게 함 컴파일과 실행 모델 comp는 컴파일할 때 임의의 표현식을 실행함 어떤 스크립트든 바이트코드로 컴파일하고 그 값을 결과물에 내장할 수 있음 컴파일 타임 VM과 런타임 VM은 동일함 revo compile script.rv로 컴파일하고 revo script.rvo로 실행함 절차적 매크로와 AST 치환 매크로 시스템을 함께 제공함 원시 AST 토큰 이터레이터를 받아 임의의 코드로 변환한 뒤 새로운 AST 테이블을 반환할 수 있음 차단 코드에 spawn을 추가하면 비차단으로 실행되는 파이버(fibers) 를 사용할 수 있음 하나의 테이블 자료형이 여러 역할을 담당함 모듈 내보내기 배열 맵 타입 시스템은 선택 사항이어서 타입이 없는 코드도 동작함 타입이 지정된 코드는 더 빠르게 실행되고 더 잘 최적화됨 대부분의 타입을 자동으로 추론하며 컴파일 시 코드 정확성을 검사함 테스트는 일급 값인 클로저로 구성되며 오류를 반환하면 실패함 후위 ? 연산자로 오류를 전파할 수 있음 설치와 빌드 최신 바이너리는 GitHub Releases에서 받을 수 있지만, ...

Read Entire Article