EOSCC v1.6.3 출시

Jeeyong Um
4 min readOct 7, 2019

https://github.com/turnpike/eoscc/releases/tag/v1.6.3

EOSIO 컴파일러 컬렉션, EOSCC v1.6.3 을 배포합니다. EOSCC는 EOSIO.CDT (EOSIO 컨트랙트 개발 툴킷)의 대체 프로그램으로 버그 픽스와 실험적인 기능이 적용된 컨트랙트 컴파일러 및 표준 라이브러리를 포함하고 있습니다. EOSIO.CDT는 개발에 도움이 되는 다양한 도구를 포함하고 있지만, 현 버전의 EOSCC는 웹어셈블리 바이너리 및 ABI 생성을 위한 핵심 도구만을 포함하고 있습니다.

1.6.3 프리뷰 1 버전 출시 이후, 몇 가지 피드백을 받아 이를 반영하였습니다. 전체 변경 사항은 릴리스 노트에서 확인해주세요.

패키지명

패키지명을 EOSCC로 변경하였습니다. 예전 이름인 “sio4.cdt”는 이름에서 어떤 기능을 하는 프로그램인지 예상하기 어렵다는 지적이 있어 보다 직관적인 이름으로 변경하였습니다.

EOSIO.CDT와 함께 설치 가능

기존 버전에서는 EOSIO.CDT를 사용하던 개발자가 EOSCC 사용을 위해 새로 무언가를 배워야 되는 상황을 배제하려고, 빌드 환경 구축에 필요한 사항(실행 파일명 등)을 최대한 동일하게 작성하였습니다. 그 결과 EOSIO.CDT와 함께 설치해서 사용할 수 없었고, 실험적 도구를 사용해보기 위해 공식 제공되는 도구를 삭제해야 하는 문제가 있었습니다.

이제 EOSCC를 EOSIO.CDT와 함께 설치하여 사용 가능합니다. 단, 충돌을 피하기 위해 다음과 같이 파일 명이 변경되었습니다.

  • eoscc (eosio-cc)
  • eosc++ (eosio-cpp)
  • eosld (eosio-ld)
  • eosranlib (eosio-ranlib)
  • eosar (eosio-ar)

컨트랙트를 컴파일 하려면 다음 명령을 사용합니다.

eosc++ -o test.wasm test.cpp --abigen

이제 EOSIO.CDT와 EOSCC에서 제공하는 두 컴파일러를 모두 사용해보고 그 결과물을 비교해볼 수 있습니다.

그 외 변경사항

런타임 타입 정보 지원

EOSCC는 EOSIO.CDT에서 지원하지 않는 typeid 연산자나 동적 타입 변환 dynamic_cast 같이 RTTI(Run-Time Type Information)가 필요한 기능들을 제공합니다. <typeinfo>, <typeindex> 헤더 파일을 컨트랙트에 포함시킬 수 있습니다.

libcxx 9.0.0 버전 업그레이드

프리뷰 버전에 포함된 9.0.0-rc2 버전 이후, EOSIO 컨트랙트 작성에 영향을 주는 큰 변경 사항은 없지만 정식 버전이 출시되었으므로 EOSCC도 해당 버전을 포함하였습니다.

permission_level 타입에 대한 < 연산자 오버로드

eosio::permission_level에 대해 < 연산자가 오버로드 되어 있지 않아 std::set 같은 표준 컨테이너를 permission_level 타입과 사용할 수 없는 문제가 수정되었습니다. 이 패치는 EOSIO.CDT에도 적용되었습니다.

eosc++로 컴파일시 c++ 컴파일 적용

c++과 c 소스 파일을 eosio-cpp로 함께 컴파일 하는 경우, c++ 컴파일 옵션이 c 파일에 적용되어 빌드에 실패하는 문제가 수정되었습니다. 이 패치는 EOSIO.CDT에도 적용되었습니다.

책임 배제

소프트웨어는 “있는 그대로” 제공된다. 판매적격성, 특정 용도에 대한 적합성, 준법성, 혹은 그 이상의 범위를 포함한 사항에 있어서, 명시적 혹은 암시적인 어떠한 보증도 하지 않는다. 계약, 불법행위등의 과정상의 개입여부에 상관없이 어떠한 상황에서도, 본 소프트웨어의 저작자 혹은 저작권자는, 소프트웨어에서 혹은 소프트웨어와 연관되어 발생하는, 또한 사용과정중 혹은 기타 거래도중 발생하는 어떠한 소유권 청구, 피해, 혹은 기타 다른 법적 책임에 대해서도 책임을 지지 않는다.

--

--