hubris 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. data/.gitignore +31 -0
  2. data/.rvmrc +2 -0
  3. data/Gemfile +11 -0
  4. data/Haskell/Hubrify.hs +69 -0
  5. data/Haskell/LICENSE +22 -0
  6. data/Haskell/Language/Ruby/Foo.hs +20 -0
  7. data/Haskell/Language/Ruby/Hubris/Binding.hsc +214 -0
  8. data/Haskell/Language/Ruby/Hubris/GHCBuild.hs +46 -0
  9. data/Haskell/Language/Ruby/Hubris/Hash.hs +27 -0
  10. data/Haskell/Language/Ruby/Hubris/Interpolator.hs +22 -0
  11. data/Haskell/Language/Ruby/Hubris/LibraryBuilder.hs +181 -0
  12. data/Haskell/Language/Ruby/Hubris/ZCode.hs +68 -0
  13. data/Haskell/Language/Ruby/Hubris.hs +254 -0
  14. data/Haskell/Language/Ruby/Wrappers.hs +32 -0
  15. data/Haskell/Language/Ruby/testLib.hs +9 -0
  16. data/Haskell/Setup.hs +31 -0
  17. data/Haskell/cbits/rshim.c +46 -0
  18. data/Haskell/cbits/rshim.h +50 -0
  19. data/Haskell/hubris.cabal +53 -0
  20. data/INSTALL +21 -0
  21. data/Manifest.txt +22 -0
  22. data/PostInstall.txt +1 -0
  23. data/README.markdown +107 -0
  24. data/Rakefile +46 -43
  25. data/VERSION +1 -0
  26. data/doc/CommonErrors.txt +18 -0
  27. data/doc/CommonErrors.txt~HEAD +18 -0
  28. data/doc/don_feedback.txt +25 -0
  29. data/doc/haskell-hubris.tex +242 -0
  30. data/doc/new_interface.rb +74 -0
  31. data/doc/ruby-hubris.tex +176 -0
  32. data/doc/wisdom_of_ancients.txt +55 -0
  33. data/ext/hubris.rb +4 -0
  34. data/ext/stub/extconf.rb +5 -0
  35. data/ext/{HubrisStubLoader.c → stub/stub.c} +1 -1
  36. data/hubris.gemspec +31 -0
  37. data/lib/Makefile +181 -0
  38. data/lib/hubris/version.rb +3 -0
  39. data/lib/hubris.rb +16 -13
  40. data/rspec.rake +21 -0
  41. data/sample/Fibonacci.hs +2 -2
  42. data/sample/config.ru +3 -1
  43. data/script/ci.sh +25 -0
  44. data/script/console +10 -0
  45. data/spec/hubris_spec.rb +173 -47
  46. data/tasks/extconf/stub.rake +43 -0
  47. data/tasks/extconf.rake +13 -0
  48. metadata +118 -27
  49. data/ext/extconf.rb +0 -5
data/spec/hubris_spec.rb CHANGED
@@ -1,27 +1,13 @@
1
1
  # encoding: ASCII-8BIT
2
2
  load File.dirname(__FILE__) + '/spec_helper.rb'
3
3
  require "hubris"
4
- Hubris.add_packages %w(base)
5
-
6
- # # just want to check it's actually possible to load a library dynamically
7
- # describe "dlload" do
8
- # it "actually builds and loads a C level dylib stupidly" do
9
- # system "cd sample; make"
10
- # `cd sample; ruby hsload.rb`.chomp.should eql("144")
11
- # end
12
- # end
13
-
14
- class Target
15
- def foo_local
16
- 14
17
- end
18
- end
4
+ Hubris.add_packages %w(base bytestring)
19
5
 
20
6
  Signal.trap("INT", 'EXIT');
21
7
 
22
- describe "Target" do
8
+ describe "Target" do
23
9
  it "whines like a little baby when you pass it bad haskell" do
24
- lambda{ class Foo; hubris :inline => "broken _ = (1 + \"a string\")", :no_strict => true; end}.should raise_error(HaskellError)
10
+ lambda{ class Foo; hubris :inline => "broken = (1 + \"a string\")"; end}.should raise_error(HaskellError)
25
11
  end
