duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
Forwarded from Ghost Flying
我碰到过诸如。。so 已经 fopen 了
Forwarded from Ghost Flying
然后按照 segment table 去读越界
Forwarded from Ghost Flying
然后拿到那个 so 本地却很正常的玄学问题。。
Forwarded from Pollex
Forwarded from Rikka
magisk 换文件
Forwarded from Rikka
似乎有一定几率不生效
Forwarded from Ghost Flying
(Rikka 那么喜欢做这种感觉我以前的组很适合你
Forwarded from Ghost Flying
(然后就可以做毒瘤了
Forwarded from Rikka
可是 Rikka 魔法只做 Rikka 想做的事情
Forwarded from Deleted Account
文件确实替换了
Forwarded from Deleted Account
但是位置报告就是不能用
duangsues.is_a? SaltedFish
下面我来说一下这次放假的四个事情: 1. Lime Lime 之前考虑了 新展开规则、宏对象、调试行号列号、元编程 API、引擎 API、虚拟机、编译形式、作用域、C 实现、重写和重写语言 等的问题,时间久远就不说细节了,透露一下以后 Lime 只有一个全局作用域,但是 (-> foreach (# (list proc) (with (ref 0) (do (i) (` (proc ([] list (<-- i)) (--> i (++ (<-- i))) (? (> i ([]- list))…
"Lime 的「六个展开」"

1. (symbol arglist)
2. (. handlerid arglist)
3. ((macro sexp) arglist)
4. ()
5. (macro-value arglist)
6. object

额外展开:

^# 定义特殊的宏对象,它接受后面所有 S 表达式
(1 args) 如果对象拥有 Macro toMacro() 方法,尝试使用 toMacro() 返回的宏
否则,尝试全局的 (->macro 1) 返回的宏,如果没有定义直接失败,如果返回的不是宏也失败

这所谓「六个展开」其实可以归纳为三类

1. 宏展开

Lime 基于宏和自省功能来实现类似 Scheme 的语法,宏最终被展开为原生调用执行

(symbol arglist)
((macro sexp) arglist)
(macro-value arglist)
(object arglist)

「宏解析」允许解析「符号」、S 表达式列表、宏对象、可以转换为宏的对象

Apply(施用宏)过程中,S 表达式首项必须是一个能被解析为宏的对象
而其后皆为宏的参数,如果参数长度不对,抛出 Arity Mismatch,除非是 vararg 宏

2. 原生调用

Lime 使用原生调用赋予拥有反射能力的 JVM 方便执行动态动作的能力

(. handlerid arglist)

Lime 必须有一个手段把宏变为实际行动,这就是 Lime 如此做的途径,“原生”调用

handlerid 其后皆为宏的参数,如果参数长度不对,抛出 Arity Mismatch,除非是 vararg 接收器

3. 无展开

不进行展开,直接返回原对象

()
object

Lime 不知道该如何展开这些对象,一般它认为这些对象已经被展开,所以直接返回他们
基本数据类型
nil ()
bool #t #f
number 01 0x1 0b1001 0o122 2323N 32323D 2233.223F 66666L 6B
list (a b c)
string '' "" "\"" "\n"
行注释
; comment
任何不可识别的都作为标识符
p.s. 冰封波博客上那个字符串 escape 失败不报错作为标识符的真是奇妙

展开规则:
对任何宏:检查参数列表长度,对所有参数 sexp 列表递归展开并对标识符解引用,然后填充宏参数递归展开,如果是 varargs 宏就直接将求值后的列表填充到 varargs 参数里
^* 宏:检查参数列表长度,然后填充宏参数递归展开,如果是 varargs 宏就直接将求值后的列表填充到 varargs 参数里
. 宏:检查对应 send handler 参数列表长度,将所有参数 sexp 列表递归展开并对标识符解引用,发送调用到处理 handler

插件:
1. 取值 hook
2. 找不到变量 proc
3. SEND handler
4. 错误 hook

作用域:
全局变量 args 在每次递归展开时有效,它是惰性求值的
全局变量 __stack 储存了所有作用域表
不过它是惰性求值的
Lime 使用嵌套作用域

全局变量 __env 表示整个 Lime 全局表
__lime 表示解释器对象
This media is not supported in your browser
VIEW IN TELEGRAM
最后的最后,这周想的事情,之前想继续写 JLime 但是没有时间了
首先是关于某科学的 chatbot Semic
仍然停留在设想阶段

现在貌似是这样大概的结构

语言理解和输出

“乱想”系统
- 记忆(包含各种各种各种类型的...)
- 感情

逻辑处理和输出
还有想写的一些文档/教程
- 关于 Flappy Bird 游戏的实现
- 关于汉语拼音、中文音标和语音
- 关于简单的语义
最后是重头的 ApkBundler

妄图扩大项目规模但是还是只有一个人

打算使用 Lwan、automake、Kconfig

打算支持服务端添加某些操作,比如发布评论的中间件,和 handle 一些别的没有占用的 route,允许动态加载和静态链接插件但不能动态卸载

打算添加更多配置选项

打算支持 YAML、JSON、plain、HTML、ABuf 这几种返回 body 格式,其中,推荐使用 ABuf,除了 ABuf 和 JSON 外都是调试格式,不能允许请求中出现,ABuf 是二进制流格式

对于后端,恢复头条、问答模型和依赖系统,并添加版本检查字段,检查由客户端完成,其他模型必要时恢复原没有阉割的字段们

支持为用户和应用、头条上传图标

支持上传安装包,不过必须审核而且体积小于 50M

支持 OAuth 应用,额外信息类似 GitHub

对于插件化,
曾经的 GeekURL 改名为 ApkBundler Call


曾经的 EFC 改名为 ApkBundler Widget
曾经的 Layout 改名为 ApkBundler Render

插件系统使用 ApkBundler Scheme 技术,比如使用 ABC 安装

plugin-install:github/duangsuse/coolapk-dl

就是说展开这个 ABS(就是 Lime 翻版)表达式

plugin-install ab-abc-add_app ({ (: 'app' 43)) 'github/duangsuse/coolapk-dl'
duangsues.is_a? SaltedFish
最后是重头的 ApkBundler 妄图扩大项目规模但是还是只有一个人 打算使用 Lwan、automake、Kconfig 打算支持服务端添加某些操作,比如发布评论的中间件,和 handle 一些别的没有占用的 route,允许动态加载和静态链接插件但不能动态卸载 打算添加更多配置选项 打算支持 YAML、JSON、plain、HTML、ABuf 这几种返回 body 格式,其中,推荐使用 ABuf,除了 ABuf 和 JSON 外都是调试格式,不能允许请求中出现,ABuf 是二进制流格式 …
ABC(ApkBundler Call)技术可以用于在各种支持富文本的地方,以及在应用外通过 URL “Content View” 访问
如果要索引一个用户、一个应用,完全可以依赖 ABC

app:2
app:kh.android.dir
user:44

ABW(ApkBundler Widget)就是自动渲染内容为图片的插件,可以放在消息里

ABR(ApkBundler Render)可以将整个应用视图替换为自定义视图,可以用于扩展某些特殊应用
This media is not supported in your browser
VIEW IN TELEGRAM