7P by GN⁺ 13시간전 | ★ favorite | 댓글 2개
  • 임베디드 시스템 개발에서 LuaMicroPython보다 높은 안정성과 확장성을 제공함
  • LuaC와의 통합이 쉽고, 가볍고, 결정론적인 구조를 가지며, 코드 유지보수성장기적 비용 절감에서 더 큰 이점을 보임
  • MicroPython은 빠른 프로토타이핑에는 적합하지만, 대규모 프로젝트나 프로덕션 환경에서는 한계에 부딪힘
  • Lua는 작고 효율적인 실행 파일로 빌드되어 불필요한 기능 없이 운영 가능하며, 프로토타이핑에서 제품화까지 확장성과 유지관리성이 높음
  • Xedge 프레임워크는 Lua를 임베디드 시스템에 최적화하여 강력한 IoT, 웹 기능을 제공함

임베디드 프로페셔널 환경에서 Lua vs. MicroPython

  • 산업 자동화, 의료기기, 상업용 IoT 등 전문 임베디드 프로젝트에서 고수준이면서도 경량적인 환경이 점점 더 선호되는 추세임
  • MicroPython은 빠른 프로토타이핑과 현장 배포에 강점이 있으나, 주로 취미/교육용 보드 중심의 생태계
  • Python의 강점인 NumPy, pandas 같은 대형 라이브러리가 MicroPython에는 없으며, 표준 라이브러리도 대폭 축소되어 있음
  • C 확장과의 통합도 MicroPython은 상대적으로 복잡
  • Lua는 C 애플리케이션과의 통합을 근본 철학으로 채택
    • 안정적이며 미니멀한 C API와 바이트코드 가상머신 제공
    • C/C++ 함수와 자료구조를 Lua에 쉽게 노출 가능
    • Lua ANSI C 라이브러리는 임베디드를 위해 설계되어 구조가 간결, 경량, 결정론적
  • MicroPython은 Python 3의 재구현으로, 데스크톱 지향 언어의 가정이 남아 있어 리소스가 제한된 환경에서 한계가 빨리 드러남

심리스한 C 연동은 Lua의 핵심

  • Lua의 가장 큰 장점은 C와의 매끄러운 통합
  • API가 안정적이고 최소화되어 있으며, 자체 C/C++ 함수와 데이터 구조를 Lua에 쉽게 노출할 수 있음
  • MicroPython도 C 확장을 지원하지만, 커스텀 펌웨어 빌드가 필요하고 워크플로가 더 복잡함
  • Lua는 C 연동 자체가 설계 철학
    • Lua C API를 수동으로 사용하거나, SWIG 등 자동 바인딩 툴을 활용해 C 함수/구조체를 Lua에서 호출 가능
    • C의 성능이 중요한 로직은 C로, 고수준 비즈니스 로직은 Lua로 분리해 유지보수성과 확장성을 높일 수 있음

미니멀한 풋프린트와 확장성

  • Lua는 코어 인터프리터가 매우 작고, 필요 없는 기능은 쉽게 제거 가능
  • MicroPython도 임베디드용으로 최적화됐으나, 기본 이미지가 크고 필수 모듈 활성화 시 용량 증가 현상
  • 둘 다 빠른 프로토타이핑에 적합하지만, Lua는 프로덕션까지 확장성이 뛰어남
  • Lua는 고수준-저수준 분리 구조 설계가 쉬워, 빠르게 프로토타입 개발 후 유지 보수 가능한 하이브리드 구조로 발전 가능
  • Lua는 처음부터 C 코드와 결합하여 스케일업이 자연스럽고 개발 플로우가 단절되지 않음
  • MicroPython은 프로토타입 이후 코어 로직을 다시 작성해야 하거나 한계에 부딪힐 수 있음

생태계와 라이브러리 접근성 - Quality Over Quantity

  • MicroPython은 Wi-Fi 보드 등 취미/교육용 하드웨어 중심의 생태계가 활발하지만, 대형 Python 생태계의 주요 라이브러리 부재
  • Lua는 라이브러리 수는 적지만, C로 쉽게 확장 가능하며, 생태계의 한계에 덜 부딪힘