26
12
 
27
13
  it "ignores a comment" do
@@ -34,13 +20,21 @@ foo False = True"; end
34
20
  }.should_not raise_error
35
21
  end
36
22
 
37
- it "sings like a golden bird when you treat it right, aw yeah" do
38
- # t = Target.new
39
- # lambda { t.inline("working _ = T_FIXNUM (1+2)", { :no_strict => true }) }.should_not raise_error
40
- lambda { class Foo; hubris :inline => "working :: Integer -> Integer; working a = 2*a"; end}.should_not raise_error
23
+ it "doesn't get fussy about non-exportable stuff" do
24
+ lambda { class Empty; hubris :inline => "data Foo=Foo; fooerator :: Foo->Foo; fooerator Foo = Foo";end }.should_not raise_error
41
25
  end
42
-
43
-
26
+
27
+ it "handles booleans" do
28
+ class Bar
29
+ hubris :inline => "my_negate True = False;my_negate False = True", :no_strict => true
30
+ end
31
+ t = Bar.new
32
+ # puts t.methods
33
+ t.my_negate(false).should eql(true)
34
+ t.my_negate(true).should eql(false)
35
+ lambda{ t.my_negate("Banana")}.should raise_error
36
+ end
37
+ end
44
38
  # it "handles booleans" do
45
39
  # class Bar
46
40
  # hubris :inline => "my_negate True = False;my_negate False = True", :no_strict => true
@@ -51,13 +45,16 @@ foo False = True"; end
51
45
  # t.my_negate(true).should eql(false)
52
46
  # lambda{ t.my_negate("Banana")}.should raise_error
53
47
  # end
54
-
55
- it "handles doubles" do
48
+
49
+
50
+ describe "Floats" do
51
+ before do
56
52
  class Doubler
57
53
  hubris :inline => "triple :: Double -> Double; triple a = a*3.0", :no_strict => true
58
54
  end
55
+ end
56
+ it "handles doubles" do
59
57
  d = Doubler.new
60
-
61
58
  d.triple(3.4).should eql(10.2)
62
59
  end
63
60
  end
@@ -71,14 +68,101 @@ describe "Strings" do
71
68
  end
72
69
  end
73
70
 
71
+ describe "tuples" do
72
+ before do
73
+ class Tupler
74
+ hubris :inline => "revTup :: (Integer,Integer) -> (Integer,Integer); revTup (a,b) = (b,a)"
75
+ hubris :inline => "expand :: (Integer,Integer) -> (Integer,Integer,Integer); expand (a,b) = (b,a,b)"
76
+ end
77
+ end
78
+
79
+ before :each do
80
+ @t = Tupler.new
81
+ end
82
+
83
+ it 'can call a tuple with an array' do
84
+ @t.revTup([1,2]).should == [2,1]
85
+ end
86
+
87
+ it 'has no funny array business' do
88
+ @t.expand([1,2]).should == [2,1,2]
89
+ end
90
+ end
91
+
74
92
  describe "BigInt" do
75
- it "handles BigInts" do
93
+ before do
76
94
  class Bigint
77
95
  hubris :inline => "big_inc :: Integer -> Integer; big_inc i = i + 1"
78
96
  end
