木兰语言 0.1.0 展示今年悬赏任务成果


【安装:pip install ulang,用法与例程请见 PyPI。源码位于开源PHP。 注意:必需 python 3.7,源码文件需 UTF-8 编码

2022年小结

去年,七月发布 0.0.22 版之后项目静默了一段时间。今年一月末开始 悬赏任务又开始大步推进。重现功能量较大,因此发布大版本。

感激所有参与者的合作、耐心和探究精神!

此版本重现功能

按各悬赏任务的完成先后顺序逐个介绍。

更多增量运算

早先完成了 += -=,现已完成余下的 *= ^= |= &= /= %= 等:

> a = 10
> a %= 4
> a
2

木兰源码转换为 Python

现在 --dump-python 命令行选项可以将木兰源码转换为 Python 源码:

> 木兰 --dump-python 测试\算法\排序\冒泡.ul
import sys
from math import *
ARGV = sys.argv[1:]
def 冒泡(数列):
换过 = True
while 换过:
换过 = False
for i in range(0, len(数列) - 2 + 1):
前项 = 数列[i]
后项 = 数列[i + 1]
if (前项 > 后项):
(数列[i], 数列[i + 1]) = (后项, 前项)
换过 = True
打乱数列 = [5, 2, 1, 8, 4]
冒泡(打乱数列)
print(打乱数列)

匿名函数支持多参数与无参数

以及注解参数类型

> 体积 = (长:int, 宽:int, 高:int) -> 长*宽*高
print(体积(2, 3, 4))
24
> a = () -> 3
print(a())
3

期间发现第一个形参 不支持默认值,不解原因。

函数支持若干形参(点点点)

包括普通函数

>func 哈(...) {{
__varargs__ = tuple('ha', 'ha')
print(...)
}
哈(2, 3, 3, 3)
hah

和匿名函数

>b = (...) -> max(...))
print(b(3, 1, 2))
3

以下是十月末之后完成的。

.. 作为模块路径

详见此 pr

using * in ..

func talk() {
module_py.talk('..')
}

更多超类语法,但运行报错,不明用意

见最后两行示例。运行有报错,与原始木兰行为相同,因而仅添加了语法树测试。详见 此pr。

type Person : list {
func $Person {
super.__init__()
}
}
p = Person()
v = p.super
Person.super(None)

在类型内定义类型

type Animal {
type Child {
func $Child(name) {
$name = name
}
}
func getChildName() {
c = Animal.Child('Animal.Child').name
return c
}
}

p = Animal()
print(p.getChildName())

十六进制数字

> n = 12 + 0x1F + 0X1a + 0xab + 0XCD
print(n)
445

但格式有误时报错比较费解:

> print(0xg)
 请先定义‘xg’再使用,见第1行<br/>

应该是木兰支持 乘法省略乘号 的副作用。

(语义待确定)复杂类型注解

详见 此pr,语法上支持嵌套的类型注解,但不知用意和建议用法为何。

func hello(a : tuple [ int ]) : int [ float, list [ str ], dict ] {
print(a)
}
a : list [ int ] = 2

补全 try ... catch ... finally

try f=open('__init__.py', 'r') {
print(len(f.read()))
print([][int('0')])
} catch e : ValueError {
print('v')
} catch e : IndexError {
print('i')
} finally {
print('f')
}

重载余下所有操作符,包括二元、一元等

包括下例的 26 个操作符,详见 此文档。

type P : str {
operator + (a) {
return str(self) + str(a) + '啊'
}

{}
}
a = P("你")
b = P("好")
print(a+b)// 输出“你好啊”

其他维护

  • 测试.unittest.原始可执行文件 报错问题,期间研究了编解码问题。
  • 添加github workflow与对应徽章
  • 两周来的一系列代码和文档规整和清理

相關推薦

2024-01-31

Markdown 格式,并取得了非常好的进展。我们希望 Markdown 语言的易用性,能让更多的贡献者参与其中。这样,我们的文档就能保持统一的格式和风格,让项目页面显得更加整齐一致。实际上,我们的库已经实现了这一点,核心框

