@@ -1,6 +1,6 @@
1[](http://purescript.org)
1[](http://purescript.org)
3−This is an experimental C++(11+)/native compiler backend for [PureScript](https://github.com/purescript/purescript). It attempts to generate "sane", debuggable, and portable C++ code as an intermediate language, which is then compiled to a native executable binary. This enables easy interoperability with existing C/C++ frameworks and libraries on a number of platforms.
3+This is an experimental C++11 (or later) compiler backend for [PureScript](https://github.com/purescript/purescript). It attempts to generate "sane", debuggable, and portable C++ code as an intermediate language, which is then compiled to a native executable binary. This enables easy interoperability with existing C/C++ frameworks and libraries on a number of platforms.
@@ -12,25 +12,24 @@ This is an experimental C++(11+)/native compiler backend for [PureScript](https:
13#### Performance
13#### Performance
15−* No runtime system (beyond some support classes and the standard C++(11+) runtime library)
15+* No runtime system beyond some support classes and the standard C++11 (or later) runtime library
16−* For automatic memory management, uses native C++(11+) reference counting (`std::shared_ptr`)
16+* For automatic memory management, uses native C++11 reference counting (`std::shared_ptr`)
17* Uses PureScript's normal tail call optimization techniques for generated C++ code
17* Uses PureScript's normal tail call optimization techniques for generated C++ code
19#### Differences from PureScript:
19#### Differences from PureScript:
21−* Foreign imports are C++(11+) (or C) instead of JavaScript ([FFI examples](https://github.com/andyarvanitis/purescript-cpp-ffi))
21+* Foreign imports are C++ instead of JavaScript ([FFI examples](https://github.com/andyarvanitis/purescript-cpp-ffi))
22* No C++-specific REPL
22* No C++-specific REPL
24#### Other notes:
24#### Other notes:
26* PureScript arrays are implemented using [`std::deque`](http://en.cppreference.com/w/cpp/container/deque) (random access *O(1)*)
26* PureScript arrays are implemented using [`std::deque`](http://en.cppreference.com/w/cpp/container/deque) (random access *O(1)*)
27−* `String` types are implemented using either C-strings (for literals) or `std::string`
27+* `String` types are implemented with C++11 `u8` literals (UTF-8) and `std::string`
28* `Number` is C++ `double`, `Int` is C++ `int`, `Char` is `std::string` (single UTF-8 entity), `Boolean` is `bool`
28* `Number` is C++ `double`, `Int` is C++ `int`, `Char` is `std::string` (single UTF-8 entity), `Boolean` is `bool`
30#### Future ideas:
30#### Future ideas:
32* Nice facilities (modules) for concurrency/parallelism, using `std::thread`, `std::async`, etc. under the hood (output is already generally thread-safe for immutable values, thanks to `std::shared_ptr`)
32* Nice facilities (modules) for concurrency/parallelism, using `std::thread`, `std::async`, etc. under the hood (output is already generally thread-safe for immutable values, thanks to `std::shared_ptr`)
33−* `BigInt` via GNU GMP (or an alternative)
35#### Requirements for building the compiler itself
34#### Requirements for building the compiler itself