79
- b = Bigint.new
80
- b.big_inc(10000000000000000).should eql(10000000000000001)
81
- b.big_inc(1).should eql(2)
97
+ end
98
+
99
+ before(:each) do
100
+ # pending
101
+ @b = Bigint.new
102
+ end
103
+
104
+ it "handles smalls" do
105
+ @b.big_inc(1).should eql(2)
106
+ end
107
+
108
+
109
+ it 'handles foo' do
110
+ @b.big_inc(536870912).should == 536870913
111
+ end
112
+
113
+ it 'handles foo' do
114
+ @b.big_inc(536870913).should == 536870914
115
+ end
116
+
117
+ # it 'tests' do
118
+ # low = 536870912
119
+ # high = 1073741825
120
+
121
+ # while low != high
122
+ # mid = (high + low)/2
123
+ # puts "mid is #{mid}"
124
+ # if @b.big_inc(mid) == mid + 1
125
+ # low = mid
126
+ # else
127
+ # high = mid
128
+ # end
129
+ # end
130
+ # puts "highest working is #{mid}"
131
+ # end
132
+
133
+ it 'handles 30 bits' do
134
+ @b.big_inc(1073741822).should == 1073741823
135
+ end
136
+ it 'handles > 30 bits' do
137
+ @b.big_inc(1073741823).should == 1073741824
138
+ end
139
+
140
+ it "handles really big ints" do
141
+ @b.big_inc(1000000000000000000000000).should eql(1000000000000000000000001)
142
+ end
143
+
144
+ it "handles ints just before the border" do
145
+ @b.big_inc(2147483647).should == 2147483648
146
+ end
147
+
148
+ it "handles > int but < bigint" do
149
+ @b.big_inc(2147483648).should == 2147483649
150
+ end
151
+
152
+ end
153
+
154
+ describe "BigID" do
155
+
156
+ before do
157
+ class BigId
158
+ hubris :inline => "big_inc :: Integer -> Integer; big_inc i = i"
159
+ end
160
+ @b = BigId.new
161
+ end
162
+
163
+ it 'returns a big fix' do
164
+
165
+ @b.big_inc(1073741824).should == 1073741824
82
166
  end
83
167
  end
84
168
 
@@ -97,10 +181,7 @@ describe 'Multiple' do
97
181
  # and it doesn't wipe out other methods on the class
98
182
  t.foo_local.should eql(14)
99
183
  t.incr(3).should eql(4)
100
- # FIXME this one is waiting for support of Control.Exception in
101
- # JHC
102
- # lambda { t.mydouble(2.3)}.should raise_error(HaskellError)
103
- # Fooclever.mydouble(2.3).should raise_error(RuntimeError)
184
+ lambda { t.mydouble(2.3)}.should raise_error(HaskellError)
104
185
  end
105
186
  end
106
187
 
@@ -118,7 +199,7 @@ describe 'Arrays' do
118
199
  end
119
200
  t=ArrayTest2.new
120
201
  t.elts(5).should eql([1,2,3,4,5])
121
- lambda { t.elts("A Banana")}.should raise_error(HaskellError)
202
+ lambda { t.elts("A Banana").should == "FOO" }.should raise_error(HaskellError)
122
203
  end
123
204
  it "uses a Haskell array" do
124
205
  class ArrayTest3
@@ -148,9 +229,9 @@ describe "MaybeIn" do
148
229
  hubris :inline => "foo:: Maybe Int -> Int; foo (Just _) = 1; foo Nothing = 0"
149
230
  end
150
231
  m=MaybeIn.new
151
- # m.foo(1).should == 1
152
- # m.foo(20).should == 1
153
- # m.foo(nil).should == 2
232
+ m.foo(1).should == 2
233
+ m.foo(20).should == 40
234
+ m.foo(nil).should == 0
154
235
  lambda{ m.foo("blah") }.should raise_error(HaskellError)
155
236
  # here's a tricky bit: in the previous example, we had to look at the value of the
156
237
  # Maybe, so the exception got triggered.
@@ -158,8 +239,8 @@ describe "MaybeIn" do
158
239
  # deeply examine the something. Arguably, it would be less surprising if we always looked
159
240
  # deeply into it, but it's up for debate. TODO
160
241
 
161
- lazy = MaybeLazy.new
162
- lazy.foo("blah").should == 1
242
+ #lazy = MaybeLazy.new
243
+ #lazy.foo("blah").should == 1
163
244
  end
164
245
  end
165
246
 
@@ -207,6 +288,7 @@ describe "Overwrite" do
207
288
  hubris :inline => "myid::Int -> Int; myid i = i+1"
208
289
  end
209
290
  t=Overlapping.new
291
+ # puts t.methods
210
292
  t.myid(1).should eql(2)
211
293
  end
212
294
 
@@ -255,6 +337,7 @@ describe 'Idempotence' do
255
337
  end
256
338
 
