<commit_before>* Obsidian
  
  An embedded language for GPU kernel programming. 
  
* Current features 
    + Pull arrays: traditional "arrays as function from index to value" 
    + Push arrays: a computation that is parameterised on a "write function". 
    + Mutable arrays:
      Mutable arrays in shared memory can be created.
      Global mutable arrays can be passed into a kernel as an argument. 
    + Atomic operations on mutable arrays.
    + Executing kernels from within Haskell is possible on platforms 
      supported by the CUDA bindings (Linux, Mac). 
      Obsidian.Run.CUDA.Exec provides a very low level interface to running kernels. 
    + A collection of sequential building blocks for sequential (reg->reg 
       computations). 
          + Fold 
          + Scan 
          + Sort (todo). How ? Which kind of sort. I want one with known number of iterations and in-place capability. 
          + Merge (todo) 
          + Filter (todo, Tricky, whats the lengths?) 
  
* Latest tweaks
  + Replacing code generation with something new based on Language.C.Quote 
  + pMap is now just fmap! (simplification)
  

* TODOs
  + Look at code generation, is there a problem with the memory management ? 
  + global arrays have sizes! make the code generation aware of this! 
  + Think about completely dissallowing Int and Word as types in Obsidian programs.
    Require that the programmer explicitly makes a Int32, Int64, Word32, Word64 Choice-

  + clean up and check for bugs in: 
    * CodeGen.Memory.hs
    * CodeGen.Liveness.hs 
  + More thinking about the mutable array interface(and implementation) is needed.
	    <commit_msg>Started ObsidianGFX branch<commit_after>* ObsidianGFX
  
  Obsidian for Graphical Applications
    
    
* TODOs
  + 2D, 3D Arrays 
  + Images, Textures (and use of texture memory) 
  + Stencil operations 
  + CUDA OpenGL Integration
  + Support for more complicated element types, Vectors, Triangles,
    Objects. 	    
{'fraction_non_alphanumeric': 0.0537525354969574, 'fraction_numerical': 0.005070993914807302, 'mean_word_length': 2.891518737672584, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6453102', 'n_tokens_mistral': 577, 'n_tokens_neox': 505, 'n_words': 240}