# farcs
**Repository Path**: grateful/farcs
## Basic Information
- **Project Name**: farcs
- **Description**: farlang,far-lang编程语言,像Kotlin,Scala一样运行在Jvm上的语言!
- **Primary Language**: Java
- **License**: MulanPSL-2.0
- **Default Branch**: dev1.1
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 20
- **Forks**: 3
- **Created**: 2024-01-17
- **Last Updated**: 2025-11-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### far语言
> Far,一款旨在简化学习曲线、提升开发效率的全新编程语言,专为那些渴望避免复杂语言学习负担的开发者而生。和Kotlin,Scala一样运行在Jvm,凭借 JVM 强大的生态,快速满足业务需求,提升服务竞争力。
> 无论是游戏开发、AI 工具创建,还是 API 搭建,Far 以 JVM 为依托,用简洁语法为你开启高效编程的大门。
---
## 参与far开发
### Far语言项目目前需要完善的模块,诚邀大佬们参与
#### 可参与的项
- far编译器(编译器分几个模块 词法,语法,语义,字节码生成) 欢迎有兴趣研究JVM字节码和ASM框架的大佬参与
- 语言特性策划(重要)
- 文档介绍,demo编写
- 代码注释
- 周边工具
> 参与可以细化,拿虚拟机来说:比如可以具体到string的实现、int的实现,甚至只负责单个的内置函数的实现都可以
### 项目结构
- far-os far语言编译器
- far-lang far语言的介绍
- far-common 通用库
### 编译到pub的文件 farcs/pub
- faros/pub-dev/bulid-farcc-native.bat 把far编译器生成为native-image
- faros/pub-dev/native-cc.bat 使用far的native-image版本编译器编译far应用
- faros/pub-dev/jar-cc.bat 使用far的jar版本编译器编译far应用
- faros/pub-dev/init.bat 首次开发far应用执行该文件,主要是下载jdk
- faros/pub-dev/run.bat 编译器完成后运行far应用
- faros/pub-dev/run-app-jar.bat 编译器完成后运行far应用,jar包方式
### 代码导航
> Jvm 字节码生成
- faros/src/main/java/com/faros/cmp/visitor/jvmbyte
> 运行库
- faros/src/main/java/com/faros/lib
### 计划
https://gitee.com/grateful/farcs/blob/dev1.1/farlang/doc/version-todo.md
---
### 参与开发需要了解的参数和环境
- jdk21
- IntelliJ IDEA 2024.2.3 (Ultimate Edition)
- maven3.9.8
> 注意idea setting中的maven的runner要设置为jdk21,否则还是用JDK1.8在运行maven,编译JAVA21时会报错。
#### 启动VM参数
- 启动类 com/cn/fyt/cmp/App.java
- 启动参数 src=源码目录,out=输出目录
- 加载其他目录的Jar包 java -cp ".;./lib/hutool-all-5.7.6.jar" App
---
### 修改、 编译、发布
#### maven编译参数
```js
mvn -DskipTests=true package
```
修改功能后(开发调试阶段一样),必须先maven package打包.
因为
- 在开发阶段,如果要执行far代码,需要用到编译器一部分类
- 发布后实际上也同上
> 具体可以看看faros/pom.xml 这个文件
```js
```
打包后会生成pub目录,这个目录可以作用应用开发的骨架
#### far编译器编译成native-image
> - 需要先安装graalvm
> - 将 faros/pom.xml true 改为false
> - 在IDEA先运行package 生成出jar target/xxx.jar
- 这一步会报错,只要能生成jar(是target目录下)就不用管
> - 运行 faros/pub-dev/bulid-farcc-native.bat
最后会在faros/target/native 下生成原生文件和相关的动态库,手动复制到pub/farcc 目录下即可
---
### 目前语法支持
https://gitee.com/grateful/farcs/blob/dev1.1/farlang/doc/index.md
---
### 项目贡献者
Fang.j
### 群组
- QQ群 809575724
- 微信群 vip6060688 注明far
### 开发far应用
https://gitee.com/grateful/farcs/blob/dev1.1/farlang/doc/start-app.md