sass-embedded 1.63.4-x86-mingw32 → 1.63.5-x86-mingw32

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: 7d3915ef1c7e5323475e3ddedc19ad1e1e92daedadfd0b5fa032dd817c010ec8
4
- data.tar.gz: c46c1829b03b3625bf15fff45a57b3bd137c9ee5f08fd964fc94e2dea88a091b
3
+ metadata.gz: 3499e3464d8ad259d7f1fe370b09fb3d4c6f41769d2b8c406744966d259681f2
4
+ data.tar.gz: 3aaf6118266c15c88587e6bc0d7286be8aadc7c20d9a56cd89ab3944ddd8efdc
5
5
  SHA512:
6
- metadata.gz: 8baa852286563acdcdbd91cd0ab289b1b2594805f17813d797cc13b4afcef1a5839e15a18d46626701b7dcac1f4a35e856ae565c095affefd662ac4083ecc20f
7
- data.tar.gz: 23af96fd4da85d901e337f02b81fdd98bf4acd889c8b3dc946a4f1f49bd74ddfd69c5319e244ce6bda3775c98288b8e925bffbaaefca49e5a0571e1c86750b2c
6
+ metadata.gz: ad4f3fafb174be2ee1529c26c6015785093e72c918397b5a59f527acb7974c298c19fc342cbbafadc8be5fd5f867d235e6bc8058e0540e4610a7f592f1ca6a36
7
+ data.tar.gz: a24bbb0adf5f9b4ba78a9deaef97ea43afe29ca6935bb43b1fa690a4e46ad324099da50f2a1fed5cc3096e41297be177b69b2baf6abd6e2abd665d55709af558
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![build](https://github.com/ntkme/sass-embedded-host-ruby/actions/workflows/build.yml/badge.svg)](https://github.com/ntkme/sass-embedded-host-ruby/actions/workflows/build.yml)
4
4
  [![gem](https://badge.fury.io/rb/sass-embedded.svg)](https://rubygems.org/gems/sass-embedded)
5
5
 
6
- This is a Ruby library that implements the host side of the [Embedded Sass protocol](https://github.com/sass/embedded-protocol).
6
+ This is a Ruby library that implements the host side of the [Embedded Sass protocol](https://github.com/sass/sass/blob/HEAD/spec/embedded-protocol.md).
7
7
 
8
8
  It exposes a Ruby API for Sass that's backed by a native [Dart Sass](https://sass-lang.com/dart-sass) executable.
9
9
 
Binary file
Binary file
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fiddle'
4
+
5
+ # @!visibility private
6
+ # @see https://learn.microsoft.com/en-us/windows/win32/api/
7
+ module Win32API
8
+ Kernel32 = Fiddle.dlopen('Kernel32.dll')
9
+
10
+ # @see https://learn.microsoft.com/en-us/windows/win32/sysinfo/image-file-machine-constants
11
+ module ImageFileMachineConstants
12
+ IMAGE_FILE_MACHINE_I386 = 0x014c
13
+ IMAGE_FILE_MACHINE_ARMNT = 0x01c4
14
+ IMAGE_FILE_MACHINE_AMD64 = 0x8664
15
+ IMAGE_FILE_MACHINE_ARM64 = 0xaa64
16
+ end
17
+
18
+ private_constant :ImageFileMachineConstants
19
+
20
+ # @see https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/ne-processthreadsapi-machine_attributes
21
+ module MachineAttributes
22
+ USER_ENABLED = 0x00000001
23
+ KERNEL_ENABLED = 0x00000002
24
+ WOW64_CONTAINER = 0x00000004
25
+ end
26
+
27
+ private_constant :MachineAttributes
28
+
29
+ # Specifies the ways in which an architecture of code can run on a host operating system.
30
+ class MachineTypeAttributes
31
+ def initialize(machine_type_attributes)
32
+ @machine_type_attributes = machine_type_attributes
33
+ end
34
+
35
+ # The specified architecture of code can run in user mode.
36
+ def user_enabled?
37
+ @machine_type_attributes & MachineAttributes::USER_ENABLED == MachineAttributes::USER_ENABLED
38
+ end
39
+
40
+ # The specified architecture of code can run in kernel mode.
41
+ def kernel_enabled?
42
+ @machine_type_attributes & MachineAttributes::KERNEL_ENABLED == MachineAttributes::KERNEL_ENABLED
43
+ end
44
+
45
+ # The specified architecture of code runs on WOW64.
46
+ def wow64_container?
47
+ @machine_type_attributes & MachineAttributes::WOW64_CONTAINER == MachineAttributes::WOW64_CONTAINER
48
+ end
49
+ end
50
+
51
+ private_constant :MachineTypeAttributes
52
+
53
+ class << self
54
+ def x86?
55
+ get_machine_type_attributes(ImageFileMachineConstants::IMAGE_FILE_MACHINE_I386).user_enabled?
56
+ end
57
+
58
+ def arm?
59
+ get_machine_type_attributes(ImageFileMachineConstants::IMAGE_FILE_MACHINE_ARMNT).user_enabled?
60
+ end
61
+
62
+ def x64?
63
+ get_machine_type_attributes(ImageFileMachineConstants::IMAGE_FILE_MACHINE_AMD64).user_enabled?
64
+ end
65
+
66
+ def arm64?
67
+ get_machine_type_attributes(ImageFileMachineConstants::IMAGE_FILE_MACHINE_ARM64).user_enabled?
68
+ end
69
+
70
+ private
71
+
72
+ begin
73
+ # @see https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getmachinetypeattributes
74
+ GetMachineTypeAttributes = Fiddle::Function.new(
75
+ Kernel32['GetMachineTypeAttributes'],
76
+ [-Fiddle::TYPE_SHORT, Fiddle::TYPE_VOIDP],
77
+ Fiddle::TYPE_LONG
78
+ )
79
+
80
+ def get_machine_type_attributes(machine)
81
+ p_machine_type_attributes = Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT, Fiddle::RUBY_FREE)
82
+ raise Fiddle.win32_last_error unless GetMachineTypeAttributes.call(machine, p_machine_type_attributes).zero?
83
+
84
+ MachineTypeAttributes.new(p_machine_type_attributes.to_str.unpack1('i'))
85
+ end
86
+ rescue Fiddle::DLError
87
+ # @see https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess
88
+ GetCurrentProcess = Fiddle::Function.new(
89
+ Kernel32['GetCurrentProcess'],
90
+ [],
91
+ Fiddle::TYPE_VOIDP
92
+ )
93
+
94
+ # @see https://learn.microsoft.com/en-us/windows/win32/api/wow64apiset/nf-wow64apiset-iswow64process2
95
+ IsWow64Process2 = Fiddle::Function.new(
96
+ Kernel32['IsWow64Process2'],
97
+ [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP],
98
+ Fiddle::TYPE_CHAR
99
+ )
100
+
101
+ # @see https://learn.microsoft.com/en-us/windows/win32/api/wow64apiset/nf-wow64apiset-iswow64guestmachinesupported
102
+ IsWow64GuestMachineSupported = Fiddle::Function.new(
103
+ Kernel32['IsWow64GuestMachineSupported'],
104
+ [-Fiddle::TYPE_SHORT, Fiddle::TYPE_VOIDP],
105
+ Fiddle::TYPE_LONG
106
+ )
107
+
108
+ def get_machine_type_attributes(machine)
109
+ h_process = GetCurrentProcess.call
110
+ p_process_machine = Fiddle::Pointer.malloc(Fiddle::SIZEOF_SHORT, Fiddle::RUBY_FREE)
111
+ p_native_machine = Fiddle::Pointer.malloc(Fiddle::SIZEOF_SHORT, Fiddle::RUBY_FREE)
112
+ raise Fiddle.win32_last_error if IsWow64Process2.call(h_process, p_process_machine, p_native_machine).zero?
113
+
114
+ if p_native_machine.to_str.unpack1('S!') == machine
115
+ return MachineTypeAttributes.new(MachineAttributes::USER_ENABLED | MachineAttributes::KERNEL_ENABLED)
116
+ end
117
+
118
+ p_machine_is_supported = Fiddle::Pointer.malloc(Fiddle::SIZEOF_CHAR, Fiddle::RUBY_FREE)
119
+ raise Fiddle.win32_last_error unless IsWow64GuestMachineSupported.call(machine, p_machine_is_supported).zero?
120
+
121
+ if p_machine_is_supported.to_str.unpack1('c').zero?
122
+ MachineTypeAttributes.new(0)
123
+ else
124
+ MachineTypeAttributes.new(MachineAttributes::USER_ENABLED | MachineAttributes::WOW64_CONTAINER)
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
@@ -46,15 +46,11 @@ module Sass
46
46
 
47
47
  return unless @observers.empty?
48
48
 
49
- # if @id == UINT_MAX
50
- # close
51
- # else
52
- # @id = 1
53
- # end
54
-
55
- # Resetting @id can cause a race condition in compiler
56
- # See: https://github.com/sass/dart-sass/issues/2004
57
- close if @id == UINT_MAX
49
+ if @id == UINT_MAX
50
+ close
51
+ else
52
+ @id = 1
53
+ end
58
54
  end
59
55
  end
60
56
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sass
4
4
  class Embedded
5
- VERSION = '1.63.4'
5
+ VERSION = '1.63.5'
6
6
  end
7
7
  end
data/lib/sass/embedded.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative '../../ext/sass/cli'
4
- require_relative '../../ext/sass/embedded_sass_pb'
5
4
  require_relative 'compile_error'
6
5
  require_relative 'compile_result'
7
6
  require_relative 'embedded/connection'
@@ -12,6 +11,7 @@ require_relative 'embedded/resilient_dispatcher'
12
11
  require_relative 'embedded/structifier'
13
12
  require_relative 'embedded/varint'
14
13
  require_relative 'embedded/version'
14
+ require_relative 'embedded_protocol'
15
15
  require_relative 'logger/silent'
16
16
  require_relative 'logger/source_location'
17
17
  require_relative 'logger/source_span'
@@ -247,6 +247,4 @@ module Sass
247
247
  @dispatcher.closed?
248
248
  end
249
249
  end
250
-
251
- private_constant :EmbeddedProtocol
252
250
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sass
4
+ # @see https://github.com/sass/sass/blob/HEAD/spec/embedded-protocol.md
5
+ module EmbeddedProtocol
6
+ require_relative '../../ext/sass/embedded_sass_pb'
7
+ end
8
+
9
+ private_constant :EmbeddedProtocol
10
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass-embedded
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.63.4
4
+ version: 1.63.5
5
5
  platform: x86-mingw32
6
6
  authors:
7
7
  - なつき
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-15 00:00:00.000000000 Z
11
+ date: 2023-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -42,6 +42,7 @@ files:
42
42
  - ext/sass/dart-sass/src/dart.exe
43
43
  - ext/sass/dart-sass/src/sass.snapshot
44
44
  - ext/sass/embedded_sass_pb.rb
45
+ - ext/sass/win32_api.rb
45
46
  - lib/sass-embedded.rb
46
47
  - lib/sass/compile_error.rb
47
48
  - lib/sass/compile_result.rb
@@ -59,6 +60,7 @@ files:
59
60
  - lib/sass/embedded/structifier.rb
60
61
  - lib/sass/embedded/varint.rb
61
62
  - lib/sass/embedded/version.rb
63
+ - lib/sass/embedded_protocol.rb
62
64
  - lib/sass/logger/silent.rb
63
65
  - lib/sass/logger/source_location.rb
64
66
  - lib/sass/logger/source_span.rb
@@ -79,8 +81,8 @@ homepage: https://github.com/ntkme/sass-embedded-host-ruby
79
81
  licenses:
80
82
  - MIT
81
83
  metadata:
82
- documentation_uri: https://rubydoc.info/gems/sass-embedded/1.63.4
83
- source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v1.63.4
84
+ documentation_uri: https://rubydoc.info/gems/sass-embedded/1.63.5
85
+ source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v1.63.5
84
86
  funding_uri: https://github.com/sponsors/ntkme
85
87
  post_install_message:
86
88
  rdoc_options: []