Hacker News new | past | comments | ask | show | jobs | submit login
A new RISC-V version of uLisp (ulisp.com)
119 points by lispm on March 20, 2020 | hide | past | favorite | 35 comments

Anyone use uLisp, Ferret (clojure->C++) and/or esp-lisp that can give a good recommendation on which one is most appropriate and capable on microcontrollers?

Or apparently microscheme!

Great! Probably one of the first managed languages to properly support RISC-V.

Is it hard for managed languages to support RISC-V for some architectural reason?

RISC-V is basically a MIPs ripoff with healthy architectural inspiration from ARM. There is a linux distro for RISC-V, and there's no reason Python or nodejs etc. can't run on it. https://riscv.org/2015/01/a-linux-distribution-for-risc-v/

There is a perfectly good reason that NodeJS does not run on RISC-V Linux, which is that NodeJS has not been ported to RISC-V. Projects like Node (or rather the underlying V8 engine) have nontrivial amounts of architecture-specific code.

I can attest to that, though it looks as though the work involved in each part is decreasing.

That's a plus, at least the platform won't get infected by node.js virus

JS is inevitable, it just has a flattened curve.

MIPS is the original RISC one. RISC V is the fifth iteration of the line.

No, Stanford MIPS is a separate lineage from Berkeley RISC.


As for the original OG RISC, I think that'd be the Cray 1.

As always, the obsession with firsts is a fools errand. The IBM 801 and the CDC 6600 are often mentioned as some of the earliest candidates. As so often with technology, it's a function of the context. In the case of RISC, integrated circuits were reaching capabilities that made it worthwhile reconsidering the conventional wisdom.

The 6600 didn't have general purpose registers. It had operand, address and increment registers. The 801 development began in October 1975. The Cray 1 had been in development for 4 years when it was released in 1975.

So I'll go with the Cray as being to OG RISC. But yes, firsts don't really matter except to say it sure wasn't the Berkeley RISC or the Stanford MIPS.

Never seek after "firsts" too avidly. I've seen people claim the rock is the first computer, and an IBM mainframe running VM/CMS is the first personal computer. (You get your own personal CMS instance running on the massive, institutional big iron, see?)

I guess not, it is just that the whole ecosystem is still on its infancy, and as usual C and C++ get the first class treatment.

Just as well in this instance, since uLisp is a C program.

Yeah, as always in compiler design, bootstraping versus depending on widespread systems programming languages, is an engineering decision.

uLisp could also take advantage of cross compiling, the author just chose another path that allowed him the focus on other areas instead.

What's preventing you from cross-compiling uLisp?

I guess not feeling like rewriting uLisp compiler/runtime in uLisp/Assembly, and not being the author,

Certainly not, and for interpreters it's a trivial port. JITs require more work. I imagine the biggest challenge for uLisp wasn't RISC-V per se, but the very limited amount of data memory on this particular chip (16 KiB IIRC).


I think Go is there also, the riscv-go repo proclaims itself obsolete with "This port has been upstreamed in Go 1.14.".

Also probably most interpreted languages work out of the box (Ruby, Python etc)

I see, thanks for the heads up.

Interpreter languages is easier, given the existence of C and C++ compilers.

Best place/resource to learn Lisp?

I’m sure a lot of people have their opinions about what the best introductory lisp text is. I won’t add to that list since a google search will give results from reviewers far more eloquent than I am.

What I would like to suggest is that once you basically “get” how the prefix syntax works, and how to process lists, Doug Hoyte’s Let Over Lambda (https://letoverlambda.com/textmode.cl/guest/toc) is a book that can really help you -learn- lisp, to fundamentally understand what makes lisp so powerful compared to other languages. Incredibly perspective-expanding content when I first read it, and largely references many of the “great” lisp texts that helped build the language and its community into what they are today.

uLisp itself has a lot of material to learn programming with it: http://www.ulisp.com/show?1AAO

For something like Common Lisp, which uLisp is similar to:

COMMON LISP: A Gentle Introduction to Symbolic Computation


Practical Common Lisp


Land of Lisp


ANSI Common Lisp by Paul Graham


Depends on the dialect. I learned lisp via clojure (in before all the "clojure is not a real lisp!" haters come in, please skip that) and first book I used was Clojure for the Brave and True which is a good introduction, fun to read, practical and is available for free to read online. Highly recommended! https://www.braveclojure.com/

SICP and PAIP are great if you work through them and do all the exercises instead of just skimming

For those not in the know

SICP = Structure and Interpretation of Computer Programs

PAIP = Paradigms of AI Programming

regardless of experience, i recommend the little schemer, land of lisp, realm of racket, structure and interpretation of computer programs, and the courses how to code: simple data and how to code: complex data (don't be discouraged by the apparently simple titles as they cover the book how to design programs). if common lisp is really what you want, then i have lisp by winston and horn and common lisp by touretzky and find them quite nice, although i haven't gone through them, just peeking from time to time.

Little Lisper or Little Schemer.

The Little Schemer with Racket

Could you elaborate why Racket? Not an implementation I've used.

i like practical common lisp.

uLisp is very much Arduino and not sure new platform purpose. Love to see it expand not just board but platform.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact