Skip to main content
  1. The pint° programming language/

pint° v0.0.3 is out with a basic LSP implementation

·387 words·2 mins

pint° v0.0.3 is a small release of the pint° language.

The repository can be seen here, and the pub.dev package here.

Changes on this release #

I skipped v0.0.2 announcement, as it was a simple bug fix. You can see the release in the GitHub repository.

For v0.0.3, the main difference is that now a basic LSP implementation is available through the executable pinto_server. It is still pretty barebones, but it allows you to use the new VSCode extension to have basic static analysis integrated in the editor.

VSCode extension example

Another small improvement #

Aside from this, now, when you use an import that is not available in the environment1 a resolving error will be emitted.

New homepage for pint° #

There’s now a new homepage for pint° with a summary of the language. As the language grows, we’ll probably need to do something different, but for now it serves well.

Also, the language has now an official logo. It’s a pinto horse, the bluish colors reminiscing that of Dart and Flutter.

pint° logo

What’s next? #

As I implemented a basic LSP server and client, I think I’m now going to focus on the next feature of the language, although I’m still not sure what will it be.

Possibly, I’m going to implement something like top-level functions, which will required me to implement many other things, like expressions, variables, and basic blocks.

pint° is intended to be an expression-only language. That means that there’s no statements. I don’t want to model pint° against IO Monads or another kind of effects system for now, but I want the language to be very explicit about side-effects and mutability.

I’m leaving a snippet of a tentative syntax of what a function implementation in Flutter may be. Note that this probably won’t be the final syntax, but it may give an idea of where the language wants to go.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Widget build(ButtonState, BuildContext context) =
  let color = Color(0xAA22FF).withOpacity(0.5) // withOpacity is evaluated at compile time
  let style = TextStyle(:color) // `:color` stands for `:color color`
  
  GestureDetector(
    :onTap widget.onTap,
	:child Text(
	  :style,
	  :data @count, // The `@count` token inlines the first argument. It's equivalent to `state.count`
    )
  )
  

  1. pint° will look both in the Dart SDK installed in the machine and in the packages declared in pubspec_config.json↩︎

Mateus Felipe C. C. Pinto
Author
Mateus Felipe C. C. Pinto
Programmer since 2006, I’ve been exploring many kinds of technologies and languages. Currently, I work mainly with Flutter, in which I’ve specialized, but I can adapt to anything without much hassle. I’m also interested in compilers, PLT, game development and theology.

comments powered by Disqus