Personal tools

Talk:The JavaScript Problem

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Comparison table: added four columns)
(Comparison table: Transposition is not trivial when you are not a computer.)
 
(One intermediate revision by one user not shown)
Line 9: Line 9:
 
I left out the "approach" column because I think it is best we just link to a more thorough explanation, otherwise the table will become rather messy.
 
I left out the "approach" column because I think it is best we just link to a more thorough explanation, otherwise the table will become rather messy.
   
Stdio (GHCJS uses are using HTerm)
 
File IO (GHCJS is still read only and text only)
 
Tree Shaking
 
Forest Shaking (tree shaking based on multiple entry points)
 
Native DOM (you can run your GHCJS apps using using GHC and WebKitGtk)
 
JS DOM (GHCJS simply replaces the WebKitGtk with JS for this and this)
 
 
Perhaps a DOM column with "Native & JS" for GHCJS
 
   
 
{| class="wikitable sortable collapsible" style="position:relative;left:-80px;top:30px;"
 
{| class="wikitable sortable collapsible" style="position:relative;left:-80px;top:30px;"
Line 40: Line 32:
 
|| ✓ || ✓ || ✓ || ✓* || ✓* || good || limited || many || yes || strong || active || no || some || no || none || || || ||
 
|| ✓ || ✓ || ✓ || ✓* || ✓* || good || limited || many || yes || strong || active || no || some || no || none || || || ||
 
|}
 
|}
  +
{| class="wikitable collapsible" style="position:relative;left:-80px;top:30px;"
  +
|- style="font-size:80%;"
  +
! class="unsortable" |System !! [[#GHCJS|GHCJS]] !! [[#UHC|UHC]] !! [[#Haste|Haste]] !! [[#Roy|Roy]] !! [[#Elm|Elm]] !! [[#Fay|Fay]]
  +
|- align="center"
  +
! style="font-size:80%;" | Lazy
  +
|| ✓ || ✓ || ✓ || ✗ || ? || ✓
  +
|- align="center"
  +
! style="font-size:80%;" | FFI
  +
|| ✓ || ✓ || ✓ || ✗ || ? || ✓
  +
|- align="center"
  +
! style="font-size:80%;" | Pure
  +
|| ✓ || ✓ || ✓ || ? || ✓ || ✓
  +
|- align="center"
  +
! style="font-size:80%;" | Haskell syntax
  +
|| ✓ || ✓ || ✓ || ✗ || ✗ || ✓*
  +
|- align="center"
  +
! style="font-size:80%;" | Haskell type system
  +
|| ✓ || ✓ || ✓ || ✗ || ? || ✓*
  +
|- align="center"
  +
! style="font-size:80%;" | Performance
  +
|| good || poor || good || ? || ? || good
  +
|- align="center"
  +
! style="font-size:80%;" | TCO
  +
|| full || full || full || ? || ? || limited
  +
|- align="center"
  +
! style="font-size:80%;" | Demos
  +
|| some || some || ? || few || many || many
  +
|- align="center"
  +
! style="font-size:80%;" | Easy setup
  +
|| no || moderate || yes || yes || yes || yes
  +
|- align="center"
  +
! style="font-size:80%;" | Compression
  +
|| poor || very poor || decent || ? || good || strong
  +
|- align="center"
  +
! style="font-size:80%;" | Maintenance
  +
|| active || active || active || active || active || active
  +
|- align="center"
  +
! style="font-size:80%;" | FRP library
  +
|| yes || yes || yes || no || yes || no
  +
|- align="center"
  +
! style="font-size:80%;" | Client-side Libraries
  +
|| few || some || few || few || none || some
  +
|- align="center"
  +
! style="font-size:80%;" | Threads
  +
|| yes || no || no || no || no || no
  +
|- align="center"
  +
! style="font-size:80%;" | Package support
  +
|| cabal || none || none || ? || ? || none
  +
|- align="center"
  +
! style="font-size:80%;" | Stdio
  +
|| Hterm || _ || _ || _ || _ || _
  +
|- align="center"
  +
! style="font-size:80%;" | File IO
  +
|| text only || _ || _ || _ || _ || _
  +
|- align="center"
  +
! style="font-size:80%;" | tree shaking
  +
|| _ || _ || _ || _ || _ || _
  +
|- align="center"
  +
! style="font-size:80%;" | forest shaking
  +
|| _ || _ || _ || _ || _ || _
  +
|- align="center"
  +
! style="font-size:80%;" | DOM
  +
|| native and Js || _ || _ || _ || _ || _
  +
|- align="center"
  +
! style="font-size:80%;" | Finalizers
  +
|| optional || _ || _ || _ || _ || _
  +
|- align="center"
  +
! style="font-size:80%;" | Integer support
  +
|| yes || _ || _ || _ || _ || _
  +
|- align="center"
  +
! style="font-size:80%;" | Text & ByteString
  +
|| yes || _ || _ || _ || _ || _
  +
|- align="center"
  +
! style="font-size:80%;" | Exceptions
  +
|| yes || _ || _ || _ || _ || _
  +
|- align="center"
  +
! style="font-size:80%;" | Async Code Loading
  +
|| yes || _ || _ || _ || _ || _
  +
|- align="center"
  +
! style="font-size:80%;" | 64bit support
  +
|| yes || _ || _ || _ || _ || _
   
--[[User:419928194516|419928194516]] 22:50, 21 September 2012 (UTC)
+
|}

Latest revision as of 21:31, 22 September 2012

[edit] 1 Goals

[edit] 1.1 Individual projects

[edit] 1.2 Comparison table

I have transferred most of the table from this[1] thread here into wiki markup. It needs to be completed and inserted. I think that links to subheads in this article or links to the websites of these projects would be excellent in the first column, so I will do that as soon as we decide where we shall link.

I left out the "approach" column because I think it is best we just link to a more thorough explanation, otherwise the table will become rather messy.


System Lazy FFI Pure Haskell syntax Haskell type system Performance TCO Demos Easy Setup Compression Maintenance FRP library Client-side Libraries Threads Package support Stdio File IO Tree Shaking DOM
GHCJS good full some no poor active yes few yes cabal Hterm text only Native & JS
UHC poor full some moderate very poor active yes some no none
Haste good full  ? yes decent active yes few no none
Roy  ?  ?  ? few yes  ? active no few no  ?
Elm  ?  ?  ?  ?  ? many yes good active yes none no  ?
Fay ✓* ✓* good limited many yes strong active no some no none
System GHCJS UHC Haste Roy Elm Fay
Lazy  ?
FFI  ?
Pure  ?
Haskell syntax ✓*
Haskell type system  ? ✓*
Performance good poor good  ?  ? good
TCO full full full  ?  ? limited
Demos some some  ? few many many
Easy setup no moderate yes yes yes yes
Compression poor very poor decent  ? good strong
Maintenance active active active active active active
FRP library yes yes yes no yes no
Client-side Libraries few some few few none some
Threads yes no no no no no
Package support cabal none none  ?  ? none
Stdio Hterm _ _ _ _ _
File IO text only _ _ _ _ _
tree shaking _ _ _ _ _ _
forest shaking _ _ _ _ _ _
DOM native and Js _ _ _ _ _
Finalizers optional _ _ _ _ _
Integer support yes _ _ _ _ _
Text & ByteString yes _ _ _ _ _
Exceptions yes _ _ _ _ _
Async Code Loading yes _ _ _ _ _
64bit support yes _ _ _ _ _