257
339
  it "can insert the same code into two ruby modules" do
340
+
258
341
  class Foo10
259
342
  hubris :inline => "foobar::Double -> Double;foobar n = n+1.0"
260
343
  end
@@ -270,9 +353,9 @@ end
270
353
 
271
354
  describe 'Realworld' do
272
355
  it "can handle the bytestring lib" do
273
-
356
+ # pending "check"
274
357
  class ByteString
275
- hubris :module => "Data.ByteString"
358
+ hubris :module => "Data.ByteString", :no_strict => true
276
359
  end
277
360
 
278
361
  b = ByteString.new
@@ -280,18 +363,23 @@ describe 'Realworld' do
280
363
  end
281
364
 
282
365
  it "can import zlib" do
283
- pending "Not doing the right thing with embedded nulls yet"
366
+
284
367
  class ZLib
285
368
  hubris :module => 'Codec.Compression.GZip', :packages => ['zlib', 'bytestring']
286
369
  end
287
370
  z=ZLib.new
288
371
  w="osatnoensauhoestnuhoastuhoeatnuhosnueohnsauostneo"
289
- puts w.encoding
372
+ pending "Not doing the right thing with embedded nulls yet"
373
+ # for the moment, we're happy if it errors out in a controlled way
374
+
375
+ lambda {z.decompress(z.compress(w)).should eql(w)}.should raise_error(HaskellError)
376
+
290
377
  x=z.compress(w)
291
- x.each_byte {|c| print c, ' ' }
378
+ x.each_byte {|c| print c, ':' }
292
379
  puts "length|#{x.length}|"
380
+ # x.length.should > 5 # probably some shannon thing here
293
381
  puts "second"
294
- z.decompress(z.compress(w)).should eql(w)
382
+ lambda {z.decompress(z.compress(w)).should eql(w)}.should_not raise_error
295
383
  end
296
384
 
297
385
  end
@@ -304,7 +392,6 @@ describe 'Performance' do
304
392
  it "caches its output" do
305
393
  # only relevant for inlining
306
394
 
307
- t=Target.new
308
395
  class First
309
396
  hubris :inline => "foobar::Int->Int; foobar a = a"
310
397
  end
@@ -347,4 +434,43 @@ describe 'Performance' do
347
434
  threads.each { |t| t.join }
348
435
  }.should_not raise_error
349
436
  end
437
+
438
+ end
439
+
440
+ describe "IO" do
441
+ it "can write a variable" do
442
+ pending
443
+ class IOTest
444
+ hubris :inline =><<EOF
445
+ import Data.IORef
446
+ import System.IO.Unsafe
447
+ ref :: IORef Int
448
+ ref = unsafePerformIO $ newIORef 10
449
+
450
+ readRef :: IO Int
451
+ readRef = readIORef ref
452
+ modify :: Int -> IO ()
453
+ modify n = writeIORef ref n
454
+ EOF
455
+
456
+ end
457
+ i = IOTest.new
458
+ i.readRef(nil).should == 10
459
+ i.modify(20)
460
+ i.readRef(nil).should == 20
461
+
462
+ end
463
+ end
464
+
465
+ describe "multiple arguments" do
466
+ it "can call a haskell function with multiple arguments" do
467
+ class Mult
468
+ hubris :inline => <<EOF
469
+ add :: Integer -> Integer -> Integer -> Integer
470
+ add x y z = x+y+z
471
+ EOF
472
+ end
473
+
474
+ Mult.new.add(1,9,100).should == 110
475
+ end
350
476
  end
