Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 10 additions & 16 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,21 @@ jobs:
fail-fast: false
matrix:
os:
- macos-12
- macos-13
- ubuntu-20.04
- macos-14
- ubuntu-22.04
- windows-2019
- ubuntu-24.04
- windows-2022
- windows-2025
emacs-version:
- '27.2'
- '28.2'
- '29.2'
include:
- os: macos-12
emacs-version: '26.3'
- os: ubuntu-20.04
emacs-version: '26.3'
exclude:
- os: macos-13
emacs-version: 27.2
- os: macos-14
emacs-version: 27.2
runs-on: ${{ matrix.os }}
steps:
- name: Set up Rust
Expand All @@ -50,20 +50,14 @@ jobs:

- run: cargo test --all

- uses: purcell/[email protected]
if: runner.os != 'Windows'
with:
version: ${{ matrix.emacs-version }}

- uses: jcs090218/setup-emacs-windows@master
if: runner.os == 'Windows'
- uses: jcs090218/setup-emacs@master
with:
version: ${{ matrix.emacs-version }}

- run: ./bin/test

ci-aarch64:
runs-on: macos-12
runs-on: macos-13
steps:
- name: Set up Rust
run: |
Expand Down
2 changes: 1 addition & 1 deletion emacs-module/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ license = "BSD-3-Clause"
build = "build.rs"

[build-dependencies]
bindgen = { version = "0.59.0", optional = true }
bindgen = { version = "0.72.0", optional = true }

[features]
default = []
311 changes: 73 additions & 238 deletions emacs-module/src/emacs-module.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* automatically generated by rust-bindgen 0.56.0 */
/* automatically generated by rust-bindgen 0.72.0 */

