ZORALab赫斯提亚科技规范

那为了运用ZORALab赫斯提亚的科技规范文件。 随和、支持离线(通过PWA安装)和非常注重细节的。

创史来历

安全运用代码库

主要目的是要供应不只是代码语言运用危机而包括生态系统和防止外部威胁地安全运用代码 库。

软件包的设计

网络HTML+CSS优先

根据ZORALab赫斯提亚设计,我们是为了防止地缘政治和事后的肮脏诡计带来的无畏无聊的 麻烦而很小心地选出我们支持的代码语言。在选择中,我们是检验它们不单一靠自己的中心 化型方式分发软件包。在最高的开源(我们),所以支持的科技都可以不管上线或离线地 通过一个简单的.zip格式无中心化分发。

流动式vs记忆式

在ZORALab赫斯提亚设计算法,基本上有2种方式: (1)流动式[S]专注于运用非常少的记忆空间但可以用长一点的时间来完成 任务。 (2)记忆式[M]专注于运用多记忆空间来快速地把任务完成。 通常大多数的开发者是建设记忆式的计算法(设计时是没有顾虑到运用多少记忆空间)。 在微型控制器和嵌入式的世界里,由于记忆空间通常是实在太小了, 多数人都会使用流动式。 如此,ZORALab赫斯提亚所写的功能和运作方法**一定**要 双双供应记忆式和流动式的方式以先到者为准。

通过中央处理器的位大小单态化

有一个问题ZORALab赫斯提亚一定要解决的是能供应各种不同的中央处理器的位大小(如: 8-Bits、16-Bits、24-Bits、32-Bits、64-Bits、...2048-Bits)功能。多数的代码库是为 64-Bits的中央处理器而写出。这把功能移植工作给其他位大小中央处理器非常困难和复杂。 为了对抗这稀缺性的问题,ZORALab赫斯提亚会手动地通过中央处理器的位大小把所有供应 的功能单态化好让顾客有个选择总好过没有选择。

导入方向

在ZORALab赫斯提亚里,××永远让顾客导入最后端的代码包(统称‘叶子包’)××。开发者永 远都要把叶子包给写得自给自足方式。至于前一层的代码包(统称‘树枝包’或‘父母包’), **它们的责任是为他们所有的叶子包供应共同数据和功能**。 以下是导入方向的模式:

PATTERN
[Leaf]
->
[SuperCommon]/[Leaf]
------------->
[SuperCommon]/[Common]/[Leaf]
---------------------->

EXAMPLES
hestiaSTRING
   ⮱ hestiaSTRING.M64_Sanitize
hestiaNET/hestiaHTTP
   ⮱ hestiaHTTP.Server
   ⮱ hestiaHTTP.Client
hestiaNET/hestiaHTTP/hestiaPWA
   ⮱ hestiaPWA.ToAppJS
   ⮱ hestiaPWA.ToAppManifest

命名模范

为了促进以上的规则和为了供应良好的互操作性体验和避免与标准库冲突, ZORALab赫斯提亚为它所有支持的科技而雇用自己的命名模范。我们还是运用Go的标题案例 为出口指示器和Nim在它的语言需要的尾段的星号。ZORALab赫斯提亚的命名模式如下:

「·模范·」
软件包   = (x_)[origin][OUTPUT](_[VARIANT](_[SKU]))
固定值   = (X/x_)(priv_)[PURPOSE]_[NAME](_[VARIANT](_[SKU]))
功能     = (X/x_)[[S/s]/[M/m]][CPU_BITS/N]_[Verb](_[VARIANT](_[SKU]))
格式     = (X/x_)[[S/s]/[M/m]][CPU_BITS/N]_[Verb](_[VARIANT](_[SKU]))


「·图例指示器·」
()     = 随和
[]     = 必修的变化值
/      = 或者
lower  = 小型字母
UPPER  = 大型字母
X_, x_ = 实验类




