Skip to content

Commit 17b6913

Browse files
2025.1 release code drop
Release 2025.1.0
1 parent a97115e commit 17b6913

File tree

6 files changed

+55
-25
lines changed

6 files changed

+55
-25
lines changed

RELNOTES.txt

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Release Notes for
2-
P4Ruby, Perforce's script API for Ruby
2+
P4Ruby, P4 API for Ruby
33

4-
Version 2024.2
4+
Version 2025.1
55

66
Introduction
77

@@ -16,22 +16,24 @@ Introduction
1616
release up to the bug fix change level.
1717

1818
Precompiled versions of P4Ruby are built against a corresponding version
19-
of the Perforce C++ API, e.g., P4Ruby 2024.2 will be compiled using a
20-
2024.2 version of the P4API. You can always install P4Ruby using a
21-
source-only variation, selecting a specific version of the P4API.
19+
of the P4 C/C++ API, e.g., P4Ruby 2025.1 will be compiled using a
20+
2025.1 version of the P4 C/C++ API. You can always install P4Ruby using a
21+
source-only variation, selecting a specific version of the P4 C/C++ API.
2222

2323
To determine the version of your P4Ruby, and which version of the
24-
P4API it has been built with, issue the following command:
24+
P4 C/C++ API it has been built with, issue the following command:
2525
ruby -rP4 -e "puts P4.identify"
2626

27-
2827
--------------------------------------------------------------------------
2928

30-
Important End-of-Life Notice
29+
Important Product Rebrand Notice
3130

32-
This release of P4Ruby would be the last to support and test against
33-
Ruby 3.1 which is in EOL status. This is part of our commitment to
34-
focus on supported technology platforms.
31+
Helix Core is now P4
32+
Perforce has a new look and logo that reflects our place in DevOps
33+
workflows. As part of these changes, Helix Core is now P4. Name updates
34+
and new icons to align with the P4 branding will be rolled out soon.
35+
To learn more, see:
36+
https://www.perforce.com/blog/vcs/introducing-the-p4-platform
3537

3638
--------------------------------------------------------------------------
3739

@@ -73,36 +75,35 @@ Compatibility Statements
7375

7476
Server Compatibility
7577

76-
This release of P4Ruby supports the 2024.2 Perforce Server.
78+
This release of P4Ruby supports the 2025.1 P4 Server.
7779
Older releases might work but are not supported.
7880

7981
API Compatibility
8082

81-
This release of P4Ruby supports the 2024.2 Perforce API
82-
(2024.2/2675662). Older releases might work but are not supported.
83+
This release of P4Ruby supports the 2025.1 P4 C/C++ API
84+
(2025.1/2761706). Older releases might work but are not supported.
8385

8486
Ruby Compatibility
8587

86-
This release of P4Ruby is supported on Ruby versions 3.1, 3.2, 3.3
88+
This release of P4Ruby is supported on Ruby versions 3.2, 3.3
8789
and 3.4
8890

8991
For detailed compatibility, please check the following table:
9092

9193
Ruby Release | P4Ruby Release
9294
===================================
93-
3.1 | 2022.1 or later
9495
3.2 | 2023.1 or later
9596
3.3 | 2024.2 or later
9697
3.4 | 2024.2.1 or later
9798

9899
OpenSSL Compatibility
99100

100101
To build P4Ruby with encrypted communication support, you must use the
101-
version of OpenSSL that Perforce C/C++ API has been built against.
102+
version of OpenSSL that P4 C/C++ API has been built against.
102103

103-
Beginning with the 2017.1 release of the Helix C/C++ API, the dependency
104+
Beginning with the 2017.1 release of the P4 C/C++ API, the dependency
104105
on OpenSSL is now enforced and the SSL stub library has been removed.
105-
Executables linked against the P4API libraries must also be linked against
106+
Executables linked against the P4 C/C++ API libraries must also be linked against
106107
real OpenSSL libraries: The latest 3.0.x or 1.1.1 patch is recommended
107108

108109
Platform Compatibility
@@ -126,17 +127,17 @@ Compatibility Statements
126127

127128
To build P4Ruby from source, you must use a version of Ruby that
128129
has been compiled with the same compiler used to build the
129-
Perforce C++ API: for most platforms, use gcc/g++.
130+
P4 C/C++ API: for most platforms, use gcc/g++.
130131

131132
Attempting to use a different compiler or a different version
132133
of the compiler causes linker errors due to differences in name
133134
handling between compilers.
134135