2023-12-19

管理员权限的用户都可以查看; 2、新增:工作日志列表展示关联的任务和项目; 3、新增:任务列表展示关联的项目; 4、新增:工作记录删除功能,只有超级管理员权限才能删除,其他人不准删除; 5、优化:任务删除功能,

2023-11-16

发者来使用 Rust 重写前端代码格式化工具 Prettier,并悬赏 1 万美元。 使用 Rust 实现更快、更美观的 printers 引起了广泛关注。但主要问题在于,它们都无法与 prettier 的长尾格式化逻辑相匹配。 如果用 Rust 编写的项目能通

2023-05-25

统上运行,包括 Linux、Windows、macOS 等。它还提供了多种语言的绑定,如 Python、Ruby、Perl 等,使得开发人员可以方便地在自己喜欢的编程语言中使用它。 也正是因为使用了 libarchive 提供的开源解决方案,Windows 11 还将支持 tar、gz

2023-09-13

中提出了一个“支持 WASIX”的 issue;并提供了 5000 美元的悬赏。他表示,Zig 支持 WASIX 对 Wasm 和 Zig 社区来说均意义重大。 根据介绍,WASIX 是对现有 WASI ABI 的长期稳定和支持,加上额外的非侵入式系统调用扩展,以弥补缺失的

2023-01-04

p;将 Apache 2.0 开源协议修改为 MulanPSL-2.0 (木兰宽松许可证) 2021 年 07 月 27 日,Furion 正式支持全平台、.NET 全平台项目开发。 2021 年 08 月 11 日,Furion 加入 木兰开源社区 重点孵化。 2021 年 08

2023-09-13

多元共进|2023 Google 开发者大会精彩演讲回顾 小米安全中心宣布推出 2023 小米手机守护计划,本次守护计划奖金池总额 100 万元人民币,活动时间为 9 月 5 日-10 月 6 日。 本次测试机型为小米 13系列,守护计划需自行购买设备

2022-09-16

屏幕的应用开发过程,其中 Android Studio 和 Kotlin 编程语言为多设备开发提供了全面的功能和高效的开发体验。 Android 还创建了一套 “大屏幕应用质量指南” 和 “Material Design 布局规范”,帮助开发者们优化基于大屏幕的应

2023-04-18

区在RISC-V软硬件生态建设方面的经验与成果介绍,向大家展示中国开源社区的潜力,并同国际技术社区共研RISC-V未来之势。 FOSSASIA Summit是一个致力于开源方案及专案的技术型聚会,自2009年以来已持续举办十多年。2023年FOSSASIA峰

2023-09-08

文心一言(英文名:ERNIE Bot)是百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。 文心一言是知识增强的大语言模型,基于

2023-09-20

大小时控制中心-个性化-主题展示不完整问题 修复系统语言为英文且窗口最小化状态时,控制中心搜索框左移问题 修复点击控制中心任意子菜单中目录显示/隐藏功能键,退出后修改状态未被记录问题 修复部分机型升级新版

2023-04-15

焦最新的 AI 技术发展,包括深度学习、机器学习、自然语言处理等方向,以及这些技术如何推动行业变革和价值创造。 AI 创新方面将展示 AI 领域的创新理念、方法和实践,鼓励参会者在技术、商业模式、管理等多个层面进行

2023-04-04

大型语言模型 (LLM) 的快速发展彻底改变了聊天机器人系统,从而实现了前所未有的智能水平,譬如 OpenAI 的 ChatGPT。但 ChatGPT 的训练和架构细节仍不清楚,阻碍了该领域的研究和开源创新。受 Meta LLaMA 和 Stanford Alpaca 项目的启发

2023-04-16

合解决方案,目前已经受到企业微信的官方推荐和国家级木兰开源社区进行孵化,同时也是国家工信部重点扶持项目。 LinkWeChat v4.5.0 主要的升级内容如下: 1.任务群裂变功能升级  2.客服页面、活码页面UI优化