@@ -0,0 +1,43 @@
1
+ namespace :extconf do
2
+ extension = File.basename(__FILE__, '.rake')
3
+
4
+ ext = "ext/#{extension}"
5
+ ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}"
6
+ ext_files = FileList[
7
+ "#{ext}/*.c",
8
+ "#{ext}/*.h",
9
+ "#{ext}/*.rl",
10
+ "#{ext}/extconf.rb",
11
+ "#{ext}/Makefile",
12
+ # "lib"
13
+ ]
14
+
15
+
16
+ task :compile => extension do
17
+ if Dir.glob("**/#{extension}.{o,so,dll}").length == 0
18
+ STDERR.puts "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
19
+ STDERR.puts "Gem actually failed to build. Your system is"
20
+ STDERR.puts "NOT configured properly to build #{GEM_NAME}."
21
+ STDERR.puts "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
22
+ exit(1)
23
+ end
24
+ end
25
+
26
+ desc "Builds just the #{extension} extension"
27
+ task extension.to_sym => ["#{ext}/Makefile", ext_so ]
28
+
29
+ file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do
30
+ Dir.chdir(ext) do ruby "extconf.rb" end
31
+ end
32
+
33
+ file ext_so => ext_files do
34
+ Dir.chdir(ext) do
35
+ sh(PLATFORM =~ /win32/ ? 'nmake' : 'make') do |ok, res|
36
+ if !ok
37
+ require "fileutils"
38
+ FileUtils.rm Dir.glob('*.{so,o,dll,bundle}')
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,13 @@
1
+ namespace :extconf do
2
+ desc "Compiles the Ruby extension"
3
+ task :compile
4
+ end
5
+
6
+ task :compile => "extconf:compile"
7
+
8
+ task :test => :compile
9
+
10
+ BIN = "*.{bundle,jar,so,obj,pdb,lib,def,exp}"
11
+ $hoe.clean_globs |= ["ext/**/#{BIN}", "lib/**/#{BIN}", 'ext/**/Makefile']
12
+ $hoe.spec.require_paths = Dir['{lib,ext/*}']
13
+ $hoe.spec.extensions = FileList["ext/**/extconf.rb"].to_a
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hubris
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 4
10
+ version: 0.0.4
5
11
  platform: ruby
6
12
  authors:
7
13
  - Mark Wotton
@@ -11,77 +17,162 @@ autorequire:
11
17
  bindir: bin
12
18
  cert_chain: []
13
19
 
14
- date: 2009-11-30 00:00:00 +11:00
20
+ date: 2011-02-24 00:00:00 +11:00
15
21
  default_executable:
16
22
  dependencies:
17
23
  - !ruby/object:Gem::Dependency
18
- name: rspec
24
+ name: rake-compiler
25
+ prerelease: false
26
+ requirement: &id001 !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ hash: 15
32
+ segments:
33
+ - 0
34
+ - 7
35
+ - 6
36
+ version: 0.7.6
19
37
  type: :runtime
20
- version_requirement:
21
- version_requirements: !ruby/object:Gem::Requirement
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: rspec
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - "="
46
+ - !ruby/object:Gem::Version
47
+ hash: 31
48
+ segments:
49
+ - 2
50
+ - 4
51
+ - 0
52
+ version: 2.4.0
53
+ type: :development
54
+ version_requirements: *id002
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ prerelease: false
58
+ requirement: &id003 !ruby/object:Gem::Requirement
59
+ none: false
22
60
  requirements:
23
61
  - - ">="
24
62
  - !ruby/object:Gem::Version
63
+ hash: 3
64
+ segments:
65
+ - 0
25
66
  version: "0"
26
- version:
67
+ type: :runtime
68
+ version_requirements: *id003
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: open4
29
- type: :runtime
30
- version_requirement:
31
- version_requirements: !ruby/object:Gem::Requirement
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
32
74
  requirements:
33
75
  - - ">="
34
76
  - !ruby/object:Gem::Version
77
+ hash: 3
78
+ segments:
79
+ - 0
35
80
  version: "0"
36
- version:
37
- description: A Ruby Haskell bridge
38
- email: mwotton@gmail.com
81
+ type: :runtime
82
+ version_requirements: *id004
83
+ description: A bridge between Ruby and Haskell
84
+ email:
85
+ - mwotton@gmail.com
39
86
  executables: []
40
87
 
41
88
  extensions:
42
- - ext/extconf.rb
89
+ - Rakefile
43
90
  extra_rdoc_files: []
44
91
 
45
92
  files:
93
+ - .gitignore
94
+ - .rvmrc
95
+ - Gemfile
46
96
  - HISTORY.markdown
