리눅스 컴파일러에 기존 메모리 참조 모델 적용

엠바카데로는 RAD 스튜디오 컴파일러는 객체 메모리 관리 모델을 ARC(Auto Reference Count) 메모리 모델에서 기존 델파이 모델(non-ARC)로 전체적으로 통합할 계획을 갖고 있습니다.

10.3 리오에서는 먼저 리눅스 64비트 컴파일러에 대해 ARC 모델에서 non-ARC 모델로 변경되었습니다.

 

객체에대한 ARC 모델을 사용하지 않는 이유는 다음과 같습니다.

  • 윈도우(VCL)을 ARC로 전환 시 기존 애플리케이션과 컴포넌트 변경은 많은 문제 발생 가능
  • ARC 모델과 non-ARC 모델 2개의 모델로 인한 복잡성을 제거
  • 리눅스와 모바일의 FireMonkey 성능 향상

엠바카데로는 윈도우(VCL)을 ARC로 전환할 수 있었지만, 기존 애플리케이션과 컴포넌트가 전반적으로 변경되어 이전의 유니코드 마이그레이션 보다 훨씬 더 많은 문제가 발생할 수 있습니다.

ARC 모델은 메모리 해제등의 메모리 관리 일부를 제고하고, 단순화 하기 때문에 기존 델파이 모델에 비해 개선된 것으로 생각해 왔습니다. 지역 변수 및 단순한 시나리오에서는 ARC는 서류상으로 훌륭해 보이지만, 큰 규모의 프로젝트를 제작하고 유지할때 복잡한 코드와 시나리오에서 문제를 일으킨다는 것을 알게되었습니다. 또한, TComponent 기반 모델은 ARC와 상충되어 ARC 지원하는 기존 컴포넌트를 복잡하게 합니다.

 

두가지 메모리 모델을 선택적으로 제공하라는 요청도 많았지만, ARC 지원하는 객체와 지원하지 않는 객체는 쉽게 공존할 수 없으며, 두가지 유형의 객체를 모두 지원하는 컨테이너가 필요할 것이고 결국 복잡한 시나리오만으로 끝날 것입니다.

 

또한, ARC를 비활성화하는 이유중 하나로 향후 10.3의 Linux와 모바일의 FireMonkey의 성능향상을 기대하고 있습니다.

 

위 이유로 엠바카데로는 하나의 메모리 모델로 통합해 복잡성을 줄이고 성능을 향상하는 방향을 선택했습니다.

10.3 리오에서는 Linux 64비트 컴파일러에 대해 우선적으로 적용되었습니다. 향후 예정된 MacOS 64비트와 모바일 컴파일러에도 점진적으로 non-ARC 모델이 적용될 것입니다.(현재 10.3 리오 모바일 플랫폼의 컴파일러는 ARC 모델 적용 중입니다.)

 

리눅스에서 AnsiString과 AnsiChar 지원

10.3 부터 리눅스 64비트 컴파일러는 NEXTGEN 정의가 비활성화됩니다.

 
리눅스 컴파일러(LLVM 기반 컴파일러 엔진)에 대한 NEXTGEN 구성을 비활성화 함으로 기존의 AnsiChar/AnsiString 데이터 유형을 지원할 수 있게 되었습니다. 리눅스에서도 유니코드가 선호됩니다. 윈도우와 리눅스의 Ansi 코드 페이지가 일치하지 않는 경우 주의가 필요합니다. 그러나 기존의 로우레벨 문자열 관리 코드와 호환성을 높이는데 도움이 될 수 있습니다.

 

 

 

 

10.3 리오의 업데이트 버전들

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15440
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13961
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39255
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174699
503 [시애틀] 안드로이드 서비스 앱을 만들 수 있습니다. Humphery 2015.09.07 691
502 [시애틀] 블루투스 LE를 지원하는 디바이스에서 비콘 광고데이터를 발생할 수 있습니다. file Humphery 2015.10.06 689
501 [10.4 시드니][패치] RAD스튜디오 10.4 '세 번째 패치(Patch 3)': VCL그리드, C++Win64 디버깅, C++ 안드로이드 예외처리 핸들링 및 리소스 등 관리자 2020.07.29 686
500 [고객사례-유틸리티, 델파이] 녹음기 앱 - Voice Recorder 관리자 2019.12.10 686
499 [고객 사례- 3D, 시뮬레이션, 델파이] 3D Train Studio 관리자 2017.03.02 681
498 [베를린 U1] 윈도우 태스크바 알림의 뱃지를 제어할 수 있습니다. 험프리 2016.09.20 680
497 [10.4 시드니 신기능] iOS와 맥OS 지원 강화 관리자 2020.06.04 680
496 [고객 사례- 의료, 델파이+임베디드DB] Siemens Healthcare 의 체외진단기기 (IVD, In Vitro Diagnostics) file 관리자 2016.11.03 680
495 [커뮤니티 에디션] 사용 자격 기준 정리 관리자 2018.11.29 679
494 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 17. 1차원 정적 배열 관리자 2019.03.29 678
493 [프로그래밍 애피타이저] 8장 SQL 정의와문법 file 김원경 2020.04.09 677
492 [10.4 시드니 신기능] 언어 서버 프로토콜 (LSP, Language Server Protocol) 관리자 2020.06.04 676
491 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 7. 중접된 If...Then...Else 문. 작업 해결 실습하기 관리자 2019.03.29 676
490 [업데이트][핫픽스][10.1 베를린] 갤럭시 S7 Edge(안드로이드 6.0.1) 디버깅이 되지않는 이슈 패치 험프리 2016.05.27 676
489 [델파이 샘플 코드] 안드로이드, iOS, OSX, 윈도우, 리눅스, HTML5 관리자 2019.11.13 674
488 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 23. 타이머 관리자 2019.03.29 674
487 [도서/PDF/소스코드] 델파이 Begin...End - 14장. 분산처리(DataSnap) 관리자 2019.08.20 672
486 Class에서 Interface 두 개 구현할 때, 이 둘이 동일한 이름의 메소드(Method)를 가지고 있다면? file 험프리 2019.12.11 671
485 가장 강력한 ‘데이터베이스 연동’ 기능을 자체적으로 제공하는 프레임워크는? (델파이 VS. WPF VS. ELECTRON) 관리자 2021.03.04 669
484 델파이, C++빌더의 윈도우10과 High DPI 디스플레이 지원 김원경 2020.02.28 668