유지관리 및 비용 측면의 장점

  • Lua는 코드베이스가 작고, 테스트·디버깅·인수인계가 쉬움
  • 프로젝트 확장시 Lua 스크립트와 C 코어 간 레이어 분리 유지, 인계 및 협업에 유리함
  • MicroPython도 가독성은 높으나, 프로젝트가 커질수록 시스템 코드와 스크립팅 레이어가 혼재되는 경향이 있어 유지보수 비용이 상승할 수 있음

결론: Choose What Scales

  • 교육 및 프로토타이핑 목적이라면 MicroPython도 훌륭한 선택
  • 보안, 신뢰성, 유지보수가 중요한 임베디드 제품에는 Lua가 더 실용적이며, 확장성·유연성·안정성을 동시에 제공
  • Lua는 단순한 스크립트 언어가 아니라, 임베디드 개발 전략

임베디드 기기에서 Lua C 라이브러리 통합 방법

  • Lua C 라이브러리는 경량·ANSI C 호환·표준 C 라이브러리 외에는 의존성이 거의 없음
  • 베어메탈, RTOS 기반 시스템에 적합하며, 표준 C의 stdin/stdout 등 일부 요소는 포팅시 주의 필요
  • Real Time Logic의 Xedge Framework

    • Xedge Framework임베디드 환경에 최적화된 Lua 런타임 및 API 세트를 제공
    • TLS, MQTT5, WebSocket 등 보안 통신, RESTful 웹서비스, 실시간 데이터 처리, Modbus/OPC UA 프로토콜 등 IoT/웹 기능 내장
    • Lua의 유연성과 경량성을 유지하면서도, 실전 투입이 가능한 완성형 임베디드 프레임워크를 제공
  • Lua를 임베디드 제품에 내장하려면 Xedge가 가장 실용적인 선택지로, 통합을 단순화하고 개발 속도를 높이며, 차별화된 로직에 집중할 수 있게 함

애초에 장비 생산하는 컴포넌트 생산 업체에서 lua든 python 지원을 잘 안함. c 정도?