pub type intmax_t = ::std::os::raw::c_longlong;
pub type emacs_finalizer_function =
Expand All @@ -20,34 +20,16 @@ pub struct emacs_runtime {
pub get_environment:
::std::option::Option<unsafe extern "C" fn(ert: *mut emacs_runtime) -> *mut emacs_env>,
}
#[test]
fn bindgen_test_layout_emacs_runtime() {
assert_eq!(
::std::mem::size_of::<emacs_runtime>(),
24usize,
concat!("Size of: ", stringify!(emacs_runtime))
);
assert_eq!(
::std::mem::align_of::<emacs_runtime>(),
8usize,
concat!("Alignment of ", stringify!(emacs_runtime))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_runtime>())).size as *const _ as usize },
0usize,
concat!("Offset of field: ", stringify!(emacs_runtime), "::", stringify!(size))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_runtime>())).private_members as *const _ as usize },
8usize,
concat!("Offset of field: ", stringify!(emacs_runtime), "::", stringify!(private_members))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_runtime>())).get_environment as *const _ as usize },
16usize,
concat!("Offset of field: ", stringify!(emacs_runtime), "::", stringify!(get_environment))
);
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of emacs_runtime"][::std::mem::size_of::<emacs_runtime>() - 24usize];
["Alignment of emacs_runtime"][::std::mem::align_of::<emacs_runtime>() - 8usize];
["Offset of field: emacs_runtime::size"][::std::mem::offset_of!(emacs_runtime, size) - 0usize];
["Offset of field: emacs_runtime::private_members"]
[::std::mem::offset_of!(emacs_runtime, private_members) - 8usize];
["Offset of field: emacs_runtime::get_environment"]
[::std::mem::offset_of!(emacs_runtime, get_environment) - 16usize];
};
pub type emacs_init_function =
::std::option::Option<unsafe extern "C" fn(ert: *mut emacs_runtime) -> ::std::os::raw::c_int>;
pub type emacs_subr = ::std::option::Option<
Expand Down Expand Up @@ -190,215 +172,68 @@ pub struct emacs_env_25 {
pub vec_size:
::std::option::Option<unsafe extern "C" fn(env: *mut emacs_env, vec: emacs_value) -> isize>,
}
#[test]
fn bindgen_test_layout_emacs_env_25() {
assert_eq!(
::std::mem::size_of::<emacs_env_25>(),
232usize,
concat!("Size of: ", stringify!(emacs_env_25))
);
assert_eq!(
::std::mem::align_of::<emacs_env_25>(),
8usize,
concat!("Alignment of ", stringify!(emacs_env_25))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).size as *const _ as usize },
0usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(size))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).private_members as *const _ as usize },
8usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(private_members))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).make_global_ref as *const _ as usize },
16usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(make_global_ref))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).free_global_ref as *const _ as usize },
24usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(free_global_ref))
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<emacs_env_25>())).non_local_exit_check as *const _ as usize
},
32usize,
concat!(
"Offset of field: ",
stringify!(emacs_env_25),
"::",
stringify!(non_local_exit_check)
)
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<emacs_env_25>())).non_local_exit_clear as *const _ as usize
},
40usize,
concat!(
"Offset of field: ",
stringify!(emacs_env_25),
"::",
stringify!(non_local_exit_clear)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).non_local_exit_get as *const _ as usize },
48usize,
concat!(
"Offset of field: ",
stringify!(emacs_env_25),
"::",
stringify!(non_local_exit_get)
)
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<emacs_env_25>())).non_local_exit_signal as *const _ as usize
},
56usize,
concat!(
"Offset of field: ",
stringify!(emacs_env_25),
"::",
stringify!(non_local_exit_signal)
)
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<emacs_env_25>())).non_local_exit_throw as *const _ as usize
},
64usize,
concat!(
"Offset of field: ",
stringify!(emacs_env_25),
"::",
stringify!(non_local_exit_throw)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).make_function as *const _ as usize },
72usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(make_function))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).funcall as *const _ as usize },
80usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(funcall))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).intern as *const _ as usize },
88usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(intern))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).type_of as *const _ as usize },
96usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(type_of))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).is_not_nil as *const _ as usize },
104usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(is_not_nil))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).eq as *const _ as usize },
112usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(eq))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).extract_integer as *const _ as usize },
120usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(extract_integer))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).make_integer as *const _ as usize },
128usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(make_integer))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).extract_float as *const _ as usize },
136usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(extract_float))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).make_float as *const _ as usize },
144usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(make_float))
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<emacs_env_25>())).copy_string_contents as *const _ as usize
},
152usize,
concat!(
"Offset of field: ",
stringify!(emacs_env_25),
"::",
stringify!(copy_string_contents)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).make_string as *const _ as usize },
160usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(make_string))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).make_user_ptr as *const _ as usize },
168usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(make_user_ptr))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).get_user_ptr as *const _ as usize },
176usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(get_user_ptr))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).set_user_ptr as *const _ as usize },
184usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(set_user_ptr))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).get_user_finalizer as *const _ as usize },
192usize,
concat!(
"Offset of field: ",
stringify!(emacs_env_25),
"::",
stringify!(get_user_finalizer)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).set_user_finalizer as *const _ as usize },
200usize,
concat!(
"Offset of field: ",
stringify!(emacs_env_25),
"::",
stringify!(set_user_finalizer)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).vec_get as *const _ as usize },
208usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(vec_get))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).vec_set as *const _ as usize },
216usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(vec_set))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<emacs_env_25>())).vec_size as *const _ as usize },
224usize,
concat!("Offset of field: ", stringify!(emacs_env_25), "::", stringify!(vec_size))
);
}
extern "C" {
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
["Size of emacs_env_25"][::std::mem::size_of::<emacs_env_25>() - 232usize];
["Alignment of emacs_env_25"][::std::mem::align_of::<emacs_env_25>() - 8usize];
["Offset of field: emacs_env_25::size"][::std::mem::offset_of!(emacs_env_25, size) - 0usize];
["Offset of field: emacs_env_25::private_members"]
[::std::mem::offset_of!(emacs_env_25, private_members) - 8usize];
["Offset of field: emacs_env_25::make_global_ref"]
[::std::mem::offset_of!(emacs_env_25, make_global_ref) - 16usize];
["Offset of field: emacs_env_25::free_global_ref"]
[::std::mem::offset_of!(emacs_env_25, free_global_ref) - 24usize];
["Offset of field: emacs_env_25::non_local_exit_check"]
[::std::mem::offset_of!(emacs_env_25, non_local_exit_check) - 32usize];
["Offset of field: emacs_env_25::non_local_exit_clear"]
[::std::mem::offset_of!(emacs_env_25, non_local_exit_clear) - 40usize];
["Offset of field: emacs_env_25::non_local_exit_get"]
[::std::mem::offset_of!(emacs_env_25, non_local_exit_get) - 48usize];
["Offset of field: emacs_env_25::non_local_exit_signal"]
[::std::mem::offset_of!(emacs_env_25, non_local_exit_signal) - 56usize];
["Offset of field: emacs_env_25::non_local_exit_throw"]
[::std::mem::offset_of!(emacs_env_25, non_local_exit_throw) - 64usize];
["Offset of field: emacs_env_25::make_function"]
[::std::mem::offset_of!(emacs_env_25, make_function) - 72usize];
["Offset of field: emacs_env_25::funcall"]
[::std::mem::offset_of!(emacs_env_25, funcall) - 80usize];
["Offset of field: emacs_env_25::intern"]
[::std::mem::offset_of!(emacs_env_25, intern) - 88usize];
["Offset of field: emacs_env_25::type_of"]
[::std::mem::offset_of!(emacs_env_25, type_of) - 96usize];
["Offset of field: emacs_env_25::is_not_nil"]
[::std::mem::offset_of!(emacs_env_25, is_not_nil) - 104usize];
["Offset of field: emacs_env_25::eq"][::std::mem::offset_of!(emacs_env_25, eq) - 112usize];
["Offset of field: emacs_env_25::extract_integer"]
[::std::mem::offset_of!(emacs_env_25, extract_integer) - 120usize];
["Offset of field: emacs_env_25::make_integer"]
[::std::mem::offset_of!(emacs_env_25, make_integer) - 128usize];
["Offset of field: emacs_env_25::extract_float"]
[::std::mem::offset_of!(emacs_env_25, extract_float) - 136usize];
["Offset of field: emacs_env_25::make_float"]
[::std::mem::offset_of!(emacs_env_25, make_float) - 144usize];
["Offset of field: emacs_env_25::copy_string_contents"]
[::std::mem::offset_of!(emacs_env_25, copy_string_contents) - 152usize];
["Offset of field: emacs_env_25::make_string"]
[::std::mem::offset_of!(emacs_env_25, make_string) - 160usize];
["Offset of field: emacs_env_25::make_user_ptr"]
[::std::mem::offset_of!(emacs_env_25, make_user_ptr) - 168usize];
["Offset of field: emacs_env_25::get_user_ptr"]
[::std::mem::offset_of!(emacs_env_25, get_user_ptr) - 176usize];
["Offset of field: emacs_env_25::set_user_ptr"]
[::std::mem::offset_of!(emacs_env_25, set_user_ptr) - 184usize];
["Offset of field: emacs_env_25::get_user_finalizer"]
[::std::mem::offset_of!(emacs_env_25, get_user_finalizer) - 192usize];
["Offset of field: emacs_env_25::set_user_finalizer"]
[::std::mem::offset_of!(emacs_env_25, set_user_finalizer) - 200usize];
["Offset of field: emacs_env_25::vec_get"]
[::std::mem::offset_of!(emacs_env_25, vec_get) - 208usize];
["Offset of field: emacs_env_25::vec_set"]
[::std::mem::offset_of!(emacs_env_25, vec_set) - 216usize];
["Offset of field: emacs_env_25::vec_size"]
[::std::mem::offset_of!(emacs_env_25, vec_size) - 224usize];
};
unsafe extern "C" {
pub fn emacs_module_init(ert: *mut emacs_runtime) -> ::std::os::raw::c_int;
}
#[repr(C)]
Expand Down
Loading
Loading