# 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