English/expressions

[IT상식] shim 심 이란?

방황하는 데이터불도저 2024. 1. 25. 18:01

애플리케이션에 구현된 프레임워크의 버전이 deprecated(구 버전이되어 더이상 지원하지 않는)되어 신규버전에서 호환되지 않는 경우가 흔히 발생한다. 심(shim)은 이러한 경우에 기존 애플리케이션이 돌아갈 수 있도록 지원하는 코드들이라고 생각할 수 있다.

 

참고 : https://en.wikipedia.org/wiki/Shim_(computing)

 

Shim (computing) - Wikipedia

From Wikipedia, the free encyclopedia Software that intercepts and modifies behavior Not to be confused with shm, an abbreviation for shared memory, often pronounced "shim", or a CPU shim, a physical spacer for a heat sink. The TI Ducati SIP core does vide

en.wikipedia.org

컴퓨터 프로그래밍에서 심은 API 호출을 투명하게 가로채서 전달된 인수를 변경하거나, 연산 자체를 처리하거나, 연산을 다른 곳으로 리디렉션하는 라이브러리입니다.[1][2] 심은 최신 환경에서 오래된 API를 지원하거나, 이전 환경에서 새로운 API를 지원하는 데 사용할 수 있습니다. 또한 개발된 소프트웨어 플랫폼과 다른 소프트웨어 플랫폼에서 프로그램을 실행하는 데에도 심을 사용할 수 있습니다.

이전 API용 쉼은 일반적으로 API의 동작이 변경되어 여전히 이전 기능에 의존하는 이전 애플리케이션에 호환성 문제가 발생할 때 발생하며, 이러한 경우 최신 코드 위에 얇은 호환성 계층을 추가하여 이전 API를 계속 지원할 수 있습니다. 최신 API를 위한 심은 다음과 같이 정의됩니다: "해당 환경의 수단만을 사용하여 새로운 API를 이전 환경에 제공하는 라이브러리"[3]로 정의됩니다.

번역 : DeepL

 

 

https://developer.mozilla.org/ko/docs/Glossary/Shim

 

심 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

심shim은 이미 존재하는 코드의 동작을 바로잡는 데 사용되는 코드 모음이며, 보통 문제를 야기시키는 신규 API에 대응한다. 시중에 배포된 브라우저에서 지원되지 않는 신규 API를 구현하는 폴리

developer.mozilla.org

심shim은 이미 존재하는 코드의 동작을 바로잡는 데 사용되는 코드 모음이며, 보통 문제를 야기시키는 신규 API에 대응한다. 시중에 배포된 브라우저에서 지원되지 않는 신규 API를 구현하는 폴리필(polyfill)과 대조된다.

 

 

단어 본래의 의미는 틈을 메우는 무언가에 shim이라는 단어를 쓰는데, 구버전 API와 신규API 사이의 틈을 메꾼다는 의미로도 shim을 사용하는 것으로 보인다.

 

하나의 사례로 Tensorflow 1.0 version에서 2.0 version 사이를 이어주기 위한 shim이 있다.

Use TF1.x models in TF2 workflows

 

TF2 워크플로에서 TF1.x 모델 사용하기  |  TensorFlow Core

TF2 워크플로에서 TF1.x 모델 사용하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드는 즉시 실행, tf.function, 모델링 코드 변경을 최소화하는 배포

www.tensorflow.org

This guide provides an overview and examples of a modeling code shim that you can employ to use your existing TF1.x models in TF2 workflows such as eager execution, tf.function, and distribution strategies with minimal changes to your modeling code.

 

tensorflow의 경우에는 python의 decorator 기능을 사용하여 shim을 제공한다. 위키에 나와있는 내용"최신 코드 위에 얇은 호환성 계층을 추가하여 이전 API를 계속 지원"처럼 약간의 코드 변형으로 TF 1.0 버전의 코드를 원활히 사용할 수 있게 shim들에 대해 doc을 제공한다.