Jul 20, 2023

Roles, like a nouvelle cusine portion size slice of Moose

Role composition can be thought of as much more clever and meaningful multiple inheritance. The basics of this implementation of roles is

  • If a method is already defined on a class, that method will not be composed in from the role.
  • If a method that the role “requires” to be implemented is not implemented, role application will fail loudly.

Unlike ClassC3, where the last class inherited from “wins,” role composition is the other way around, where first wins. In a more complete system see Moose roles are checked to see if they clash. The goal of this is to be much simpler, hence disallowing composition of multiple roles at once.

Checkout these related ports:
  • Zziplib - Library to provide transparent read access to zipped files
  • Zydis - Fast and lightweight x86/x86-64 disassembler library
  • Zycore-c - Support library with platform independent types, macros, etc for Zydis
  • Zthread - Platform-independent object-oriented C++ threading library
  • Zookeeper - Coordination Service for Distributed Applications
  • Zls - Zig LSP implementation + Zig Language Server
  • Zfp - High throughput library for compressed floating-point arrays
  • Zeal - Offline documentation browser
  • Zapcc - C++ caching compiler based on clang
  • Zanata-platform - Web-based translation platform
  • Zanata-cli - Zanata Java command line client
  • Z88dk - Complete Z80/Z180 development kit
  • Z80ex - ZiLOG Z80 CPU emulator library
  • Z80asm - Assembler for the Z80 microprocessor
  • Z80-asm - Z80 assembly code assembler and disassembler