git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Update README.md
d1949e8Andy Arvanitis
README.md+5−6
@@ -1,6 +1,6 @@
1[![PureScript](https://raw.githubusercontent.com/purescript/purescript/master/logo.png)](http://purescript.org)
1[![PureScript](https://raw.githubusercontent.com/purescript/purescript/master/logo.png)](http://purescript.org)
2
2
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.
4
4
5---
5---
6
6
@@ -12,25 +12,24 @@ This is an experimental C++(11+)/native compiler backend for [PureScript](https:
12
12
13#### Performance
13#### Performance
14
14
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
18
18
19#### Differences from PureScript:
19#### Differences from PureScript:
20
20
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
23
23
24#### Other notes:
24#### Other notes:
25
25
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`
29
29
30#### Future ideas:
30#### Future ideas:
31
31
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)
34
33
35#### Requirements for building the compiler itself
34#### Requirements for building the compiler itself
36
35