Raven 工作专贴

By guenchi at 2017-12-04 • 1人收藏 • 587人看过

欢迎加入Raven开源项目:

https://github.com/guenchi/Raven


注意:Raven项目建议使用sc作为后缀,表明不加修改即可运行于支持 r6rs 版本实现(未来的r7rs large)以区别于其他后缀的 r5rs / r7rs small实现。

工作原理 仿造node的npm


Raven 采用树状模式管理当前项目库依赖,并用-g选项安装可运行的工具


  1. ravensc.com 服务器请求api


    ravensc.com/<ModuleName>    请求包的最新版本号,如无此包返回空。

    ravensc.com/<ModuleName>/<VersionCode>  请求相应版本下载链接

                                                                                Version必须是N.N.N格式


2. 

Raven文件:Raven文件安装在/usr/local/lib/raven/raven下,并链接到/usr/local/bin

Raven 自身版本: Raven脚本内用常量储存自身版本,在更新时用于和ravensc.com/raven发送回的版本进行对比

自更新: raven update  如果有新版本,下载新版本并覆盖到安装目录,需要root权限


3. 

 命令 raven install

读入命令当前文件夹下的package.json文件,并取得其中 dependencies键包含依赖散列表。
除去重复依赖项,从 ravensc.com/库名/版本号 依次下载依赖库到项目下lib文件夹。

命令 raven install <ModuleName>

从 ravensc.com/<ModuleName>获取最新版本信息,然后从ravensc.com/<ModuleName>/<Version> 下载库到项目下lib文件夹,并将库和版本写入package.json文件。

命令 raven install <ModuleName>@<VersionCode>

从ravensc.com/<ModuleName>/<Version> 下载相应版本库到项目下lib文件夹,并将库和版本写入package.json文件。

 命令 raven uninstall <ModuleName>

从lib文件夹删除库,并将其从package.json文件删除。

 选项 -dev

安装和卸载时选项,区别在于写入json时加入devDependencies

选项 -g

代表全局安装,需要root权限,通常是用于全局使用的工具。将其装入/usr/local/lib/raven/<ModuleName>之下,并链接到/usr/local/bin

json示例

{  
    "name": "", 
    "version": "1.0.0",  
    "description": "",  
    "author": "",  
    "private": true,  
    "scripts": 
     {    
         "dev": "",    
         "build": "",    
         "g": "",    
         "start": "",    
         "precommit": "",    
         "lint": ""
      },  
      "dependencies": 
      {    
          "LIBNAME": "0.15.3"
      },
      "devDependencies": 
      {    
          "LIBNAME": "7.1.1"
      }
}


13 个回复 | 最后更新于 2018-01-18
2017-12-10   #1

关于抹平树状依赖的想法:


是否可以这样:


在每一个库的主文件夹中,建立一个index.sc

这个index就是对库文件中不同版本的索引

(("default" . "1-1-0)
("1.0.1" . "1-0-1")
("0.9.2" . "0-9-2"))

文件夹示例
-- libuvsc
     - index.sc
     - 1-1-0
     - 1-0-1
     - 0-9-2

当依赖import没有版本编号时,自动使用default指向的文件夹。

当依赖具有版本编号时,使用相应的文件夹。


每次版本升级,会自动更新index.sc


这样所有的依赖目录都可以指向顶层,依赖的依赖也可以指向顶层而不会引起版本冲突。

2017-12-18   #2

已推出测试版本 欢迎大家试用


     英文手册:https://guenchi.gitbooks.io/raven/content/

     中文手册:https://guenchi.gitbooks.io/raven-zhcn/content/


2017-12-21   #3

v0.1.0 to v0.2.0 -20171220

  1. Raven文件结构变化: 单文件无依赖库 => 具有自身依赖软件包

  2. Raven安装位置变化: /usr/local/bin => /usr/local/lib/raven/raven

  3. Raven安装模式变化: 改为Scheme解释器安装,除去Python解释器依赖。


2017-12-21   #4

v0.2.0 to v0.2.1 -20171220

  1. 经过三个星期的纠结,我们决定将使用s-表达式代替json。


package.sc 模版

(("name" . "Raven")    
("vesion" . "0.2.1")    
("description" . "a package manager for Chez Scheme")    
("keywords"     
("tool" "package manager" "chez-scheme"))    
("license" . "MIT")    
("homepage" . "http://ravensc.com")    
("bugs"    
("url" . "https://github.com/guenchi/raven/issues"))    
("contributors"     
 	("quenchi" "chclock"))    
("private" . #f)    
("scripts"     
 	("dev" . "")     
	("build" . "")    
 	("test" . "")    
 	("start" . "")    
 	("clean" . "")    
 	("lint" . ""))    
("dependencies"     
 	("raven" . "1.0.1")    
 	("irreg" . "1.0.9"))    
("devDependencies"     
 	("raven" . "1.0.1")    
 	("irreg" . "1.0.9")))


2017-12-22   #5

Raven正式可以安装!欢迎试用!

2017-12-22   #6

关于特异化安装和自动编译c库


解决方案:放在script项


如果检测到script项 有build键  则自动make (需要包有makefile)

如果检测到script项 有install键 则自动运行install键的值

2017-12-23   #7

有对初学者简单易用的编辑环境吗?另外现在这个项目什么时候可用?

2017-12-23   #8

回复#7 @zero :

Chez 自带的REPL就挺好用的

编辑器 推荐使用VSC

https://code.visualstudio.com


有学习的疑问欢迎发帖询问

2017-12-24   #9

回复#7 @zero :

raven主体功能现在已经可以使用了 下一步是完善它的库

2017-12-25   #10

多谢

2017-12-29   #11

Raven 网站完工!


欢迎访问


ravensc.com

2018-01-18   #12

晚上花了一点时间查找了一下GNU Guile有没有Package Manager,很遗憾,搜索的结果让我很失望。


Raven能否定位成一个General 的 Scheme Package Manager?


我看现在的定位是:a Convenient and Engineering Package Manager for Chez Scheme


2018-01-18   #13

回复#12 @sadhen :

第一是guile 是有现成的package manager的

第二 Raven完全可以用于其他的Scheme实现,只要是以“scheme”的名称启动就行。之所以没有注明支持所有Scheme实现,1. 是因为一些包会使用到Chez Scheme的自带库,当然以后我们也有计划将这个自带库独立出来,让其他实现也能使用这些功能。2. 是Raven的一些高级编译功能只有Chez的编译器才支持。


其实,现在我们的力量还是比较小的,无法做到面面俱到,说要支持所有实现,在当下只是无谓的加长工期和分散力量,所以只能在众多的实现中,选择Chez这一个完成度和速度都比较高的实现作为基石。

登录后方可回帖

登 录
信息栏

Scheme中文社区

推荐实现 ChezScheme / r6rs / r7rs large
theschemer.org
Q群: 724577239

精华导览

社区项目

包管理器:Raven
HTTP服务器:Igropyr (希腊火)
官方插件:vscode-chez

社区目标:

完善足以使Scheme工程化和商业化的库,特别是开发极致速度的Web服务器和ANN模块。

一直以来Scheme缺少一个活跃的中文社区,同时中文资料的稀少,导致大多数因为黑客与画家和SICP而接触Scheme的朋友,在学完SICP后无事可做,不能将Scheme转换为实际的生产力。最后渐渐的放弃。
同时Chicken等实现,却因效率问题无法与其他语言竞争。本社区只有一个目的,传播Scheme的文明之火,在最快的编译器实现上,集众人之力发展出足够与其他语言竞争的社区和库。


友情链接:

Clojure 中文论坛
函数式·China


Loading...