Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 50402223b866
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: ef5e53afb383
Choose a head ref
  • 5 commits
  • 146 files changed
  • 1 contributor

Commits on Feb 17, 2018

  1. Copy the full SHA
    7d2a4a2 View commit details
  2. mathn.rb is gone in 2.5.

    headius committed Feb 17, 2018
    Copy the full SHA
    a141f84 View commit details
  3. Copy the full SHA
    51d23b7 View commit details
  4. Copy the full SHA
    ab501b6 View commit details
  5. Copy the full SHA
    ef5e53a View commit details
Showing with 2,027 additions and 1,659 deletions.
  1. +29 −33 lib/ruby/stdlib/English.rb
  2. +1 −1 lib/ruby/stdlib/abbrev.rb
  3. +3 −3 lib/ruby/stdlib/base64.rb
  4. +1 −1 lib/ruby/stdlib/benchmark.rb
  5. +2 −2 lib/ruby/stdlib/bigdecimal/math.rb
  6. +57 −51 lib/ruby/stdlib/bigdecimal/util.rb
  7. +1 −1 lib/ruby/stdlib/cgi.rb
  8. +2 −2 lib/ruby/stdlib/cgi/cookie.rb
  9. +18 −11 lib/ruby/stdlib/cgi/core.rb
  10. +3 −3 lib/ruby/stdlib/cgi/html.rb
  11. +1 −1 lib/ruby/stdlib/cgi/session.rb
  12. +1 −1 lib/ruby/stdlib/cgi/session/pstore.rb
  13. +2 −2 lib/ruby/stdlib/cgi/util.rb
  14. +2 −2 lib/ruby/stdlib/cmath.rb
  15. +162 −188 lib/ruby/stdlib/csv.rb
  16. +14 −17 lib/ruby/stdlib/date.rb
  17. +1 −1 lib/ruby/stdlib/debug.rb
  18. +11 −3 lib/ruby/stdlib/delegate.rb
  19. +8 −2 lib/ruby/stdlib/drb/acl.rb
  20. +15 −8 lib/ruby/stdlib/drb/drb.rb
  21. +0 −1 lib/ruby/stdlib/drb/extservm.rb
  22. +1 −1 lib/ruby/stdlib/drb/ssl.rb
  23. +1 −1 lib/ruby/stdlib/e2mmap.rb
  24. +61 −55 lib/ruby/stdlib/erb.rb
  25. +5 −6 lib/ruby/stdlib/expect.rb
  26. +1 −0 lib/ruby/stdlib/fiddle.rb
  27. +1 −1 lib/ruby/stdlib/fiddle/closure.rb
  28. +4 −1 lib/ruby/stdlib/fiddle/cparser.rb
  29. +1 −1 lib/ruby/stdlib/fiddle/function.rb
  30. +1 −1 lib/ruby/stdlib/fiddle/import.rb
  31. +2 −2 lib/ruby/stdlib/fiddle/pack.rb
  32. +1 −1 lib/ruby/stdlib/fiddle/struct.rb
  33. +1 −1 lib/ruby/stdlib/fiddle/types.rb
  34. +1 −1 lib/ruby/stdlib/fiddle/value.rb
  35. +16 −13 lib/ruby/stdlib/fileutils.rb
  36. +2 −3 lib/ruby/stdlib/find.rb
  37. +1 −1 lib/ruby/stdlib/forwardable.rb
  38. +11 −11 lib/ruby/stdlib/getoptlong.rb
  39. +23 −22 lib/ruby/stdlib/irb.rb
  40. +0 −1 lib/ruby/stdlib/irb/context.rb
  41. +0 −1 lib/ruby/stdlib/irb/ext/multi-irb.rb
  42. +0 −3 lib/ruby/stdlib/irb/extend-command.rb
  43. +16 −19 lib/ruby/stdlib/irb/init.rb
  44. +0 −1 lib/ruby/stdlib/irb/lc/help-message
  45. +0 −1 lib/ruby/stdlib/irb/lc/ja/help-message
  46. +1 −1 lib/ruby/stdlib/irb/locale.rb
  47. +1 −1 lib/ruby/stdlib/irb/magic-file.rb
  48. +13 −4 lib/ruby/stdlib/irb/ruby-lex.rb
  49. +1 −1 lib/ruby/stdlib/irb/slex.rb
  50. +4 −2 lib/ruby/stdlib/irb/src_encoding.rb
  51. +22 −2 lib/ruby/stdlib/irb/workspace.rb
  52. +11 −9 lib/ruby/stdlib/logger.rb
  53. +0 −170 lib/ruby/stdlib/mathn.rb
  54. +93 −117 lib/ruby/stdlib/matrix.rb
  55. +14 −2 lib/ruby/stdlib/monitor.rb
  56. +0 −3 lib/ruby/stdlib/mutex_m.rb
  57. +10 −16 lib/ruby/stdlib/net/ftp.rb
  58. +77 −29 lib/ruby/stdlib/net/http.rb
  59. +2 −2 lib/ruby/stdlib/net/http/generic_request.rb
  60. +37 −5 lib/ruby/stdlib/net/http/header.rb
  61. +3 −3 lib/ruby/stdlib/net/http/response.rb
  62. +27 −6 lib/ruby/stdlib/net/http/responses.rb
  63. +83 −0 lib/ruby/stdlib/net/http/status.rb
  64. +116 −37 lib/ruby/stdlib/net/imap.rb
  65. +7 −7 lib/ruby/stdlib/net/pop.rb
  66. +15 −11 lib/ruby/stdlib/net/protocol.rb
  67. +4 −4 lib/ruby/stdlib/net/smtp.rb
  68. +2 −2 lib/ruby/stdlib/observer.rb
  69. +14 −0 lib/ruby/stdlib/open-uri.rb
  70. +15 −3 lib/ruby/stdlib/open3.rb
  71. +23 −17 lib/ruby/stdlib/optparse.rb
  72. +129 −94 lib/ruby/stdlib/ostruct.rb
  73. +3 −1 lib/ruby/stdlib/pathname.rb
  74. +26 −29 lib/ruby/stdlib/pp.rb
  75. +3 −3 lib/ruby/stdlib/prime.rb
  76. +1 −1 lib/ruby/stdlib/profile.rb
  77. +1 −1 lib/ruby/stdlib/profiler.rb
  78. +1 −1 lib/ruby/stdlib/pstore.rb
  79. +0 −1 lib/ruby/stdlib/rbconfig/.document
  80. +0 −14 lib/ruby/stdlib/rbconfig/datadir.rb
  81. +0 −38 lib/ruby/stdlib/rbconfig/obsolete.rb
  82. +16 −11 lib/ruby/stdlib/resolv.rb
  83. +1 −1 lib/ruby/stdlib/rexml/cdata.rb
  84. +1 −1 lib/ruby/stdlib/rexml/comment.rb
  85. +1 −1 lib/ruby/stdlib/rexml/element.rb
  86. +1 −4 lib/ruby/stdlib/rexml/entity.rb
  87. +1 −1 lib/ruby/stdlib/rexml/formatters/default.rb
  88. +26 −3 lib/ruby/stdlib/rexml/functions.rb
  89. +1 −1 lib/ruby/stdlib/rexml/instruction.rb
  90. +1 −1 lib/ruby/stdlib/rexml/node.rb
  91. +8 −0 lib/ruby/stdlib/rexml/parsers/streamparser.rb
  92. +1 −1 lib/ruby/stdlib/rexml/text.rb
  93. +0 −1 lib/ruby/stdlib/rinda/rinda.rb
  94. +5 −2 lib/ruby/stdlib/rinda/ring.rb
  95. +0 −1 lib/ruby/stdlib/rinda/tuplespace.rb
  96. +1 −1 lib/ruby/stdlib/rss/itunes.rb
  97. +4 −4 lib/ruby/stdlib/rss/maker/itunes.rb
  98. +10 −11 lib/ruby/stdlib/rss/rss.rb
  99. +3 −3 lib/ruby/stdlib/rss/utils.rb
  100. +3 −3 lib/ruby/stdlib/scanf.rb
  101. +209 −125 lib/ruby/stdlib/set.rb
  102. +2 −2 lib/ruby/stdlib/shell/command-processor.rb
  103. +1 −1 lib/ruby/stdlib/shell/filter.rb
  104. +0 −2 lib/ruby/stdlib/shell/process-controller.rb
  105. +1 −1 lib/ruby/stdlib/shell/system-command.rb
  106. +0 −1 lib/ruby/stdlib/singleton.rb
  107. +37 −24 lib/ruby/stdlib/socket.rb
  108. +0 −1 lib/ruby/stdlib/thwait.rb
  109. +2 −2 lib/ruby/stdlib/time.rb
  110. +24 −28 lib/ruby/stdlib/tmpdir.rb
  111. +0 −1 lib/ruby/stdlib/tracer.rb
  112. +13 −1 lib/ruby/stdlib/un.rb
  113. +16 −2 lib/ruby/stdlib/unicode_normalize/normalize.rb
  114. +81 −78 lib/ruby/stdlib/unicode_normalize/tables.rb
  115. +10 −4 lib/ruby/stdlib/uri/common.rb
  116. +2 −2 lib/ruby/stdlib/uri/ftp.rb
  117. +47 −33 lib/ruby/stdlib/uri/generic.rb
  118. +0 −24 lib/ruby/stdlib/uri/http.rb
  119. +6 −0 lib/ruby/stdlib/webrick/.document
  120. +2 −2 lib/ruby/stdlib/webrick/httpauth/htdigest.rb
  121. +2 −2 lib/ruby/stdlib/webrick/httpauth/htgroup.rb
  122. +2 −2 lib/ruby/stdlib/webrick/httpauth/htpasswd.rb
  123. +4 −4 lib/ruby/stdlib/webrick/httpproxy.rb
  124. +50 −16 lib/ruby/stdlib/webrick/httpresponse.rb
  125. +65 −0 lib/ruby/stdlib/webrick/https.rb
  126. +2 −2 lib/ruby/stdlib/webrick/httpserver.rb
  127. +0 −2 lib/ruby/stdlib/webrick/httpservlet/abstract.rb
  128. +2 −2 lib/ruby/stdlib/webrick/httpservlet/cgi_runner.rb
  129. +1 −1 lib/ruby/stdlib/webrick/httpservlet/erbhandler.rb
  130. +2 −3 lib/ruby/stdlib/webrick/httpservlet/filehandler.rb
  131. +0 −4 lib/ruby/stdlib/webrick/httpstatus.rb
  132. +3 −0 lib/ruby/stdlib/webrick/httputils.rb
  133. +3 −3 lib/ruby/stdlib/webrick/log.rb
  134. +32 −15 lib/ruby/stdlib/webrick/server.rb
  135. +18 −5 lib/ruby/stdlib/webrick/ssl.rb
  136. +1 −2 lib/ruby/stdlib/webrick/utils.rb
  137. +1 −1 lib/ruby/stdlib/webrick/version.rb
  138. +29 −0 lib/ruby/stdlib/webrick/webrick.gemspec
  139. +9 −7 lib/ruby/stdlib/win32/registry.rb
  140. +15 −0 lib/ruby/stdlib/win32/resolv.rb
  141. +1 −1 lib/ruby/stdlib/win32/resolv9x.rb
  142. +1 −1 lib/ruby/stdlib/win32/sspi.rb
  143. +3 −3 lib/ruby/stdlib/yaml.rb
  144. +0 −75 lib/ruby/stdlib/yaml/store.rb
  145. +1 −1 tool/sync_ruby
  146. +0 −3 tool/{globals_2_4_1.rb → sync_ruby_files.rb}
