nef 0.6 is now available

nef 0.6 is now available

One year ago, we launched the first version of nef, and we haven’t stopped enhanching this awesome tool. It was born as a Command-Line tool, and today, it can also be utilized as an Xcode plugin and as a Library. Now, one year after the launch, we are releasing nef 0.6 with a bunch of features focused on stability and usability.

What’s new in version 0.6?

  • 🏹 Rewrite nef using Functional Programming.
  • 🌐 Redesign the microsite.
  • 🍺 Official integration with Homebrew.

nef ♡ FP

As you know, nef is part of a functional ecosystem around Bow. Functional Programming encourages us to write modular and testable code, improving maintainability. In the end, it leads us to write robust and trustworthy code. Following this goal, and taking advantage of Bow, we have rewritten nef using a functional approach from the core to the UI.

Bash VS Swift code

We started working on this modularization for nef 0.4, launching the first version of the library. Today, four months later, we have completed it, opening all nef features to developers. It is amazing because, with a simple import nef, you can use any nef feature directly in your macOS app or your command line. It enables building new tooling like an Xcode plugin to publish articles from your Playgrounds, or a tool for making PDF books from your Playgrounds. You set the limit!

API Reference

nef 0.6 provides multiple APIs, so we have created an API Reference section on the site to search for specific APIs, types, or methods. We use a customized version of Jazzy together with nef jekyll to generate these docs.

Briefly, the new APIs that come with this release are:

Playground API

Xcode Playgrounds are a friendly tool for prototyping and trying new concepts. However, they have some limitations if you need to create playgrounds with 3rd-party libraries support or make your Xcode Playground compatible with the rest of the options. This API bridges the gap between Playgrounds and 3rd-party library support.

Compile API

Compile a nef Playground from the command line in the same way you do from Xcode.

Clean API

Clean a nef Playground; for example, to share it as light as possible (without any additional compilation files).

Markdown API

Render the content of a Playground page, or anything else that contains markup formatting and code.

Jekyll API

Render content that contains Markdown, code, and nef commands to create a verified static website or blog.

Carbon API

Share some Swift snippets as images using this API that integrates nef with Carbon.

Playground Book API

Create a Playground Book with 3rd-party libraries from a Swift Package specification.

Official integration with Homebrew

Homebrew is an unofficial package manager for macOS; it has become a de facto standard to install any package/tool in your system. From version 0.6, nef has been included in the main repository. Thus, to install nef, you only need to run:

brew install nef

You can even integrate with GitHub Actions easily; an example to compile your nef Playground would be:

build:
	 runs-on: macos-latest

	steps:
	 - uses: actions/checkout@v2
	 - name: Compile Playground
	 	run: |
	 	brew install nef
	 	nef compile --project <nef Playground>

Conclusions

This is a huge release; from the outside, you will continue seeing nef as you always have. But inside-the-box, now it is written in pure Swift following a functional paradigm thanks to Bow. It brings us benefits such as:

  • A modularized codebase that is easy to maintain, test, and debug.
  • Opens all the current and future nef features to developers as a library.
  • Lets us integrate Swift libraries, like Apple’s recently released swift-argument-parser for type-safe argument parsing. You can find an elaborate usage example in the UI modules.

Head over to our GitHub repo, and stay tuned for news on future releases!

For more information, or to get involved, check out the following resources for Bow and nef. Comments, questions, issues, and PRs are welcome!

47 Degrees, a Functional Programming consultancy with a focus on the Scala, Kotlin, Haskell and Swift Programming languages proudly sponsors the active development of nef.

Ensure the success of your project

47 Degrees can work with you to help manage the risks of technology evolution, develop a team of top-tier engaged developers, improve productivity, lower maintenance cost, increase hardware utilization, and improve product quality; all while using the best technologies.