135136
Known Limitations
136137

137-
The Perforce client-server protocol is not designed to support
138+
The P4 client-server protocol is not designed to support
138139
multiple concurrent queries over the same connection. For this
139-
reason, multi-threaded applications using the C++ API or the
140+
reason, multi-threaded applications using the P4 C/C++ API or the
140141
script APIs (P4Perl, P4Ruby, etc.) should ensure that a
141142
separate connection is used for each thread or that only one
142143
thread may use a shared connection at a time.
@@ -146,12 +147,27 @@ Compatibility Statements
146147
Key to symbols used in change notes below.
147148

148149
* -- requires new P4Ruby
149-
** -- requires P4Ruby built with new P4API
150+
** -- requires P4Ruby built with new P4 C/C++ API
150151
*** -- requires new p4d server program
151152

152153
--------------------------------------------------------------------------
153154
--------------------------------------------------------------------------
154155

156+
New functionality in 2025.1 (2025.1/2767474) (2025/05/21)
157+
158+
#2757770 (Job #125786) * ** ***
159+
This release of P4Ruby supports P4 C/C++ API 2025.1 (2025.1/2761706)
160+
161+
Bugs fixed in 2025.1
162+
163+
#2753706 (Job #125659) *
164+
Override the "HandleError" method in "clientuserruby", to process
165+
error data after a failed command. This change ensure errors like
166+
"Can't clobber writable file" are captured and processed as P4Message.
167+
168+
--------------------------------------------------------------------------
169+
--------------------------------------------------------------------------
170+
155171
New functionality in 2024.2 Patch 1 (2024.2/2736761) (2025/03/19)
156172

157173
#2733739 #2736249 (Job #124477) *

ext/P4/clientuserruby.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,18 @@ void ClientUserRuby::Message(Error *e) {
251251
ProcessMessage(e);
252252
}
253253

254+
void ClientUserRuby::HandleError(Error *e) {
255+
if (P4RDB_CALLS) fprintf(stderr, "[P4] Message()\n");
256+
257+
if (P4RDB_DATA) {
258+
StrBuf t;
259+
e->Fmt(t, EF_PLAIN);
260+
fprintf(stderr, "... [%s] %s\n", e->FmtSeverity(), t.Text());
261+
}
262+
263+
ProcessMessage(e);
264+
}
265+
254266
void ClientUserRuby::OutputBinary(const char *data, int length) {
255267
if (P4RDB_CALLS) fprintf(stderr, "[P4] OutputBinary()\n");
256268
if (P4RDB_DATA) {

ext/P4/clientuserruby.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class ClientUserRuby: public ClientUser, public ClientSSO, public KeepAlive {
4949
// Client User methods overridden here
5050
void OutputText(const char *data, int length);
5151
void Message(Error *e);
52+
void HandleError(Error *e);
5253
void OutputStat(StrDict *values);
5354
void OutputBinary(const char *data, int length);
5455
void InputData(StrBuf *strbuf, Error *e);

ext/P4/specmgr.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ struct defaultspec {
131131
"MaxOpenFiles;code:413;type:word;len:12;;"
132132
"MaxMemory;code:NNN;type:word;len:12;;"
133133
"Timeout;code:406;type:word;len:12;;"
134+
"IdleTimeout;code:NNN;type:word;len:12;;"
134135
"PasswordTimeout;code:409;type:word;len:12;;"
135136
"LdapConfig;code:410;type:line;len:128;;"
136137
"LdapSearchQuery;code:411;type:line;len:128;;"

lib/P4/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
class P4
2-
Version = VERSION = '2024.2.2677567'
2+
Version = VERSION = '2025.1.2756918'
33
end

test/05_resolve_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ def test_resolve
206206

207207
assert_equal("(text+w)", md.yours_action, "Unexpected yours_action: #{md.yours_action}")
208208
assert_equal("(text+x)", md.their_action, "Unexpected their_action: #{md.their_action}")
209-
assert_equal("(text+wx)", md.merge_action, "Unexpected merge_action: #{md.merge_action}")
209+
assert_equal("(text+Dwx)", md.merge_action, "Unexpected merge_action: #{md.merge_action}")
210210
assert_equal("Filetype resolve", md.action_type, "Unexpected type: #{md.action_type}")
211211
assert_equal("am", md.merge_hint, "Unexpected merge_hint: #{md.merge_hint}")
212212
md.merge_hint

0 commit comments

Comments
 (0)