Giter Site home page Giter Site logo

hot-reload-c's Introduction

Hot Reload C

A simple SDL2 program to demonstrate how to hot reload C.

demo.mp4

Build

This program can be built on MacOS and Linux.

First you need to install SDL2:

  • MacOS: brew install sdl2
  • Linux: Check your package manager, e.g. on Manjaro, pacman -S sdl2

Then clone the code and build

$ git clone ... && cd ...
$ make run
# while the program is running, modify render.c and rebuild
$ make build
# and then the program will be hot reloaded 🚀

Idea

The main idea behind this is Shared Library a.k.a Dynamic Loaded Library.

We compile the render logic into a separate shared library and load it in main program dynamically via these apis:

  • dlopen
  • dlclose
  • dlsym

So while the main program is running, we can rebuild our render library to hot load the main program.

Google dynamic linking for more details.

hot-reload-c's People

Contributors

cj1128 avatar

Stargazers

SpaceFish avatar Onur Baran Yılmaz avatar Eric Flick avatar Jeremy Field avatar  avatar  avatar İsmail Özsaygı avatar  avatar  avatar zj avatar  avatar Tian Xie avatar  avatar  avatar Joshua Dyer avatar rtee+ avatar flyfire avatar Anand Singh avatar Archer avatar Siqing Zheng avatar  avatar Peng Peidong avatar  avatar  avatar rayworks avatar 飞 avatar  avatar chasel avatar FSSlc avatar  avatar XiangNanLI avatar Bryan Zhang avatar  avatar Shu cheng avatar Lionheart Zhang avatar Yonghao Zou avatar yanagiragi avatar  avatar Jiewen.Wang avatar hyrious avatar ruki avatar Rick avatar dodola avatar senninha avatar 玩牛牛 avatar Sandeepin avatar  avatar kuangyan avatar Wangyou Zhang avatar Swizard avatar Steve Xu avatar HaveF avatar  avatar 周子豪, Zhou Robot ZiHao avatar 今天你写bug了吗 avatar HeartJ avatar  avatar  avatar  avatar Kun Zhou avatar Aldas avatar  avatar 万里 avatar  avatar Tom-ming avatar 仿生狮子 avatar

Watchers

James Cloos avatar  avatar  avatar

hot-reload-c's Issues

每次都reload so

为什么每次都要reload so?使用signal触发动态库的更新可以么

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.