62 changes: 29 additions & 33 deletions lib/ruby/stdlib/English.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
# frozen_string_literal: false
#
# Modified for JRuby
# In JRuby, we define these aliases by default, so this file
# does nothing.
# frozen_string_literal: true
#
# Include the English library file in a Ruby script, and you can
# reference the global variables such as \VAR{\$\_} using less
@@ -53,67 +49,69 @@
#
module English end if false

=begin Modified for JRuby: we define these aliases by default

# The exception object passed to +raise+.
#alias $ERROR_INFO $!
alias $ERROR_INFO $!

# The stack backtrace generated by the last
# exception. <tt>See Kernel.caller</tt> for details. Thread local.
#alias $ERROR_POSITION $@
alias $ERROR_POSITION $@

# The default separator pattern used by <tt>String.split</tt>. May be
# set from the command line using the <tt>-F</tt> flag.
#alias $FS $;
alias $FS $;

# The default separator pattern used by <tt>String.split</tt>. May be
# set from the command line using the <tt>-F</tt> flag.
#alias $FIELD_SEPARATOR $;
alias $FIELD_SEPARATOR $;

# The separator string output between the parameters to methods such
# as <tt>Kernel.print</tt> and <tt>Array.join</tt>. Defaults to +nil+,
# which adds no text.
#alias $OFS $,
alias $OFS $,

