diff --git a/README.md b/README.md index f9567fa88..a79e53c3a 100644 --- a/README.md +++ b/README.md @@ -205,6 +205,8 @@ Executables also return a S-Expression according to SRFI-176 use `lips --version [![FOSDEM 2023 - LIPS Scheme: Powerful introspection and extensibility](https://github.com/jcubic/lips/blob/devel/assets/fosdem-intro.png?raw=true)](https://fosdem.org/2023/schedule/event/lipsscheme/) ## Limitations + +### Performance Because LIPS is tree walking interpreter sometimes it may be slow. Especially if you want to process long arrays and use callback function. If the array is quite large each piece of code inside the callback may slow down the processing. For example see: @@ -234,6 +236,13 @@ Examples: The issue with performance is tracked in [#197](https://github.com/jcubic/lips/issues/197). +### JavaScript callbacks + +Another limitations is when using JavaScript libraries that require normal values but got a Promise instead. +This can happen with React/Preact, when the component return a Promise. Some macros can be async +(return a Promise), which will break React app when using in components. Example of a macro that is async is +`do` macro. So when using React or Preact and when you need to use a promise use promise quotation and `useEffect`. + ## Supported SRFI ### built-in diff --git a/templates/README.md b/templates/README.md index 616879f26..2367932cb 100644 --- a/templates/README.md +++ b/templates/README.md @@ -205,6 +205,8 @@ Executables also return a S-Expression according to SRFI-176 use `lips --version [![FOSDEM 2023 - LIPS Scheme: Powerful introspection and extensibility](https://github.com/jcubic/lips/blob/{{BRANCH}}/assets/fosdem-intro.png?raw=true)](https://fosdem.org/2023/schedule/event/lipsscheme/) ## Limitations + +### Performance Because LIPS is tree walking interpreter sometimes it may be slow. Especially if you want to process long arrays and use callback function. If the array is quite large each piece of code inside the callback may slow down the processing. For example see: @@ -234,6 +236,13 @@ Examples: The issue with performance is tracked in [#197](https://github.com/jcubic/lips/issues/197). +### JavaScript callbacks + +Another limitations is when using JavaScript libraries that require normal values but got a Promise instead. +This can happen with React/Preact, when the component return a Promise. Some macros can be async +(return a Promise), which will break React app when using in components. Example of a macro that is async is +`do` macro. So when using React or Preact and when you need to use a promise use promise quotation and `useEffect`. + ## Supported SRFI ### built-in