libffm 0.4.0 → 0.4.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2392488b8b459a0eb791ef7adc80fd31451755214eb67b089cb374e517da031f
4
- data.tar.gz: d42c241978ba042497e722a415b12a0ff2011debaa6b72a3f32137c2c89b9b89
3
+ metadata.gz: bc1d79899f98f45cbcfab6278aae23893c8304fbe2fae308a842e4ccb14a1d77
4
+ data.tar.gz: d908f0576dc9090db280627a45574547b05ebec82ccc43f15b1fca8e54f86044
5
5
  SHA512:
6
- metadata.gz: e202868004f3b44a112d9c53ff8776767450d5dced1c04e537bd81fb880102df2cd3ecf69a23610be73582b244db2164d86476b96027724140ff029b3256c377
7
- data.tar.gz: ef2e21aa60f27d44131a4041144779509bad24f866dbc5634e46ba1f13b55630af148d4d3b5ff854d116918d001ff6c546f789eeb92398ebae09dd7742277b32
6
+ metadata.gz: ad89c269232bf72ed62dd2a347a6d9cf4129e17240fa2eac843b56cfd02bfd54a5fe7d36420119f7bb4f2f6ff7136fd3a31051ede1a5b6bfea59f6afa3ce771c
7
+ data.tar.gz: 8fbe76a119fe45a5ae8086d99c8c9998aaaa8bd85c81908db9bdf4e340c0754c26014a45be0dc558ccae07d2e21fa3cc5c7b99d75be4e58327d52714acb812f0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.4.1 (2025-10-26)
2
+
3
+ - Fixed error with Rice 4.7
4
+
1
5
  ## 0.4.0 (2025-04-03)
2
6
 
3
7
  - Dropped support for Ruby < 3.2
data/ext/libffm/ext.cpp CHANGED
@@ -1,29 +1,19 @@
1
- // stdlib
1
+ #include <cstdio>
2
+ #include <cstdlib>
3
+ #include <cstring>
2
4
  #include <iostream>
5
+ #include <string>
3
6
 
4
- // ffm
5
7
  #include <ffm.h>
6
-
7
- // rice
8
8
  #include <rice/rice.hpp>
9
9
  #include <rice/stl.hpp>
10
10
 
11
- using Rice::Array;
12
- using Rice::Class;
13
- using Rice::Module;
14
- using Rice::Object;
15
- using Rice::String;
16
- using Rice::define_module;
17
- using Rice::define_module_under;
18
- using Rice::define_class_under;
19
-
20
11
  extern "C"
21
- void Init_ext()
22
- {
23
- auto rb_mLibffm = define_module("Libffm");
12
+ void Init_ext() {
13
+ auto rb_mLibffm = Rice::define_module("Libffm");
24
14
 
25
- auto rb_mExt = define_module_under(rb_mLibffm, "Ext");
26
- define_class_under<ffm::ffm_model>(rb_mExt, "Model");
15
+ auto rb_mExt = Rice::define_module_under(rb_mLibffm, "Ext");
16
+ Rice::define_class_under<ffm::ffm_model>(rb_mExt, "Model");
27
17
 
28
18
  rb_mExt
29
19
  .define_singleton_function(
@@ -61,37 +51,37 @@ void Init_ext()
61
51
  [](ffm::ffm_model& model, const std::string& test_path) {
62
52
  int const kMaxLineSize = 1000000;
63
53
 
64
- FILE *f_in = fopen(test_path.c_str(), "r");
54
+ std::FILE *f_in = std::fopen(test_path.c_str(), "r");
65
55
  char line[kMaxLineSize];
66
56
 
67
57
  ffm::vector<ffm::ffm_node> x;
68
58
  ffm::ffm_int i = 0;
69
59
 
70
- Array ret;
71
- for(; fgets(line, kMaxLineSize, f_in) != nullptr; i++) {
60
+ Rice::Array ret;
61
+ for(; std::fgets(line, kMaxLineSize, f_in) != nullptr; i++) {
72
62
  x.clear();
73
- strtok(line, " \t");
63
+ std::strtok(line, " \t");
74
64
 
75
65
  while (true) {
76
- char *field_char = strtok(nullptr,":");
77
- char *idx_char = strtok(nullptr,":");
78
- char *value_char = strtok(nullptr," \t");
66
+ char *field_char = std::strtok(nullptr, ":");
67
+ char *idx_char = std::strtok(nullptr, ":");
68
+ char *value_char = std::strtok(nullptr, " \t");
79
69
  if (field_char == nullptr || *field_char == '\n')
80
70
  break;
81
71
 
82
72
  ffm::ffm_node N;
83
- N.f = atoi(field_char);
84
- N.j = atoi(idx_char);
85
- N.v = atof(value_char);
73
+ N.f = std::atoi(field_char);
74
+ N.j = std::atoi(idx_char);
75
+ N.v = std::atof(value_char);
86
76
 
87
77
  x.push_back(N);
88
78
  }
89
79
 
90
80
  ffm::ffm_float y_bar = ffm::ffm_predict(x.data(), x.data()+x.size(), model);
91
- ret.push(y_bar);
81
+ ret.push(y_bar, false);
92
82
  }
93
83
 
94
- fclose(f_in);
84
+ std::fclose(f_in);
95
85
 
96
86
  return ret;
97
87
  })
@@ -1,3 +1,3 @@
1
1
  module Libffm
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
data/lib/libffm.rb CHANGED
@@ -5,8 +5,8 @@ require "libffm/ext"
5
5
  require "tmpdir"
6
6
 
7
7
  # modules
8
- require "libffm/model"
9
- require "libffm/version"
8
+ require_relative "libffm/model"
9
+ require_relative "libffm/version"
10
10
 
11
11
  module Libffm
12
12
  class Error < StandardError; end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libffm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-04-03 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rice
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 4.3.3
18
+ version: '4.7'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 4.3.3
25
+ version: '4.7'
26
26
  email: andrew@ankane.org
27
27
  executables: []
28
28
  extensions:
@@ -65,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
65
  - !ruby/object:Gem::Version
66
66
  version: '0'
67
67
  requirements: []
68
- rubygems_version: 3.6.2
68
+ rubygems_version: 3.6.9
69
69
  specification_version: 4
70
70
  summary: Field-aware factorization machines for Ruby
71
71
  test_files: []