# The separator string output between the parameters to methods such
# as <tt>Kernel.print</tt> and <tt>Array.join</tt>. Defaults to +nil+,
# which adds no text.
#alias $OUTPUT_FIELD_SEPARATOR $,
alias $OUTPUT_FIELD_SEPARATOR $,

# The input record separator (newline by default). This is the value
# that routines such as <tt>Kernel.gets</tt> use to determine record
# boundaries. If set to +nil+, +gets+ will read the entire file.
#alias $RS $/
alias $RS $/

# The input record separator (newline by default). This is the value
# that routines such as <tt>Kernel.gets</tt> use to determine record
# boundaries. If set to +nil+, +gets+ will read the entire file.
#alias $INPUT_RECORD_SEPARATOR $/
alias $INPUT_RECORD_SEPARATOR $/

# The string appended to the output of every call to methods such as
# <tt>Kernel.print</tt> and <tt>IO.write</tt>. The default value is
# +nil+.
#alias $ORS $\
alias $ORS $\

# The string appended to the output of every call to methods such as
# <tt>Kernel.print</tt> and <tt>IO.write</tt>. The default value is
# +nil+.
#alias $OUTPUT_RECORD_SEPARATOR $\
alias $OUTPUT_RECORD_SEPARATOR $\

# The number of the last line read from the current input file.
#alias $INPUT_LINE_NUMBER $.
alias $INPUT_LINE_NUMBER $.