47
- - ext/extconf.rb
48
- - ext/HubrisStubLoader.c
49
- - lib/hubris.rb
97
+ - Haskell/Hubrify.hs
98
+ - Haskell/LICENSE
99
+ - Haskell/Language/Ruby/Foo.hs
100
+ - Haskell/Language/Ruby/Hubris.hs
101
+ - Haskell/Language/Ruby/Hubris/Binding.hsc
102
+ - Haskell/Language/Ruby/Hubris/GHCBuild.hs
103
+ - Haskell/Language/Ruby/Hubris/Hash.hs
104
+ - Haskell/Language/Ruby/Hubris/Interpolator.hs
105
+ - Haskell/Language/Ruby/Hubris/LibraryBuilder.hs
106
+ - Haskell/Language/Ruby/Hubris/ZCode.hs
107
+ - Haskell/Language/Ruby/Wrappers.hs
108
+ - Haskell/Language/Ruby/testLib.hs
109
+ - Haskell/Setup.hs
110
+ - Haskell/cbits/rshim.c
111
+ - Haskell/cbits/rshim.h
112
+ - Haskell/hubris.cabal
113
+ - INSTALL
114
+ - Manifest.txt
115
+ - PostInstall.txt
116
+ - README.markdown
50
117
  - Rakefile
51
- - sample/config.ru
118
+ - VERSION
119
+ - doc/CommonErrors.txt
120
+ - doc/CommonErrors.txt~HEAD
121
+ - doc/don_feedback.txt
122
+ - doc/haskell-hubris.tex
123
+ - doc/new_interface.rb
124
+ - doc/ruby-hubris.tex
125
+ - doc/wisdom_of_ancients.txt
126
+ - ext/hubris.rb
127
+ - ext/stub/extconf.rb
128
+ - ext/stub/stub.c
129
+ - hubris.gemspec
130
+ - lib/Makefile
131
+ - lib/hubris.rb
132
+ - lib/hubris/version.rb
133
+ - rspec.rake
52
134
  - sample/Fibonacci.hs
135
+ - sample/config.ru
136
+ - script/ci.sh
137
+ - script/console
53
138
  - spec/hubris_spec.rb
54
139
  - spec/spec.opts
55
140
  - spec/spec_helper.rb
141
+ - tasks/extconf.rake
142
+ - tasks/extconf/stub.rake
56
143
  has_rdoc: true
57
- homepage: http://github.com/mwotton/hubris
144
+ homepage: http://rubygems.org/gems/hubris
58
145
  licenses: []
59
146
 
60
147
  post_install_message:
61
- rdoc_options:
62
- - --inline-source
63
- - --charset=UTF-8
148
+ rdoc_options: []
149
+
64
150
  require_paths:
65
151
  - lib
66
- - ext
67
152
  required_ruby_version: !ruby/object:Gem::Requirement
153
+ none: false
68
154
  requirements:
69
155
  - - ">="
70
156
  - !ruby/object:Gem::Version
157
+ hash: 3
158
+ segments:
159
+ - 0
71
160
  version: "0"
72
- version:
73
161
  required_rubygems_version: !ruby/object:Gem::Requirement
162
+ none: false
74
163
  requirements:
75
164
  - - ">="
76
165
  - !ruby/object:Gem::Version
166
+ hash: 3
167
+ segments:
168
+ - 0
77
169
  version: "0"
78
- version:
79
170
  requirements: []
80
171
 
81
- rubyforge_project: hubris
82
- rubygems_version: 1.3.5
172
+ rubyforge_project: Hubris
173
+ rubygems_version: 1.3.7
83
174
  signing_key:
84
175
  specification_version: 3
85
- summary: Hubris is a Ruby Haskell bridge allowing you to call Haskell functions from your Ruby code.
176
+ summary: A bridge between Ruby and Haskell
86
177
  test_files: []
87
178
 
data/ext/extconf.rb DELETED
@@ -1,5 +0,0 @@
1
- require 'mkmf'
2
-
3
- # dir_config("HubrisStubLoader")
4
- have_header('ruby.h')
5
- create_makefile 'HubrisStubLoader'