Did/do you think about to chnage the syntax for proc slightly? 1. It seems to be better readable. What does the proc return? 2. Consistency with control flow statements. 3. Compatibility with Python (Type Hints). 4. Migration path ?
## FROM TO proc waitFor(socket: Socket, waited: var Duration, timeout, size: int, funcName: string): int {.tags: [TimeEffect].} = proc waitFor(socket: Socket, waited: var Duration, timeout, size: int, funcName: string) -> int {.tags: [TimeEffect].}: proc newContext*(protVersion = protSSLv23, verifyMode = CVerifyPeer, certFile = "", keyFile = "", cipherList = CiphersIntermediate, caDir = "", caFile = "", ciphersuites = CiphersModern): SslContext = var mtd: PSSL_METHOD when defined(openssl10): case protVersion of protSSLv23: mtd = SSLv23_method() proc newContext*(protVersion = protSSLv23, verifyMode = CVerifyPeer, certFile = "", keyFile = "", cipherList = CiphersIntermediate, caDir = "", caFile = "", ciphersuites = CiphersModern) -> SslContext: var mtd: PSSL_METHOD when defined(openssl10): case protVersion of protSSLv23: mtd = SSLv23_method() proc pskClientCallback(ssl: SslPtr; hint: cstring; identity: cstring; max_identity_len: cuint; psk: ptr uint8; max_psk_len: cuint): cuint {.cdecl.} = let ctx = SslContext(context: ssl.SSL_get_SSL_CTX) proc pskClientCallback(ssl: SslPtr; hint: cstring; identity: cstring; max_identity_len: cuint; psk: ptr uint8; max_psk_len: cuint) -> cuint {.cdecl.}: let ctx = SslContext(context: ssl.SSL_get_SSL_CTX) Run