# The number of the last line read from the current input file.
#alias $NR $.
alias $NR $.

# The last line read by <tt>Kernel.gets</tt> or
# <tt>Kernel.readline</tt>. Many string-related functions in the
# +Kernel+ module operate on <tt>$_</tt> by default. The variable is
# local to the current scope. Thread local.
#alias $LAST_READ_LINE $_
alias $LAST_READ_LINE $_

# The destination of output for <tt>Kernel.print</tt>
# and <tt>Kernel.printf</tt>. The default value is
# <tt>$stdout</tt>.
#alias $DEFAULT_OUTPUT $>
alias $DEFAULT_OUTPUT $>

# An object that provides access to the concatenation
# of the contents of all the files
@@ -138,54 +136,52 @@ module English end if false
# returns a +File+ object for the file currently
# being read. This may change as <tt>$<</tt> reads
# through the files on the command line. Read only.
#alias $DEFAULT_INPUT $<
alias $DEFAULT_INPUT $<

# The process number of the program being executed. Read only.
#alias $PID $$
alias $PID $$

# The process number of the program being executed. Read only.
#alias $PROCESS_ID $$
alias $PROCESS_ID $$

# The exit status of the last child process to terminate. Read
# only. Thread local.
#alias $CHILD_STATUS $?
alias $CHILD_STATUS $?

# A +MatchData+ object that encapsulates the results of a successful
# pattern match. The variables <tt>$&</tt>, <tt>$`</tt>, <tt>$'</tt>,
# and <tt>$1</tt> to <tt>$9</tt> are all derived from
# <tt>$~</tt>. Assigning to <tt>$~</tt> changes the values of these
# derived variables. This variable is local to the current
# scope.
#alias $LAST_MATCH_INFO $~
alias $LAST_MATCH_INFO $~

# If set to any value apart from +nil+ or +false+, all pattern matches
# will be case insensitive, string comparisons will ignore case, and
# string hash values will be case insensitive. Deprecated
#alias $IGNORECASE $=
# This variable is no longer effective. Deprecated.
alias $IGNORECASE $=

