diff --git a/docs/runtime/known_issues.md b/docs/runtime/known_issues.md index 1e6b3c7b18bf2d314979c2fec31fd7e343e67397..69db241a1ea1f6a92bbdff306aa40c2b8ab34f66 100644 --- a/docs/runtime/known_issues.md +++ b/docs/runtime/known_issues.md @@ -18,8 +18,14 @@ The current implementation of Reowolf has the following known issues: } ``` + Another solution would be to use an empty array and to put a port inside of that. Hacks galore! + - Reserved memory for ports will grow without bounds: Ports can be given away from one component to another by creating a component, or by sending a message containing them. The component sending those ports cannot remove them from its own memory if there are still other references to the transferred port in its memory. This is because we want to throw a reasonable error if that transferred port is used by the original owner. Hence we need to keep some information about that transferred port in the sending component's memory. The solution is to have reference counting for the ports, but this is not implemented. - An extra to the above statements: when transferring ports to a new component, the memory that remembers the state of that port is removed from the component that is creating the new one. Hence using old references to that port within the creating component's PDL code results in a crash. -- Some control algorithms are not robust under multithreading. Mainly error handling when in sync mode (because there needs to be a revision where we keep track of which components are still reachable by another component). And complicated scenarios where ports are transferred. \ No newline at end of file +- Some control algorithms are not robust under multithreading. Mainly error handling when in sync mode (because there needs to be a revision where we keep track of which components are still reachable by another component). And complicated scenarios where ports are transferred. + +- There is an assertion in the interpreter that makes sure that there are no values left on the expression stack when a statement has completed. This is not true when you have an expression statement! If you want to remove this assertion make sure to clear the stack (using the method on the `Store`). + +- The TCP listener component should probably do a `shutdown` before a `close` on the socket handle. Also it should set the `SO_REUSEADDR` option. \ No newline at end of file