ReScript an awsome Option dismissed!

Before I will tell you the WHY

I should list the reasons I was looking into ReScript:

  • support for strict types
  • pattern matching
  • test driven development
  • access to many libraries solving common problem or providing access to APIs
  • embedding or providing libraries
  • Visual Debugging
  • Source level Error and Exception logging
  • Big Community to support and drive the development of new features
  • Build pipeline which can handle all assets
  • deployment pipeline to support continues integration and deployment
  • error, exception and performance monitoring in production (e.g. NewRelic, Sentry,…)
  • can be used fullstack (e.g., browser, native desktop apps, native mobile apps, backend, scripting) and allows isomorphic code parts
  • can be uses as a cloud function (e.g. AWS Lambda)
  • only payed support
  • insufficient documentation
  • no visual step debugging in the original
  • Does the Ecosystem cover all my required use cases
  • Is there tooling and language support by the major code editors
  • Can I step through the code an inspect / modify variables and the stack at any time

Development setup

ReScript provides a git template for project setup with all the required additional configuration files.

> lib/bs
> node_modules
> src
Demo.bs.js
Demo.res
.gitignore
.merlin
bsconfig.json
packages.json
README.md
  • clean - ??
  • start - watch src directory and compile on change

Debugging

Is always my second step when testing a new programming language or framework. Sometimes a language does provide debugging but the framework breaks the easy way by using child processes which make it many times harder to connect to the process which needs to be debugged.

  • adding a debugger statement which will invoke the debugger of JavaScript at runtime
  • using tests

Production

About 2010 I learned about NewRelic which was a free offer of my cloud provider at that time. NewRelic is a tool which is installed on your production system and continuously monitors your application stack for exceptions, performance and application errors.

What about my other requirements?

Community

You cannot compare it with JavaScript or even Typescript but it has grown over the last couple of years and has its own conferences. Many questions can be solved by adapting solutions from the JavaScript Ecosystem.

Documentation

The website provides a good start for the language features but there is still need for a more use case oriented approach which show on examples on how to implement frontends, backend including external libraries from the JavaScript ecosystem.

Libraries

Theoretical you can use any JavaScript library from NPM but you need to create a binding which is not a process a beginner is able to handle and currently there are only a couple of bindings for some of the more well-known libaries — e.g:

  • React JS
  • React Native (iOS, Android)
  • Jest
  • Snowpack

Language

I was looking into ReScript as a functional language. There is the included standard library calledBelt which provides a basic set of features: Options, Results (Either) but uses a data first approach which is supported by a specific pipe operator. The alternative is a library calledrelude which offers the full set of typical

Conclusion

Fast-track professional successful in the design, development and deployment of technology strategies and policy. Experienced leading Internet and IS operations