5.1 Sway设计哲学 (Sway Design Philosophy)
Sway follows the design philosophies of Rust and Solidity, with some Fuel ideology mixed in. From Solidity, we took the notion of smart contract programming as a paradigm. This led to storage blocks, contract ABIs as entry points, etc.
Sway 遵循 Rust 和 Solidity 的设计哲学,并混入了一些 Fuel 设计理念。从 Solidity 开始,我们将智能合约编程的概念作为范例。这导致了存储区块、合约 ABI 作为入口点等情况。
From Rust, we took the prioritizations of performance, control, and safety. In Rust, this means the borrow checker, safe parallelism (send and sync), annotated unsafety, etc., mainly to save the programmer from referencing freed memory, shared mutable state, and undesirable memory management. This is great for a general-purpose language model. Sway, however, is not general purpose. Sway targets a blockchain VM environment, where execution is not indefinite, and memory allocation and management are less concerned. Instead, we need to optimize for gas costs and contract-level safety. We applied the philosophy of performance, control, and safety and interpreted it in this new context. This is where Sway gets compile time checks of state mutability, namespacing of state variables, static analysis passes, and gas profiling/optimization.
从 Rust 开始,我们优先考虑性能、控制和安全。在 Rust 中,这意味着借用检查器、安全并行性(发送和同步)、带注释的不安全性等,这主要是为了避免程序员引用释放的内存、共享的可变状态和不需要的内存管理。这对于通用变成语言模型来说非常有用。然而,Sway 不是通用的。 Sway 针对的是区块链 VM 环境,执行不是无限期的,且对内存分配和管理关心较少。相反,我们需要优化 gas 成本和合约级别的安全性。我们应用了性能、控制和安全的理念,并在这个新的背景下对其进行了解释。这是 Sway 获取编译时检查状态可变性、状态变量命名空间、静态分析传递和gas分析/优化的地方。
Last updated