Hacker News 의견
  • 게임 엔진을 만들어서 전체 게임을 스크립팅 언어로 작성하는 걸 결심했을 때, JavaScript(QuickJS), Python(Boost.Python), Lua(Sol2) 세 가지 중에서 고민했음
    Lua를 임베딩하는 게 정말 쉽고, C++ 래퍼와 함께 써도 매우 간편함
    얼마 안 걸려서 '이 정도면 바로 쓸 수 있겠다' 싶은 엔진을 갖추게 됨
    게다가 Lua VM은 아주 가벼움
    자세한 내용은 carimbo 프로젝트에서 볼 수 있음

    • 엔진이나 애플리케이션에서 Lua를 스크립트로 지원한다는 걸 보면 Fennel을 사용할 수 있다는 점이 마음에 듦
      Fennel은 Lua로 트랜스파일되는 언어임
      Fennel 공식 링크

    • 개인적으로 Boost.Python은 스크립팅 도구로 별로라고 생각함
      이 점이 판단에 영향을 줄 수도 있다고 봄

    • Sol2가 Lua VM인지, 아니면 표준 Lua VM의 래퍼일 뿐인지 궁금함

  • 'Lua는 단순한 고수준 언어가 아니라 임베디드 개발 전략'이라는 문구는 납득하기 어렵다고 느낌
    이런 식의 표현이 들어간 글은 진지하게 받아들이기 힘듦

    • 전체적으로 '나는 Lua를 오래 써봤으니 이제 결론 내릴 수 있다'는 느낌의 글임
      MicroPython에 대해서는 실제로 경험이 별로 없어 보이는데 몇 가지 과장된 비판이 있음
      예를 들어 "MicroPython 프로젝트는 시스템 코드와 스크립트 레이어가 뒤섞여 유지보수가 어렵다"는 얘기엔 근거가 약함
      언어나 프로젝트 관리/구조 설계의 영향일 수 있는데, 원인은 엄밀하게 평가돼야 한다고 생각함

    • 이 글은 실제 기사보다 Xedge Lua 프레임워크 광고처럼 느껴짐
      그냥 광고임

    • 전반적으로 글이 chatgpt 스타일 같음
      광고 글의 경우, 사람이 썼든 LLM이 썼든 상관없어 보임

    • 댓글들도 언급했듯이 chatgpt 느낌이라 글을 읽으며 별로 즐겁지 않았음

  • PLDB Top 1000 리스트에서 Lua가 MicroPython보다 더 높은 순위에 있음
    이 비교 글에서 Github 유저 SkipKaczinksi는 Lua가 대체로 더 빠르다고 봄
    Hackaday 글의 Michael Polia도 Lua가 작고 빠르다고 언급함
    Toit 언어는 MicroPython보다 30배 빠르다고 주장함
    Toit의 창립자는 V8의 초기 개발 책임자였음

  • "임베디드(embedded)"와 "임베더블(embeddable)" 개념은 구분이 필요함
    MicroPython은 임베디드 플랫폼에서 사용되지만, Lua처럼 기존 애플리케이션에 통합하는 '임베더블 런타임'은 아님
    MicroPython의 목적은 전통적인 C 런타임을 대체해 최소한의 C 래퍼로 초기화만 하고 나머지 비즈니스 로직을 MicroPython 스크립트로 작성하게 하는 것임
    Lua의 lua_State처럼 여러 인터프리터를 동시에 쓸 수 있는 구조나 샌드박싱이 없음
    즉, MicroPython은 '게임 엔진 내에서 스크립트로 빠른 반복 개발'보다는 'IoT 보드에서 파이썬으로 센서 데이터 읽기'에 최적화돼 있음

    • MicroPython이 Lua처럼 임베더블은 아니지만, 아예 불가능하지는 않음
      완전히 박스 밖에서 쓸 수는 없고, 글루 코드 정도는 필요함
      참고 자료로 embed 포트 예시를 볼 수 있음
  • Lua는 임베디드 용도로도 훌륭한 언어라고 생각함
    Lua 기반 제품도 좋다고 생각하지만, 이 글에서 '왜 Lua가 MicroPython을 이기는지' 설득력이 떨어짐
    MicroPython을 C로 확장하는 건 생각보다 쉽고, 공식 모듈 개발 방식과 똑같이 외부 모듈도 개발하면 됨
    그래서 펌웨어 커스텀 빌드시 어렵지 않게 추가할 수 있음
    그리고 Python 계열 라이브러리(numpy 등)가 안 된다는 지적이 있었지만, 실제로는 numpy와 scipy 일부를 리이벤트한 ulab 라이브러리도 존재함

  • 개인적으로 들은 이야기는 마케팅 문구로 느껴짐
    마이크로컨트롤러에서 충분한 리소스가 있으면 micropython을 씀
    전력, 메모리, CPU 제어가 정말 중요하면 결국은 C/C++을 씀
    네트워크 관련 개발은 C/C++에서 어렵지만 빠르고 안전하게 할 수 있는 옵션이 부족했는데(최근엔 내장 TLS 지원도 더 좋아졌을 것 같음)
    Lua는 C를 부드럽게 포장한 느낌임
    라이브러리가 풍부하면 좋지만, 직접 Lua 툴체인, 마이크로컨트롤러 툴체인, 필요한 라이브러리를 모두 포팅해야 하는 부담이 큼
    그래서 이 부분이 마케팅 글이면 Xedge 제품을 써서 외주 주라는 메시지라고 생각함

    • 'micropython을 쓰려면 리소스가 넉넉해야 한다'는 이야기에
      그냥 2350에서도 잘 돌아간다고 짧게 언급함
  • 정말 '진지하게' 임베디드 개발에 micropython이나 lua를 쓰는 사람이 있는지 궁금함

    • 20년 가까이 프리랜서로 Lua 중심의 임베디드 제품을 만들었음
      VOIP 기기, 홈 오토메이션, 산업용 라우터, 디지털 비디오 레코더 등 다양한 분야에서 Lua를 활용함
      보통 시스템은 Linux 커널, libc, Lua 인터프리터, 그리고 몇몇 외부 라이브러리로 구성됨
      Lua 애플리케이션 소스는 3만~10만 줄 정도로, 요즘 기준으론 '작은' 제품도 있음(플래시 8MB, 램 64MB 등)
      Lua는 이런 환경에서 잘 동작함
      모두 현역 제품이고, 고객에게도 돈이 되고 있음
      Lua와 C의 연동은 매우 쉽고, 비동기 적으로 작업하는 데도 현대 언어들이 아직도 고민할 수준을 Lua는 예전부터 해결해옴
      언어는 단순하면서도 강력하고, 코루틴, 클로저, 메타테이블 등으로 다양한 패러다임을 쓸 수 있음
      이런 스케일의 프로젝트라면 여전히 Lua + C/C++ 조합을 선택할 것임
      다른 생태계(Elixir, Rust, Nim)도 써봤지만, Lua만큼 강력하고 유연한 언어는 못 찾음

    • 우리는 MicroPython으로 class B 의료기기까지 개발하고 있음

    • 임베디드 세계는 범위가 매우 넓음
      안전에 민감하면 규정상 못 쓰지만, 테스트 장비 등은 규제에 상관없으니 편한 걸 씀
      IoT 영역에서도 모두 각자 편리한 걸 쓴다고 보면 됨

    • MicroPython이 큐브샛(소형 위성) 등 위성 임무에도 실제로 쓰임
      관련 컨퍼런스와 팟캐스트 사례도 존재함

    • 수천 개 제품이 Lua를 내부적으로 사용하거나 일부에라도 쓰고 있음
      최근 LuaJIT도 조사해봤는데 저평가됐다고 생각함

  • '진지한 임베디드 개발자'는 대부분 컴파일 언어를 쓴다고 생각함

    • 결국은 바이트코드로 컴파일되니 일종의 컴파일된 언어라고 볼 수도 있음
  • 취미로는 그냥 Arduino(Platformio)를 이용함
    마이크로컨트롤러에서는 컴파일하고 플래시 올리는 게 금방이라 굳이 인터프리터가 필요하진 않음
    언젠가 C++을 대체할만한 다른 컴파일 언어도 써보고 싶음
    Raspberry Pi Pico에서 잘 동작하는 추천 언어 있을지 궁금함

    • 전문가까지는 아니지만, Rust가 가장 인기 있는 대안 중 하나라고 느낌
      트렌디하고 C++의 문제도 많이 고쳤으며 툴링도 괜찮은 편임
      Zig도 재밌어 보여서 시도해보고 싶음
      Raspberry Pi는 사양이 좋아서 시스템 언어가 아니어도 돌아갈 수 있음
      Kotlin도 좋아하고, 기본적으로는 JVM이 필요하지만 native 빌드 가능함
      다만 Pico에서 GPIO 제어는 파일시스템을 직접 건드려 써야 할 수도 있음(덧붙여 Pico에서 Kotlin 지원은 확실하지 않음)

    • Nim이 꽤 괜찮은 옵션으로 보임
      관련 자료는 picostdlib의 Nim 지원 참고

  • Lua는 본질적으로 훨씬 더 단순한 언어임
    Python은 '한 가지 방법만 있다'는 신념을 갖고 있지만 실제로는 이것저것 다 넣어둔 '만능툴' 같은 느낌임
    이게 오히려 시작하기 쉽고, 라이브러리도 많아서 쉽게 개발할 수 있지만
    리소스가 부족한(작은) 환경에는 잘 어울리지 않음
    화려한 의자를 꼭 판자로 에임스 체어로 변형시키는 데에는 한계가 있음

    • Python은 쉽고 Lua는 단순함
      '쉬움'의 문제는 내부 복잡성이 숨어 있다는 것이고, '단순함'은 사용자에게 더 많은 노력이 필요함을 의미함

    • Python은 버전 호환성이 취약해서 3.x에서 3.x+1로 넘어갈 때 문제가 자주 발생함
      Lua도 완벽하진 않지만, 그래도 여러 Lua 버전을 지원하는 사례가 많아서 급격한 버전 업그레이드를 강제받지 않는 장점이 있음