---- 例子 ----
「·软件包·」
hestiaSTRING                   (hugo, go, nim)
x_hestiaSTRING                 (hugo, go, nim)
hestiaGUI/zoralabCORE          (hugo, go, nim)
hestiaGUI/x_zoralabCORE        (hugo, go, nim)
x_hestiaGUI/x_zoralabCORE      (hugo, go, nim)


「·固定值·」
hestiaNET.TLS_1_3              (go-pub, nim-pub*)
hestiaNET.X_TLS_1_3            (go-pub, nim-pub*)
hestiaSYS.SYSTEM_NAME          (go-pub, nim-pub*)
hestiaNET.priv_TLS_1_3         (go-priv, nim-priv)
hestiaNET.priv_TLS_1_3         (go-priv, nim-priv)
hestiaSYS.priv_SYSTEM_NAME     (go-priv, nim-priv)


「·功能·」
hestiaSTRING/Sanitize          (hugo-pub)
hestiaSTRING.M64_Sanitize      (go-pub, nim-pub*)
hestiaSTRING.S8_Sanitize       (go-pub, nim-pub*)
hestiaSTRING.m64_Sanitize_V2   (go-priv, nim-priv)
hestiaSTRING.s8_Sanitize_V2    (go-priv, nim-priv)
hestiaSTRING.X_S8_Sanitize_V3  (go-pub, nim-pub*)
hestiaSTRING.x_S8_Sanitize_V3  (go-priv, nim-priv)
hestiaTESTING.SN_Format        (go-pub, nim-pub*)
hestiaTESTING.MN_Format        (go-pub, nim-pub*)


「·格式·」
obj.M64_Sanitize               (go-pub, nim-pub*)
obj.S8_Sanitize                (go-pub, nim-pub*)
obj.m64_Sanitize_V2            (go-priv, nim-priv)
obj.s8_Sanitize_V2             (go-priv, nim-priv)
obj.X_S8_Sanitize_V3           (go-pub, nim-pub*)
obj.x_S8_Sanitize_V3           (go-priv, nim-priv)

错误代码和不可恐慌

通过窜字符串来表达错误在记忆空间稀少的环境里是蛮昂贵的。如此以来,我们就只能运用 传统的错误(hestiaERROR代码包-2个字节位)代码来表啦。还有:千万不可恐慌。 所有的功能和格式都必须越有确定性越好。基本上,越少抽象化越好。

使用Macro和避免使用Generics

Generics只能在1中元编程的用法条件下可使用。头痛的问题是在不同的中央处理器的位大小 单位算法里,各有不同的运行方式。Generics是不可能做到的。这种情况下,唯有Macro才能 有这个能力。所以呢, 如果支持的语言有Macro功能,那就运用吧。千万不可使用Generics

功能vs格式

既然代码包是用输出出产类型而被立名,那我们是先以功能方式为先,格式为有需要鸭子打 字需求和相关处理需求而定。重点是要不管任何方式要把它们全部给好好记录啦。所有目前 运用的动词如下:

Add
Append
Begin
Copy
Delete
Divide
End
Index(类型)
Insert(类型)
Join
Length
Minus
Modulus
Multiply
Next
Parse[对象]
Pop
Prepend
Previous
Replace(类型)
Reserve
Sanitize
Scan
Search
Sort(类型)
Split(类型)
String
To[对象]
Validate(类型)
Zero


「·图例指示器·」
()     = 随和
[]     = 必修的变化值

WASM能力

所有的代码包必须支持WASM和无条件之下可以运用。我们绝对不可让顾客在用JavaScript去 做任何事包括界面渲染工作(这就是代码包的首先责任啊)。

固定值

这个代码包没有提供任何固定值。

变化值

这个代码包没有提供任何变化值。

提供的功能

这个代码包没有提供任何功能。

数码构架

这个代码包没有提供任何数码构架。

菜单

以下是所有叶子象征性的代码包规范让您去询问。

代码包详情
hestiaGUI

所有GUI界面元件代码包在这个集成。

终结

我们已经抵达终结段落了。如有询问,您是可以通过以下管道来联系我们吧:


GitHub论坛