ruby-vips 0.3.14 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +22 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +46 -31
- data/{LICENSE → LICENSE.txt} +1 -1
- data/README.md +101 -145
- data/Rakefile +45 -0
- data/TODO +8 -32
- data/VERSION +1 -0
- data/example/annotate.rb +17 -0
- data/example/daltonize8.rb +75 -0
- data/example/example1.rb +84 -0
- data/example/example2.rb +31 -0
- data/example/example3.rb +19 -0
- data/example/example4.rb +18 -0
- data/example/example5.rb +31 -0
- data/example/trim8.rb +41 -0
- data/example/watermark.rb +44 -0
- data/example/wobble.rb +36 -0
- data/lib/vips.rb +151 -14
- data/lib/vips/access.rb +14 -0
- data/lib/vips/align.rb +11 -0
- data/lib/vips/angle.rb +12 -0
- data/lib/vips/angle45.rb +16 -0
- data/lib/vips/argument.rb +163 -0
- data/lib/vips/bandformat.rb +20 -0
- data/lib/vips/call.rb +302 -0
- data/lib/vips/coding.rb +14 -0
- data/lib/vips/demandstyle.rb +35 -0
- data/lib/vips/direction.rb +11 -0
- data/lib/vips/error.rb +30 -0
- data/lib/vips/extend.rb +22 -0
- data/lib/vips/foreignflags.rb +20 -0
- data/lib/vips/image.rb +1382 -0
- data/lib/vips/interpolate.rb +37 -0
- data/lib/vips/interpretation.rb +28 -0
- data/lib/vips/methods.rb +1807 -0
- data/lib/vips/operation.rb +19 -0
- data/ruby-vips8.gemspec +112 -0
- data/spec/image_spec.rb +515 -0
- data/spec/samples/balloon.v +0 -0
- data/spec/samples/ghost.ppm +405 -0
- data/spec/samples/huge.jpg +0 -0
- data/spec/samples/icc.jpg +0 -0
- data/spec/samples/lcd.icc +0 -0
- data/spec/samples/lion.svg +154 -0
- data/spec/samples/sample.csv +7 -0
- data/spec/samples/sample.exr +0 -0
- data/spec/samples/wagon.jpg +0 -0
- data/spec/samples/wagon.v +0 -0
- data/spec/spec_helper.rb +49 -0
- data/spec/vips_spec.rb +74 -0
- metadata +110 -70
- data/ext/extconf.rb +0 -31
- data/ext/header.c +0 -457
- data/ext/header.h +0 -9
- data/ext/image.c +0 -629
- data/ext/image.h +0 -72
- data/ext/image_arithmetic.c +0 -936
- data/ext/image_arithmetic.h +0 -38
- data/ext/image_boolean.c +0 -301
- data/ext/image_boolean.h +0 -8
- data/ext/image_colour.c +0 -590
- data/ext/image_colour.h +0 -36
- data/ext/image_conversion.c +0 -884
- data/ext/image_conversion.h +0 -38
- data/ext/image_convolution.c +0 -368
- data/ext/image_convolution.h +0 -13
- data/ext/image_freq_filt.c +0 -740
- data/ext/image_freq_filt.h +0 -27
- data/ext/image_histograms_lut.c +0 -643
- data/ext/image_histograms_lut.h +0 -28
- data/ext/image_morphology.c +0 -327
- data/ext/image_morphology.h +0 -13
- data/ext/image_mosaicing.c +0 -554
- data/ext/image_mosaicing.h +0 -15
- data/ext/image_relational.c +0 -384
- data/ext/image_relational.h +0 -8
- data/ext/image_resample.c +0 -249
- data/ext/image_resample.h +0 -9
- data/ext/interpolator.c +0 -106
- data/ext/interpolator.h +0 -7
- data/ext/mask.c +0 -347
- data/ext/mask.h +0 -18
- data/ext/reader.c +0 -261
- data/ext/reader.h +0 -2
- data/ext/ruby_vips.c +0 -188
- data/ext/ruby_vips.h +0 -72
- data/ext/tags +0 -450
- data/ext/writer.c +0 -371
- data/ext/writer.h +0 -2
- data/lib/vips/reader.rb +0 -272
- data/lib/vips/version.rb +0 -3
- data/lib/vips/writer.rb +0 -342
- data/ruby-vips.gemspec +0 -100
- data/ruby.supp +0 -134
data/lib/vips/version.rb
DELETED
data/lib/vips/writer.rb
DELETED
@@ -1,342 +0,0 @@
|
|
1
|
-
module VIPS
|
2
|
-
class Writer
|
3
|
-
def write(path)
|
4
|
-
write_gc path
|
5
|
-
end
|
6
|
-
|
7
|
-
private
|
8
|
-
|
9
|
-
# write can fail due to no file descriptors, memory can fill if large
|
10
|
-
# objects are not collected fairly soon
|
11
|
-
#
|
12
|
-
# we can't try a write and GC and retry on fail, since the write may take a
|
13
|
-
# long time
|
14
|
-
#
|
15
|
-
# GCing before every write would have a horrible effect on performance, so
|
16
|
-
# as a compromise we GC every @@gc_interval writes
|
17
|
-
#
|
18
|
-
# ruby2.1 introduced a generational GC which
|
19
|
-
# is fast enough to be able to GC on every write
|
20
|
-
|
21
|
-
@@generational_gc = RUBY_ENGINE == "ruby" && RUBY_VERSION.to_f >= 2.1
|
22
|
-
|
23
|
-
@@gc_interval = 100
|
24
|
-
@@gc_countdown = @@gc_interval
|
25
|
-
|
26
|
-
def write_gc(path)
|
27
|
-
if @@generational_gc
|
28
|
-
GC.start full_mark: false
|
29
|
-
else
|
30
|
-
@@gc_countdown -= 1
|
31
|
-
if @@gc_countdown < 0
|
32
|
-
@@gc_countdown = @@gc_interval
|
33
|
-
GC.start
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
write_internal path
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
class CSVWriter < Writer
|
42
|
-
attr_accessor :separator
|
43
|
-
|
44
|
-
def initialize(image, options={})
|
45
|
-
super image
|
46
|
-
@separator = "\t"
|
47
|
-
|
48
|
-
self.separator = options[:separator] if options.has_key?(:separator)
|
49
|
-
end
|
50
|
-
|
51
|
-
def write(path)
|
52
|
-
write_gc "#{path}:sep:#{@separator}"
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
class JPEGWriter < Writer
|
57
|
-
attr_reader :quality
|
58
|
-
|
59
|
-
def initialize(image, options={})
|
60
|
-
super image
|
61
|
-
|
62
|
-
@quality = 75
|
63
|
-
|
64
|
-
self.quality = options[:quality] if options.has_key?(:quality)
|
65
|
-
end
|
66
|
-
|
67
|
-
def write(path)
|
68
|
-
write_gc "#{path}:#{@quality}"
|
69
|
-
end
|
70
|
-
|
71
|
-
def to_memory
|
72
|
-
buf_internal @quality
|
73
|
-
end
|
74
|
-
|
75
|
-
def quality=(quality_v)
|
76
|
-
unless (0..100).include?(quality_v)
|
77
|
-
raise ArgumentError, 'quality must be a numeric value between 0 and 100'
|
78
|
-
end
|
79
|
-
|
80
|
-
@quality = quality_v
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
class PNGWriter < Writer
|
85
|
-
attr_reader :compression
|
86
|
-
attr_accessor :interlace
|
87
|
-
|
88
|
-
def initialize(image, options={})
|
89
|
-
super image
|
90
|
-
|
91
|
-
@compression = 6
|
92
|
-
@interlace = false
|
93
|
-
|
94
|
-
self.compression = options[:compression] if options.has_key?(:compression)
|
95
|
-
self.interlace = options[:interlace] if options.has_key?(:interlace)
|
96
|
-
end
|
97
|
-
|
98
|
-
def write(path)
|
99
|
-
write_gc "#{path}:#{@compression},#{@interlace ? 1 : 0}"
|
100
|
-
end
|
101
|
-
|
102
|
-
def to_memory
|
103
|
-
buf_internal @compression, (@interlace ? 1 : 0)
|
104
|
-
end
|
105
|
-
|
106
|
-
def compression=(compression_v)
|
107
|
-
unless (0..9).include?(compression_v)
|
108
|
-
raise ArgumentError, 'compression must be a numeric value between 0 and 9'
|
109
|
-
end
|
110
|
-
|
111
|
-
@compression = compression_v
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
class WEBPWriter < Writer
|
116
|
-
attr_accessor :quality, :lossless
|
117
|
-
|
118
|
-
def initialize(image, options={})
|
119
|
-
super image
|
120
|
-
|
121
|
-
@quality = 75
|
122
|
-
@lossless = false
|
123
|
-
|
124
|
-
self.quality = options[:quality] if options.has_key?(:quality)
|
125
|
-
self.lossless = options[:lossless] if options.has_key?(:lossless)
|
126
|
-
end
|
127
|
-
|
128
|
-
def write(path)
|
129
|
-
write_gc "#{path}:#{@quality},#{@lossless ? 1 : 0}"
|
130
|
-
end
|
131
|
-
|
132
|
-
def quality=(quality_v)
|
133
|
-
unless (0..100).include?(quality_v)
|
134
|
-
raise ArgumentError, 'quality must be a numeric value between 0 and 100'
|
135
|
-
end
|
136
|
-
|
137
|
-
@quality = quality_v
|
138
|
-
end
|
139
|
-
|
140
|
-
def lossless=(lossless_v)
|
141
|
-
unless [True, False].include?(lossless_v)
|
142
|
-
raise ArgumentError, 'lossless must be a boolean value'
|
143
|
-
end
|
144
|
-
|
145
|
-
@lossless = lossless_v
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
class PPMWriter < Writer
|
150
|
-
attr_reader :format
|
151
|
-
|
152
|
-
FORMAT = [:binary, :ascii]
|
153
|
-
|
154
|
-
def initialize(image, options={})
|
155
|
-
super image
|
156
|
-
|
157
|
-
@format = :binary
|
158
|
-
|
159
|
-
self.format = options[:format] if options.has_key?(:format)
|
160
|
-
end
|
161
|
-
|
162
|
-
def write(path)
|
163
|
-
write_gc "#{path}:#{@format}"
|
164
|
-
end
|
165
|
-
|
166
|
-
def format=(format_v)
|
167
|
-
unless FORMAT.include?(format_v)
|
168
|
-
raise ArgumentError, "format must be one of #{FORMAT.join(', ')}"
|
169
|
-
end
|
170
|
-
|
171
|
-
@format = format_v
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
class TIFFWriter < Writer
|
176
|
-
attr_reader :compression, :layout, :multi_res, :format, :resolution_units,
|
177
|
-
:resolution, :predictor, :quality, :tile_size
|
178
|
-
|
179
|
-
COMPRESSION = [:none, :jpeg, :deflate, :packbits, :ccittfax4, :lzw]
|
180
|
-
PREDICTOR = [:none, :horizontal_differencing, :floating_point]
|
181
|
-
LAYOUT = [:strip, :tile]
|
182
|
-
MULTI_RES = [:flat, :pyramid]
|
183
|
-
FORMAT = [:manybit, :onebit]
|
184
|
-
RESOLUTION_UNITS = [:cm, :inch]
|
185
|
-
|
186
|
-
def initialize(image, options={})
|
187
|
-
super image
|
188
|
-
|
189
|
-
@compression = :none
|
190
|
-
@quality = 75
|
191
|
-
@predictor = :none
|
192
|
-
@layout = :strip
|
193
|
-
@tile_size = [128, 128]
|
194
|
-
@multi_res = :flat
|
195
|
-
@format = :manybit
|
196
|
-
@resolution_units = :cm
|
197
|
-
|
198
|
-
[ :compression, :layout, :multi_res, :format, :resolution_units,
|
199
|
-
:resolution, :predictor, :quality, :tile_size ].each do |att|
|
200
|
-
self.send "#{att}=".to_sym, options[att] if options.has_key?(att)
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
def write(path)
|
205
|
-
opts = [compression_str, layout_str, @multi_res, @format, resolution_str].join ','
|
206
|
-
write_gc "#{path}:#{opts}"
|
207
|
-
end
|
208
|
-
|
209
|
-
def compression_str
|
210
|
-
case @compression
|
211
|
-
when :jpeg then "#{@compression}:#{@quality}"
|
212
|
-
when :lzw, :deflate then "#{@compression}:#{@predictor}"
|
213
|
-
else @compression
|
214
|
-
end
|
215
|
-
end
|
216
|
-
|
217
|
-
def layout_str
|
218
|
-
s = @layout.to_s
|
219
|
-
s << ":#{@tile_size.join 'x'}" if @layout == :tile
|
220
|
-
s
|
221
|
-
end
|
222
|
-
|
223
|
-
def resolution_str
|
224
|
-
s = "res_#{@resolution_units}"
|
225
|
-
s << ":#{@resolution.join 'x'}" if @resolution
|
226
|
-
s
|
227
|
-
end
|
228
|
-
|
229
|
-
def compression=(compression_v)
|
230
|
-
unless COMPRESSION.include?(compression_v)
|
231
|
-
raise ArgumentError, "compression must be one of #{COMPRESSION.join(', ')}"
|
232
|
-
end
|
233
|
-
|
234
|
-
@compression = compression_v
|
235
|
-
end
|
236
|
-
|
237
|
-
def quality=(quality_v)
|
238
|
-
unless (0..100).include?(quality_v)
|
239
|
-
raise ArgumentError, 'quality must be a numeric value between 0 and 100'
|
240
|
-
end
|
241
|
-
|
242
|
-
@quality = quality_v
|
243
|
-
end
|
244
|
-
|
245
|
-
def predictor=(predictor_v)
|
246
|
-
unless PREDICTOR.include?(predictor_v)
|
247
|
-
raise ArgumentError, "predictor must be one of #{PREDICTOR.join(', ')}"
|
248
|
-
end
|
249
|
-
|
250
|
-
@predictor = predictor_v
|
251
|
-
end
|
252
|
-
|
253
|
-
def layout=(layout_v)
|
254
|
-
unless LAYOUT.include?(layout_v)
|
255
|
-
raise ArgumentError, "layout must be one of #{LAYOUT.join(', ')}"
|
256
|
-
end
|
257
|
-
|
258
|
-
@layout = layout_v
|
259
|
-
end
|
260
|
-
|
261
|
-
def tile_size=(tile_size_v)
|
262
|
-
unless tile_size_v[0] > 1 && tile_size_v[1] > 1
|
263
|
-
raise ArgumentError, "tile sizes must be larger than 1"
|
264
|
-
end
|
265
|
-
|
266
|
-
@tile_size = tile_size_v
|
267
|
-
end
|
268
|
-
|
269
|
-
def multi_res=(multi_res_v)
|
270
|
-
unless MULTI_RES.include?(multi_res_v)
|
271
|
-
raise ArgumentError, "multi res must be one of #{MULTI_RES.join(', ')}"
|
272
|
-
end
|
273
|
-
|
274
|
-
@multi_res = multi_res_v
|
275
|
-
end
|
276
|
-
|
277
|
-
def format=(format_v)
|
278
|
-
unless FORMAT.include?(format_v)
|
279
|
-
raise ArgumentError, "format must be one of #{FORMAT.join(', ')}"
|
280
|
-
end
|
281
|
-
|
282
|
-
@format = format_v
|
283
|
-
end
|
284
|
-
|
285
|
-
def resolution_units=(resolution_units_v)
|
286
|
-
unless RESOLUTION_UNITS.include?(resolution_units_v)
|
287
|
-
raise ArgumentError, "Resolution units must be one of #{RESOLUTION_UNITS.join(', ')}"
|
288
|
-
end
|
289
|
-
|
290
|
-
@resolution_units = resolution_units_v
|
291
|
-
end
|
292
|
-
|
293
|
-
def resolution=(resolution_v)
|
294
|
-
unless resolution_v[0] > 0 && resolution_v[1] > 0
|
295
|
-
raise ArgumentError, "Resolution must have a height and width larger than 0"
|
296
|
-
end
|
297
|
-
|
298
|
-
@resolution = resolution_v
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
class Image
|
303
|
-
def csv(*args)
|
304
|
-
invoke_writer CSVWriter, *args
|
305
|
-
end
|
306
|
-
|
307
|
-
def jpeg(*args)
|
308
|
-
invoke_writer JPEGWriter, *args
|
309
|
-
end
|
310
|
-
|
311
|
-
def png(*args)
|
312
|
-
invoke_writer PNGWriter, *args
|
313
|
-
end
|
314
|
-
|
315
|
-
def ppm(*args)
|
316
|
-
invoke_writer PPMWriter, *args
|
317
|
-
end
|
318
|
-
|
319
|
-
def tiff(*args)
|
320
|
-
invoke_writer TIFFWriter, *args
|
321
|
-
end
|
322
|
-
|
323
|
-
def vips(*args)
|
324
|
-
invoke_writer VIPSWriter, *args
|
325
|
-
end
|
326
|
-
|
327
|
-
def write(*args)
|
328
|
-
invoke_writer Writer, *args
|
329
|
-
end
|
330
|
-
|
331
|
-
private
|
332
|
-
|
333
|
-
def invoke_writer(writer_class, path=nil, options={})
|
334
|
-
w = writer_class.new self, options
|
335
|
-
if path
|
336
|
-
w.write path
|
337
|
-
else
|
338
|
-
w
|
339
|
-
end
|
340
|
-
end
|
341
|
-
end
|
342
|
-
end
|
data/ruby-vips.gemspec
DELETED
@@ -1,100 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: ruby-vips 0.3.14 ruby lib
|
6
|
-
# stub: ext/extconf.rb
|
7
|
-
|
8
|
-
Gem::Specification.new do |s|
|
9
|
-
s.name = "ruby-vips"
|
10
|
-
s.version = "0.3.14"
|
11
|
-
|
12
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
13
|
-
s.require_paths = ["lib"]
|
14
|
-
s.authors = ["Timothy Elliott", "John Cupitt"]
|
15
|
-
s.date = "2016-01-25"
|
16
|
-
s.description = "Ruby extension for the vips image processing library."
|
17
|
-
s.email = "jcupitt@gmail.com"
|
18
|
-
s.extensions = ["ext/extconf.rb"]
|
19
|
-
s.extra_rdoc_files = [
|
20
|
-
"LICENSE",
|
21
|
-
"README.md",
|
22
|
-
"TODO"
|
23
|
-
]
|
24
|
-
s.files = [
|
25
|
-
"CHANGELOG.md",
|
26
|
-
"Gemfile.lock",
|
27
|
-
"README.md",
|
28
|
-
"ext/extconf.rb",
|
29
|
-
"ext/header.c",
|
30
|
-
"ext/header.h",
|
31
|
-
"ext/image.c",
|
32
|
-
"ext/image.h",
|
33
|
-
"ext/image_arithmetic.c",
|
34
|
-
"ext/image_arithmetic.h",
|
35
|
-
"ext/image_boolean.c",
|
36
|
-
"ext/image_boolean.h",
|
37
|
-
"ext/image_colour.c",
|
38
|
-
"ext/image_colour.h",
|
39
|
-
"ext/image_conversion.c",
|
40
|
-
"ext/image_conversion.h",
|
41
|
-
"ext/image_convolution.c",
|
42
|
-
"ext/image_convolution.h",
|
43
|
-
"ext/image_freq_filt.c",
|
44
|
-
"ext/image_freq_filt.h",
|
45
|
-
"ext/image_histograms_lut.c",
|
46
|
-
"ext/image_histograms_lut.h",
|
47
|
-
"ext/image_morphology.c",
|
48
|
-
"ext/image_morphology.h",
|
49
|
-
"ext/image_mosaicing.c",
|
50
|
-
"ext/image_mosaicing.h",
|
51
|
-
"ext/image_relational.c",
|
52
|
-
"ext/image_relational.h",
|
53
|
-
"ext/image_resample.c",
|
54
|
-
"ext/image_resample.h",
|
55
|
-
"ext/interpolator.c",
|
56
|
-
"ext/interpolator.h",
|
57
|
-
"ext/mask.c",
|
58
|
-
"ext/mask.h",
|
59
|
-
"ext/reader.c",
|
60
|
-
"ext/reader.h",
|
61
|
-
"ext/ruby_vips.c",
|
62
|
-
"ext/ruby_vips.h",
|
63
|
-
"ext/tags",
|
64
|
-
"ext/writer.c",
|
65
|
-
"ext/writer.h",
|
66
|
-
"lib/vips.rb",
|
67
|
-
"lib/vips/reader.rb",
|
68
|
-
"lib/vips/version.rb",
|
69
|
-
"lib/vips/writer.rb",
|
70
|
-
"ruby-vips.gemspec",
|
71
|
-
"ruby.supp"
|
72
|
-
]
|
73
|
-
s.homepage = "http://github.com/jcupitt/ruby-vips"
|
74
|
-
s.licenses = ["MIT"]
|
75
|
-
s.rdoc_options = ["--title", "ruby-vips \#{version}", "ext"]
|
76
|
-
s.rubygems_version = "2.2.2"
|
77
|
-
s.summary = "ruby-vips is a ruby extension for vips. It is extremely fast and it can process huge images without requiring the entire image to be loaded into memory."
|
78
|
-
|
79
|
-
if s.respond_to? :specification_version then
|
80
|
-
s.specification_version = 4
|
81
|
-
|
82
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
83
|
-
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
84
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
85
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.8"])
|
86
|
-
s.add_development_dependency(%q<rspec>, ["~> 3.4"])
|
87
|
-
else
|
88
|
-
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
89
|
-
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
90
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8"])
|
91
|
-
s.add_dependency(%q<rspec>, ["~> 3.4"])
|
92
|
-
end
|
93
|
-
else
|
94
|
-
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
95
|
-
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
96
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8"])
|
97
|
-
s.add_dependency(%q<rspec>, ["~> 3.4"])
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
data/ruby.supp
DELETED
@@ -1,134 +0,0 @@
|
|
1
|
-
# valgrind suppressions file for ruby1.9.1
|
2
|
-
|
3
|
-
# handy for debugging spec fails, eg.
|
4
|
-
#
|
5
|
-
# $ export G_DEBUG=gc-friendly
|
6
|
-
# $ export G_SLICE=always-malloc
|
7
|
-
# $ valgrind --db-attach=yes -- ruby -S rspec spec/vips/morphology_spec.rb
|
8
|
-
|
9
|
-
{
|
10
|
-
ruby1
|
11
|
-
Memcheck:Cond
|
12
|
-
...
|
13
|
-
fun:rb_parser_compile_file
|
14
|
-
}
|
15
|
-
|
16
|
-
{
|
17
|
-
ruby2
|
18
|
-
Memcheck:Value8
|
19
|
-
...
|
20
|
-
fun:rb_parser_compile_file
|
21
|
-
}
|
22
|
-
|
23
|
-
{
|
24
|
-
ruby3
|
25
|
-
Memcheck:Cond
|
26
|
-
...
|
27
|
-
fun:rb_file_expand_path
|
28
|
-
}
|
29
|
-
|
30
|
-
{
|
31
|
-
ruby4
|
32
|
-
Memcheck:Value8
|
33
|
-
...
|
34
|
-
fun:rb_file_expand_path
|
35
|
-
}
|
36
|
-
|
37
|
-
# happens a lot during compile
|
38
|
-
{
|
39
|
-
ruby5
|
40
|
-
Memcheck:Addr4
|
41
|
-
obj:/usr/lib/libruby-1.9.1.so.1.9.1
|
42
|
-
...
|
43
|
-
fun:rb_ary_each
|
44
|
-
}
|
45
|
-
|
46
|
-
{
|
47
|
-
ruby5a
|
48
|
-
Memcheck:Cond
|
49
|
-
obj:/usr/lib/libruby-1.9.1.so.1.9.1
|
50
|
-
fun:rb_newobj
|
51
|
-
}
|
52
|
-
|
53
|
-
{
|
54
|
-
ruby6
|
55
|
-
Memcheck:Cond
|
56
|
-
...
|
57
|
-
fun:rb_iseq_compile_with_option
|
58
|
-
}
|
59
|
-
|
60
|
-
{
|
61
|
-
ruby7
|
62
|
-
Memcheck:Value8
|
63
|
-
...
|
64
|
-
fun:rb_iseq_compile_with_option
|
65
|
-
}
|
66
|
-
|
67
|
-
{
|
68
|
-
ruby8
|
69
|
-
Memcheck:Cond
|
70
|
-
...
|
71
|
-
fun:st_init_table_with_size
|
72
|
-
}
|
73
|
-
|
74
|
-
{
|
75
|
-
ruby9
|
76
|
-
Memcheck:Value8
|
77
|
-
...
|
78
|
-
fun:st_init_table_with_size
|
79
|
-
}
|
80
|
-
|
81
|
-
{
|
82
|
-
ruby10
|
83
|
-
Memcheck:Cond
|
84
|
-
...
|
85
|
-
fun:rb_iseq_compile_node
|
86
|
-
}
|
87
|
-
|
88
|
-
{
|
89
|
-
ruby11
|
90
|
-
Memcheck:Value8
|
91
|
-
...
|
92
|
-
fun:rb_iseq_compile_node
|
93
|
-
}
|
94
|
-
|
95
|
-
{
|
96
|
-
ruby12
|
97
|
-
Memcheck:Cond
|
98
|
-
obj:/usr/lib/libruby-1.9.1.so.1.9.1
|
99
|
-
...
|
100
|
-
fun:rb_node_newnode
|
101
|
-
}
|
102
|
-
|
103
|
-
{
|
104
|
-
ruby13
|
105
|
-
Memcheck:Value8
|
106
|
-
obj:/usr/lib/libruby-1.9.1.so.1.9.1
|
107
|
-
...
|
108
|
-
fun:rb_node_newnode
|
109
|
-
}
|
110
|
-
|
111
|
-
{
|
112
|
-
ruby14
|
113
|
-
Memcheck:Cond
|
114
|
-
obj:/usr/lib/libruby-1.9.1.so.1.9.1
|
115
|
-
...
|
116
|
-
fun:Init_sha1
|
117
|
-
}
|
118
|
-
|
119
|
-
{
|
120
|
-
ruby15
|
121
|
-
Memcheck:Addr8
|
122
|
-
obj:/usr/lib/libruby-1.9.1.so.1.9.1
|
123
|
-
...
|
124
|
-
fun:rb_yield
|
125
|
-
}
|
126
|
-
|
127
|
-
{
|
128
|
-
ruby16
|
129
|
-
Memcheck:Value8
|
130
|
-
obj:/usr/lib/libruby-1.9.1.so.1.9.1
|
131
|
-
fun:rb_newobj
|
132
|
-
}
|
133
|
-
|
134
|
-
|