Live data from Hacker News

Ferret – A free software Clojure implementation

ferret-lang.org

41–50 of 83 posts

Re: Ferret – A free software Clojure implementation

#41

The favicon.ico of this site - looks exactly like half life logo. http://ferret-lang.org/ferret-styles/favicon.ico https://www.google.co.in/search?q=half+life+logo&oq=half+lif... What is that all about...

clearly they certainly respect half life a lot. maybe they don't know it exists actually. i don't know who made it because im lazy and didn't check, but I will say, there is certainly a non zero possibility of someone being alive today and never having played or heard of half life, even if only due to youth alone. but either way it is an interesting coincidence. I wonder if it's more than such.

Re: Ferret – A free software Clojure implementation

#42
post #24

I've been looking for a language which provides Software-Transactional-Memory with persistent data structures which fits in 2KB RAM on a microcontroller.

I doubt you'll find that quickly. You can't do much in 2kb if you don't want to mutate your data, I think. I don't know much about STM, but I'd wager that uses some extra bookkeeping memory as well. So unless your own memory requirements are really low, this won't work.

Re: Ferret – A free software Clojure implementation

#43
post #23

Always look at the memory management story when you stumble upon something like this.

It seems well thought out: * malloc/free (ref counting GC) * memory pooling (no heap, stack-based for memory constrained systems) * third party allocators * third party GC Details here: http://ferret-lang.org/#sec-4-2

I love the idea of ref counting, but I'm unsure about the handling of memory cycles. In a plain ref counting implementation, these will not be cleaned up, resulting in a memory leak.

I didn't find anything on cycles in the linked page, maybe the problem is not relevant in most real-world clojure code?

Re: Ferret – A free software Clojure implementation

#45
post #23

Earlier quoted context omitted.

It seems well thought out: * malloc/free (ref counting GC) * memory pooling (no heap, stack-based for memory constrained systems) * third party allocators * third party GC Details here: http://ferret-lang.org/#sec-4-2

I love the idea of ref counting, but I'm unsure about the handling of memory cycles. In a plain ref counting implementation, these will not be cleaned up, resulting in a memory leak. I didn't find anything on cycles in the linked page, maybe the problem is not relevant in most real-world clojure code?

I don't know about "pure" Clojure (as this is), but in "pure" Erlang (which has similar semantics), you simply can't make a reference cycle. Functional languages in general don't really allow them.

Re: Ferret – A free software Clojure implementation

#46
post #23

Earlier quoted context omitted.

It seems well thought out: * malloc/free (ref counting GC) * memory pooling (no heap, stack-based for memory constrained systems) * third party allocators * third party GC Details here: http://ferret-lang.org/#sec-4-2

I love the idea of ref counting, but I'm unsure about the handling of memory cycles. In a plain ref counting implementation, these will not be cleaned up, resulting in a memory leak. I didn't find anything on cycles in the linked page, maybe the problem is not relevant in most real-world clojure code?

Author here. As derefr said with Clojure semantics you can not create cycles.

Re: Ferret – A free software Clojure implementation

#47

Having written Clojure full-time for the past 5 years while writing cleancoders.com has really spoiled me. Clojure's introspective nature makes for some amazingly fast productivity because you can hook up your IDE to the REPL and have a kind of super-REPL, which can really speed up development a ton if you design your system it right. I'm not sure if this project can keep that aspect because of how it compiles to C++…

Author here. If I am not mistaken (I don't do web development.) very early versions of ClojureScript repl compiled code on the JVM side then piped the output to the browser. (Maybe it still does idk) I am thinking of doing something similar using Cling[1]. Ferret can compile and pipe output to Cling and use Cling as the repl.

[1] https://root.cern.ch/cling

Re: Ferret – A free software Clojure implementation

#48

The favicon.ico of this site - looks exactly like half life logo. http://ferret-lang.org/ferret-styles/favicon.ico https://www.google.co.in/search?q=half+life+logo&oq=half+lif... What is that all about...

Author here. It is the Half-Life logo. I wanted a lambda symbol for a favicon, love the game too so I settled on a open licensed logo.

Re: Ferret – A free software Clojure implementation

#49
post #46

Earlier quoted context omitted.

I love the idea of ref counting, but I'm unsure about the handling of memory cycles. In a plain ref counting implementation, these will not be cleaned up, resulting in a memory leak. I didn't find anything on cycles in the linked page, maybe the problem is not relevant in most real-world clojure code?

Author here. As derefr said with Clojure semantics you can not create cycles.

Thanks, now I think about it, that makes a lot of sense.

Re: Ferret – A free software Clojure implementation

#50

Does anyone have any insight on the legal status of this project? It’s licensed as BSD 2 Clause, but looks to be heavily derived from Clojure which is EPL. AFAIK the EPL is copyleft and doesn’t permit relicensing without the copyright holders’ permission.

Author here. I am actually curious about this myself. I originally released it under GPL but then on another HN thread someone said anything compiled with it also ends up being GPL, so I switched to BSD 2 Clause. I have not copy pasted code from Clojure compiler BUT in order to keep the Ferret semantics the same as Clojure semantics algorithms are identical. [1] shows + function in Ferret and Clojure. As for data structures situation is similar, same semantics implemented in C++ instead of Java with some differences/tweaks geared towards embedded systems.

[1] https://gist.github.com/nakkaya/7050d5daf2c7034a25bb079658d8...

Post reply on HN