# An array of strings containing the command-line
# options from the invocation of the program. Options
# used by the Ruby interpreter will have been
# removed. Read only. Also known simply as +ARGV+.
#alias $ARGV $*
alias $ARGV $*

# The string matched by the last successful pattern
# match. This variable is local to the current
# scope. Read only.
#alias $MATCH $&
alias $MATCH $&

# The string preceding the match in the last
# successful pattern match. This variable is local to
# the current scope. Read only.
#alias $PREMATCH $`
alias $PREMATCH $`

# The string following the match in the last
# successful pattern match. This variable is local to
# the current scope. Read only.
#alias $POSTMATCH $'
alias $POSTMATCH $'

# The contents of the highest-numbered group matched in the last
# successful pattern match. Thus, in <tt>"cat" =~ /(c|a)(t|z)/</tt>,
# <tt>$+</tt> will be set to "t". This variable is local to the
# current scope. Read only.
#alias $LAST_PAREN_MATCH $+
alias $LAST_PAREN_MATCH $+
2 changes: 1 addition & 1 deletion lib/ruby/stdlib/abbrev.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# frozen_string_literal: false
# frozen_string_literal: true
#--
# Copyright (c) 2001,2003 Akinori MUSHA <knu@iDaemons.org>
#
6 changes: 3 additions & 3 deletions lib/ruby/stdlib/base64.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# frozen_string_literal: false
# frozen_string_literal: true
#
# = base64.rb: methods for base64-encoding and -decoding strings
#
@@ -56,7 +56,7 @@ def encode64(bin)
# This is line three
# And so on...
def decode64(str)
str.unpack("m").first
str.unpack1("m")
end

# Returns the Base64-encoded version of +bin+.
@@ -71,7 +71,7 @@ def strict_encode64(bin)
# ArgumentError is raised if +str+ is incorrectly padded or contains
# non-alphabet characters. Note that CR or LF are also rejected.
def strict_decode64(str)
str.unpack("m0").first
str.unpack1("m0")
end

# Returns the Base64-encoded version of +bin+.
2 changes: 1 addition & 1 deletion lib/ruby/stdlib/benchmark.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# frozen_string_literal: false
# frozen_string_literal: true
#--
# benchmark.rb - a performance benchmarking library
#
4 changes: 2 additions & 2 deletions lib/ruby/stdlib/bigdecimal/math.rb
Original file line number Diff line number Diff line change
@@ -38,7 +38,7 @@ module BigMath
# Computes the square root of +decimal+ to the specified number of digits of
# precision, +numeric+.
#
# BigMath.sqrt(BigDecimal.new('2'), 16).to_s
# BigMath.sqrt(BigDecimal('2'), 16).to_s
# #=> "0.1414213562373095048801688724e1"
#
def sqrt(x, prec)
@@ -141,7 +141,7 @@ def cos(x, prec)
#
# If +decimal+ is NaN, returns NaN.
#
# BigMath.atan(BigDecimal.new('-1'), 16).to_s
# BigMath.atan(BigDecimal('-1'), 16).to_s
# #=> "-0.785398163397448309615660845819878471907514682065e0"
#
def atan(x, prec)
108 changes: 57 additions & 51 deletions lib/ruby/stdlib/bigdecimal/util.rb
Original file line number Diff line number Diff line change
@@ -1,85 +1,91 @@
# frozen_string_literal: false
# BigDecimal extends the native Integer class to provide the #to_d method.
#
# When you require the BigDecimal library in your application, this method will
# be available on Integer objects.
#--
# bigdecimal/util extends various native classes to provide the #to_d method,
# and provides BigDecimal#to_d and BigDecimal#to_digits.
#++


class Integer < Numeric
# call-seq:
# int.to_d -> bigdecimal
#
# Convert +int+ to a BigDecimal and return it.
# Returns the value of +int+ as a BigDecimal.
#
# require 'bigdecimal'
# require 'bigdecimal/util'
#
# 42.to_d
# # => 0.42e2
# 42.to_d # => 0.42e2
#
# See also BigDecimal::new.
#
def to_d
BigDecimal(self)
end
end

# BigDecimal extends the native Float class to provide the #to_d method.
#
# When you require BigDecimal in your application, this method will be
# available on Float objects.

class Float < Numeric
# call-seq:
# flt.to_d -> bigdecimal
# float.to_d -> bigdecimal
# float.to_d(precision) -> bigdecimal
#
# Convert +flt+ to a BigDecimal and return it.
# Returns the value of +float+ as a BigDecimal.
# The +precision+ parameter is used to determine the number of
# significant digits for the result (the default is Float::DIG).
#
# require 'bigdecimal'
# require 'bigdecimal/util'
#
# 0.5.to_d
# # => 0.5e0
# 0.5.to_d # => 0.5e0
# 1.234.to_d(2) # => 0.12e1
#
# See also BigDecimal::new.
#
def to_d(precision=nil)
BigDecimal(self, precision || Float::DIG)
end
end

# BigDecimal extends the native String class to provide the #to_d method.
#
# When you require BigDecimal in your application, this method will be
# available on String objects.

class String
# call-seq:
# string.to_d -> bigdecimal
# str.to_d -> bigdecimal
#
# Convert +string+ to a BigDecimal and return it.
# Returns the result of interpreting leading characters in +str+
# as a BigDecimal.
#
# require 'bigdecimal'
# require 'bigdecimal/util'
#
# "0.5".to_d
# # => 0.5e0
# "0.5".to_d # => 0.5e0
# "123.45e1".to_d # => 0.12345e4
# "45.67 degrees".to_d # => 0.4567e2
#
# See also BigDecimal::new.
#
def to_d
BigDecimal(self)
begin
BigDecimal(self)
rescue ArgumentError
BigDecimal(0)
end
end
end

# BigDecimal extends the native Numeric class to provide the #to_digits and
# #to_d methods.
#
# When you require BigDecimal in your application, this method will be
# available on BigDecimal objects.

class BigDecimal < Numeric
# call-seq:
# a.to_digits -> string
#
# Converts a BigDecimal to a String of the form "nnnnnn.mmm".
# This method is deprecated; use BigDecimal#to_s("F") instead.
#
# require 'bigdecimal'
# require 'bigdecimal/util'
#
# d = BigDecimal.new("3.14")
# d.to_digits
# # => "3.14"
# d = BigDecimal("3.14")
# d.to_digits # => "3.14"
#
def to_digits
if self.nan? || self.infinite? || self.zero?
self.to_s
@@ -94,35 +100,35 @@ def to_digits
# a.to_d -> bigdecimal
#
# Returns self.
#
# require 'bigdecimal/util'
#
# d = BigDecimal("3.14")
# d.to_d # => 0.314e1
#
def to_d
self
end
end

# BigDecimal extends the native Rational class to provide the #to_d method.
#
# When you require BigDecimal in your application, this method will be
# available on Rational objects.

class Rational < Numeric
# call-seq:
# r.to_d(precision) -> bigdecimal
# rat.to_d(precision) -> bigdecimal
#
# Converts a Rational to a BigDecimal.
# Returns the value as a BigDecimal.
#
# The required +precision+ parameter is used to determine the amount of
# significant digits for the result. See BigDecimal#div for more information,
# as it is used along with the #denominator and the +precision+ for
# parameters.
# The required +precision+ parameter is used to determine the number of
# significant digits for the result.
#
# require 'bigdecimal'
# require 'bigdecimal/util'
#
# Rational(22, 7).to_d(3) # => 0.314e1
#
# See also BigDecimal::new.
#
# r = (22/7.0).to_r
# # => (7077085128725065/2251799813685248)
# r.to_d(3)
# # => 0.314e1
def to_d(precision)
if precision <= 0
raise ArgumentError, "negative precision"
end
num = self.numerator
BigDecimal(num).div(self.denominator, precision)
BigDecimal(self, precision)
end
end
2 changes: 1 addition & 1 deletion lib/ruby/stdlib/cgi.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# frozen_string_literal: false
# frozen_string_literal: true
#
# cgi.rb - cgi support library
#
Loading