less than 1 minute read

havok에서 사용하는 RTTI 코드 생성 자동화, script binding 정책, memory reporting 방법을 소개

developer taxes

It’s something you do, not because it actually benefits you specifically, but because it benefits the software landscape as a whole. - Raymond Chen

reflection

nil

  • build 과정에 자동으로 reflection 생성
    • pre-build 스텝에
  • 자동화를 해서 수동으로 reflection을 만들 때 문제점을 해결
    • out-of-sync errors
  • reflection data unit test도 수행

runtime introspection

nil

slimmer script bindings

nil

  • wrapper와 native가 1:1 관계인 걸 fat bindings라 정의
  • signature에 따라 trampoline을 생성해 실제 native와 바인딩
  • memory cost가 줄어들고 multilanguage(lua, python, …)가 가능
    • trampoline을 공유할 수 있기 때문
  • 다만 indirection이 늘어 속도에서 불이익

memory reporting

nil

  • 수동으로 하지 않는다.
  • type root부터 시작해 reflection을 사용해 메모리 사용량을 다 알아냄.

versioning

nil

nil

  • 버전 간 패치를 일반화한 것에 주목.
  • 그리고 metadata 비교로 자동으로 만들어 내는 것도 주목.
  • 테스트하기가 더 쉽다.

see also

발표