개발/Developing
Compiler Explorer
lazykuna
2022. 3. 5. 01:01
Compiler Explorer
오늘도 하릴없이 인터넷을 하다가... 우연히 재미있는 물건을 봤다. 바로 Compiler Explorer이라는 것이다.
주소는 https://godbolt.org 이고, 하는 일은 간단하다. 코드를 입력하면 해당 코드의 어셈블리를 바로 보여준다.
이런 느낌으로다가..
지원하는 언어와 컴파일러가 굉장히 많다. 글 작성 시점 기준으로, 지원 언어의 경우에는 아래와 같다.
- Ada
- Analysis
- Assembly
- C
- C#
- C++
- C++ (Circle)
- C++ for OpenCL
- Clean
- Cppx
- Cppx-Blue
- Cppx-Gold
- Crystal
- CUDA C++
- D
- Dart
- Erlang
- F#
- Fortran
- Go
- Haskell
- ispc
- Java
- Kotlin
- LLVM IR
- Nim
- OCaml
- OpenCL C
- Pascal
- Python
- Ruby
- Rust
- Scala
- Swift
- Visual Basic
- Zig
C 기준으로 지원하는 컴파일러는 버전별로 어지간하면 다 있다고 보면 된다. Gcc/Clang은 물론이고, 버전별로 4.x대부터 11.x 대까지 있으며, MSVC도 있고, 플랫폼별 코드도 만들어준다. 심지어 Gcc(WinCE) 까지!
그렇게 중요한 건 아니지만 에디터로서의 기능도 이것저것 제공하고 있어 꽤 쓰기도 좋다.
일일이 다 설치하고 테스트한답시고 로컬에 삽질해대는 고생도 덜 수 있고, 고도로 추상화된 stl과 같은 라이브러리가 효율적인 코드를 만들어내는지와 같은 것도 확인할 수 있고, 이모저모 삽질 좋아하는 사람들에게는 아주 좋은 사이트다.
또 재미있는 건, 내부 구조에 대한 정리글이 있다. How it works: Compiler Explorer 글을 읽어보면,
- Load balancer + EC2 조합으로 수행되는 서비스.
- EC2 인스턴스에서는 Ubuntu + Docker + a 기반의 AMI (Amazon machine instance image) 이미지로 구동이 된다.
- 여기서 Docker 기반의 장단점을 이야기하는데, Dockerfile 관리의 미묘한 어려움, 그리고 large image 사이즈를 단점으로 꼽고 있다... 그런데 build machine에서 large image는 어쩔 수 없이 감내해야 하는 요소 아닌감..?
- 모든 작업을 자동화시켜놓았기 때문에, Deploy는 단순히 새 instance를 띄우고 기존 instance down하면 끝나는 방식이라고 한다.
- (인프라 세팅을 포함한) 작업 내역은 Github에 정리해 놓았으니 필요하다면 참고하면 큰 도움이 될 듯.