Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C files don't cache. #22

Closed
treeform opened this issue Oct 12, 2021 · 2 comments
Closed

C files don't cache. #22

treeform opened this issue Oct 12, 2021 · 2 comments

Comments

@treeform
Copy link

treeform commented Oct 12, 2021

So for most other static c projects the C files compile once and get cached. Which gives you fast compile time. But for some reason with this library the c files are compiled every-time like I am running with -f force recompile switch.

test script:

import bearssl
echo "here"

Channing the echo forces everything to recompile again which is very slow to develop:

CC: ccopy
CC: dec16be
CC: dec16le
CC: dec32be
CC: dec32le
CC: dec64be
CC: dec64le
CC: enc16be
CC: enc16le
CC: enc32be
CC: enc32le
CC: enc64be
CC: enc64le
CC: pemdec
CC: pemenc
CC: ecdsa_atr
CC: ecdsa_default_sign_asn1
CC: ecdsa_default_sign_raw
CC: ecdsa_default_vrfy_asn1
CC: ecdsa_default_vrfy_raw
CC: ecdsa_i15_bits
CC: ecdsa_i15_sign_asn1
CC: ecdsa_i15_sign_raw
CC: ecdsa_i15_vrfy_asn1
CC: ecdsa_i15_vrfy_raw
CC: ecdsa_i31_bits
CC: ecdsa_i31_sign_asn1
CC: ecdsa_i31_sign_raw
CC: ecdsa_i31_vrfy_asn1
CC: ecdsa_i31_vrfy_raw
CC: ecdsa_rta
CC: ec_all_m15
CC: ec_all_m31
CC: ec_c25519_i15
CC: ec_c25519_i31
CC: ec_c25519_m15
CC: ec_c25519_m31
CC: ec_c25519_m62
CC: ec_c25519_m64
CC: ec_curve25519
CC: ec_default
CC: ec_keygen
CC: ec_p256_m15
CC: ec_p256_m31
CC: ec_p256_m62
CC: ec_p256_m64
CC: ec_prime_i15
CC: ec_prime_i31
CC: ec_pubkey
CC: ec_secp256r1
CC: ec_secp384r1
CC: ec_secp521r1
CC: dig_oid
CC: dig_size
CC: ghash_ctmul
CC: ghash_ctmul32
CC: ghash_ctmul64
CC: ghash_pclmul
CC: ghash_pwr8
CC: md5
CC: md5sha1
CC: mgf1
CC: multihash
CC: sha1
CC: sha2big
CC: sha2small
CC: i15_add
CC: i15_bitlen
CC: i15_decmod
CC: i15_decode
CC: i15_decred
CC: i15_encode
CC: i15_fmont
CC: i15_iszero
CC: i15_moddiv
CC: i15_modpow
CC: i15_modpow2
CC: i15_montmul
CC: i15_mulacc
CC: i15_muladd
CC: i15_ninv15
CC: i15_reduce
CC: i15_rshift
CC: i15_sub
CC: i15_tmont
CC: i31_add
CC: i31_bitlen
CC: i31_decmod
CC: i31_decode
CC: i31_decred
CC: i31_encode
CC: i31_fmont
CC: i31_iszero
CC: i31_moddiv
CC: i31_modpow
CC: i31_modpow2
CC: i31_montmul
CC: i31_mulacc
CC: i31_muladd
CC: i31_ninv31
CC: i31_reduce
CC: i31_rshift
CC: i31_sub
CC: i31_tmont
CC: i32_add
CC: i32_bitlen
CC: i32_decmod
CC: i32_decode
CC: i32_decred
CC: i32_div32
CC: i32_encode
CC: i32_fmont
CC: i32_iszero
CC: i32_modpow
CC: i32_montmul
CC: i32_mulacc
CC: i32_muladd
CC: i32_ninv32
CC: i32_reduce
CC: i32_sub
CC: i32_tmont
CC: i62_modpow2
CC: hkdf
CC: shake
CC: hmac
CC: hmac_ct
CC: aesctr_drbg
CC: hmac_drbg
CC: sysrng
CC: rsa_default_keygen
CC: rsa_default_modulus
CC: rsa_default_oaep_decrypt
CC: rsa_default_oaep_encrypt
CC: rsa_default_pkcs1_sign
CC: rsa_default_pkcs1_vrfy
CC: rsa_default_priv
CC: rsa_default_privexp
CC: rsa_default_pss_sign
CC: rsa_default_pss_vrfy
CC: rsa_default_pub
CC: rsa_default_pubexp
CC: rsa_i15_keygen
CC: rsa_i15_modulus
CC: rsa_i15_oaep_decrypt
CC: rsa_i15_oaep_encrypt
CC: rsa_i15_pkcs1_sign
CC: rsa_i15_pkcs1_vrfy
CC: rsa_i15_priv
CC: rsa_i15_privexp
CC: rsa_i15_pss_sign
CC: rsa_i15_pss_vrfy
CC: rsa_i15_pub
CC: rsa_i15_pubexp
CC: rsa_i31_keygen
CC: rsa_i31_keygen_inner
CC: rsa_i31_modulus
CC: rsa_i31_oaep_decrypt
CC: rsa_i31_oaep_encrypt
CC: rsa_i31_pkcs1_sign
CC: rsa_i31_pkcs1_vrfy
CC: rsa_i31_priv
CC: rsa_i31_privexp
CC: rsa_i31_pss_sign
CC: rsa_i31_pss_vrfy
CC: rsa_i31_pub
CC: rsa_i31_pubexp
CC: rsa_i32_oaep_decrypt
CC: rsa_i32_oaep_encrypt
CC: rsa_i32_pkcs1_sign
CC: rsa_i32_pkcs1_vrfy
CC: rsa_i32_priv
CC: rsa_i32_pss_sign
CC: rsa_i32_pss_vrfy
CC: rsa_i32_pub
CC: rsa_i62_keygen
CC: rsa_i62_oaep_decrypt
CC: rsa_i62_oaep_encrypt
CC: rsa_i62_pkcs1_sign
CC: rsa_i62_pkcs1_vrfy
CC: rsa_i62_priv
CC: rsa_i62_pss_sign
CC: rsa_i62_pss_vrfy
CC: rsa_i62_pub
CC: rsa_oaep_pad
CC: rsa_oaep_unpad
CC: rsa_pkcs1_sig_pad
CC: rsa_pkcs1_sig_unpad
CC: rsa_pss_sig_pad
CC: rsa_pss_sig_unpad
CC: rsa_ssl_decrypt
CC: prf
CC: prf_md5sha1
CC: prf_sha256
CC: prf_sha384
CC: ssl_ccert_single_ec
CC: ssl_ccert_single_rsa
CC: ssl_client
CC: ssl_client_default_rsapub
CC: ssl_client_full
CC: ssl_engine
CC: ssl_engine_default_aescbc
CC: ssl_engine_default_aesccm
CC: ssl_engine_default_aesgcm
CC: ssl_engine_default_chapol
CC: ssl_engine_default_descbc
CC: ssl_engine_default_ec
CC: ssl_engine_default_ecdsa
CC: ssl_engine_default_rsavrfy
CC: ssl_hashes
CC: ssl_hs_client
CC: ssl_hs_server
CC: ssl_io
CC: ssl_keyexport
CC: ssl_lru
CC: ssl_rec_cbc
CC: ssl_rec_ccm
CC: ssl_rec_chapol
CC: ssl_rec_gcm
CC: ssl_scert_single_ec
CC: ssl_scert_single_rsa
CC: ssl_server
CC: ssl_server_full_ec
CC: ssl_server_full_rsa
CC: ssl_server_mine2c
CC: ssl_server_mine2g
CC: ssl_server_minf2c
CC: ssl_server_minf2g
CC: ssl_server_minr2g
CC: ssl_server_minu2g
CC: ssl_server_minv2g
CC: aes_big_cbcdec
CC: aes_big_cbcenc
CC: aes_big_ctr
CC: aes_big_ctrcbc
CC: aes_big_dec
CC: aes_big_enc
CC: aes_common
CC: aes_ct
CC: aes_ct64
CC: aes_ct64_cbcdec
CC: aes_ct64_cbcenc
CC: aes_ct64_ctr
CC: aes_ct64_ctrcbc
CC: aes_ct64_dec
CC: aes_ct64_enc
CC: aes_ct_cbcdec
CC: aes_ct_cbcenc
CC: aes_ct_ctr
CC: aes_ct_ctrcbc
CC: aes_ct_dec
CC: aes_ct_enc
CC: aes_pwr8
CC: aes_pwr8_cbcdec
CC: aes_pwr8_cbcenc
CC: aes_pwr8_ctr
CC: aes_pwr8_ctrcbc
CC: aes_small_cbcdec
CC: aes_small_cbcenc
CC: aes_small_ctr
CC: aes_small_ctrcbc
CC: aes_small_dec
CC: aes_small_enc
CC: aes_x86ni
CC: aes_x86ni_cbcdec
CC: aes_x86ni_cbcenc
CC: aes_x86ni_ctr
CC: aes_x86ni_ctrcbc
CC: chacha20_ct
CC: chacha20_sse2
CC: des_ct
CC: des_ct_cbcdec
CC: des_ct_cbcenc
CC: des_support
CC: des_tab
CC: des_tab_cbcdec
CC: des_tab_cbcenc
CC: poly1305_ctmul
CC: poly1305_ctmul32
CC: poly1305_ctmulq
CC: poly1305_i15
CC: ccm
CC: eax
CC: gcm
CC: asn1enc
CC: encode_ec_pk8der
CC: encode_ec_rawder
CC: encode_rsa_pk8der
CC: encode_rsa_rawder
CC: skey_decoder
CC: x509_decoder
CC: x509_knownkey
CC: x509_minimal
CC: x509_minimal_full
CC: settings
CC: xmem
CC: vector
CC: names
CC: certs
CC: files
CC: test.nim
Nim Compiler Version 1.5.1 [Linux: amd64]
Compiled at 2021-01-27
Copyright (c) 2006-2021 by Andreas Rumpf

active boot switches: -d:release
@arnetheduck
Copy link
Member

we've noted this bug as well - most of the time, the caching works on a third compile - that said, the library uses {.compile.} and doesn't do anything fancy really - I would start looking in the compiler :/

@arnetheduck
Copy link
Member

nim-lang/Nim#19554 should fix this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants